随笔分类 - WCF
1
摘要:你还可以看我的另一篇简单的调用WCF方法ASP.NET创建WCF服务相对要比Winform或控制台要简单,如下:1.在VS2010中,打开 “文件”--“新建” --“网站” --“Asp.net网站”,创建一个新的网站项目,系统将生成如下项目文件:2. 右击项目--“添加新项”3.选择“WCF服务”,输入服务名称4.IDE将生成一些文件,如下:我们可以看到生成了IServices.cs Service.cs Service.svc 以及修改了的Web.configIServices.cs:using System;using System.Collections.Generic;using
阅读全文
摘要:为一个ASMX服务实现一个WCF客户端WCF客户端可以调用任何基于标准的服务而不用考虑目标宿主环境。在.NET Framework 1.1 上创建的ASMX网络服务是完全兼容的。由WS-I 1.1基本概况定义的标准确保它们可以被WCF调用。支持工具就像调用一个WCF服务,你可以使用添加服务引用(ASR)或者Svcutil.exe来创建代理类和配置文件来调用ASMX服务操作。在这些被创建以后,客户端通过实例化代理调用方法来与ASMX网络服务通信。同样的,你可以使用添加网络服务引用(AWR)或者wsdl.exe 来生成代理类和配置文件。然后在实例被创建以后,客户端在代理上调用方法来和服务通信。 对
阅读全文
摘要:在IIS中寄宿服务一个WCF服务可以在操作系统中运行的任何托管进程中寄宿。服务本身一般并不知道或者关心它是怎么被寄宿的,尽管它可以通过丰富的APIs来找出来。它可以寄宿到一个不被注意的随机器初始化时启动随机器关闭时关掉的Windows 服务上,或者在一个最小化到Windows系统托盘的客户端应用程序。最普通的用法,就是在IIS里托管一个WCF服务。讨论IIS非常合适作为宿主。IIS是Windows的一部分而且有一个重要的已经发布的关于管理,安全和开发应用的知识库。IIS是可扩展的,可信赖的而且是非常安全的。所以IIS有非常出色的条件来作为宿主。基于IIS的ASMX是WCF之前的最广泛适用的用来
阅读全文
摘要:完成一个WCF服务客户端WCF为客户端提供了丰富的API来使用当需要和服务通信时。通过Service.ServiceModel实现的API处理将.NET类型转换成XML然后从客户端向服务端发送消息。你可以直接用API编程,或者你可以使用工具生成一个代理类和配置文件。在这一部分,我们将首先说明如何使用代码直接调用服务,然后我们将使用工具实现这个过程。前一种方法使用较少的代码并不使用配置文件。后一种方式有更少的依赖性而且在调用时有更好的微控性。有很多种情况当每个解决方案是最好的选择时。完全使用代码写一个WCF客户端就像一个服务终结点必须定义一个WCF的ABCs在网络上暴露服务接口,一个客户端必须知
阅读全文
摘要:暴露元数据交换终结点WCF中的元数据是精确描述如何与服务通信的消息。客户端可以向一个运行的服务请求元数据来了解它们要求的终结点和消息格式。在设计时,客户端发送由WS-MetadataExchange 标准定义的消息并接收返回的WSDL。WSDL可以被客户端用来定义一个将要用来在运行时与服务通信的代理类和配置文件。图片1.4显示了这个交流过程。 默认情况下,WCF服务不暴露MEX终结点。这意味着没有人能查询到这个服务并知晓如何与它通信。不知道地址,绑定和契约,与服务通信是非常困难的,除非服务被记录到注册表中。幸运的是,WCF让暴露MEX终结点变得非常容易以至于客户端可以与服务端顺畅的通信。MEX
阅读全文
摘要:服务控制文件web.config 或是 app.config 依赖于服务是如何被寄宿的,它们必须包含一个<system.serviceModel>节点。在这个节点下,服务,绑定,行为,客户端,诊断,扩展,寄宿环境和COM+互操作都可以被特殊设置。最低限度必须有一个<services>节点用来包含终结点,也至少有一个非基础架构的<endpoint>节点在<services>节点下面。在<endpoint>节点内,ABCs会被定义在每一个终结点上。 地址属性定义客户端将要把消息发送到终结点的URI。例如,如果一个服务使用基于HTTP协议的
阅读全文
摘要:WCF为在配置文件中定义服务属性提供了丰富的支持。你仍然需要为你将要在服务中暴露的特性或者算法编码,但是终结点地址,绑定和行为可以从代码中移动到配置文件中。 通过配置文件定义终结点和行为比通过代码更具扩展性。 举例说明,假设实现一个终结点并通过HTTP来通信。在列表1.1中,这是通过调用AddServiceEndpoint以及BasicHttpBinding 完成的。现在假设你将把绑定改为使用WSHttpBinding,通过在消息层面的处理将比在传输层面的处理带来更好的安全性能。在那种情况下,你需要改代码并需要重新编译它们。通过把绑定部分从代码移到配置文件中,可以让我们不必重新编译代码就实现改
阅读全文
摘要:完成一个WCF服务,你要完成一个.NET 类然后使用System.ServiceModel 属性来修饰这个类。System.ServiceModel 命名空间与.NET 3.0 一起安装而且包含了大多数WCF实现。当代码编译时,CLR(公共语言运行库)解释这些属性,使用运行时代码取代它们。对于.NET来说属性并不是新事物; 在.NET 1.0 时它们已经存在了。WCF,就像.NET 1.0,1.1和2.0 中的ASMX,当写服务时使用属性来提高我们的生产力。 列表1.1 中显示了寄宿在控制台应用程序的WCF服务的完整代码。在这个例子中,我们做了以下工作。 定义契约。写一个.NET 类做一些有用
阅读全文
摘要:所以客户端代码可以简单的调用一个终结点。代理接口不必与服务签名保持一致,但是代理需要确保传输给服务的消息就是服务契约所描述的。app.config 文件包含了特殊绑定。实现一个WCF服务这一部分描述怎么样使用WCF实现一个简单的服务。最简单的方式,我们将使用HTTP 协议,我们将使用文本形式的XML文档。对于安全,我们假设它已经在应用程序中进行了相关处理。我们使用了同步请求-回复方式而且我们的服务只支持一个操作,就是接受输入字符串返回double 型输出。在接下来的章节中,我们会改变所有这些假定,但是目前为止,我们需要排除不必要的复杂性。仅仅是ABCs定义一个服务终结点,要记住ABCs:地址,
阅读全文
摘要:微软通信基础是关于服务的。主要是指创建,寄宿,使用以及安全性。WCF是基于标准和互通性的。可以提高开发人员的生产力。简短的说,WCF就是让每一个专业软件开发人员能够使用分布式计算服务。 在这一章,我们主要介绍一些了解WCF服务如何工作的基础理论。我们主要集中介绍最通用的特性。通过接下来的内容和例子,你将可以在本地或是网间创建并使用WCF服务。 为什么说WCF重要? 在深入讨论服务是怎么样的时候,理解为什么更重要。所以,为什么说WCF重要?很简单-因为服务是整个分布式网络的核心,而WCF是微软平台上部署和使用服务的最简单的方式。通过利用WCF,开发人员可以专注于他们的应用而不是在通信协议上。这是
阅读全文
摘要:服务有两种方案发布自己的元数据。一种是基于HTTP-GET协议提供元数据,另一种是使用专门的元数据交换终结点的方式。WCF能够为服务自动提供基于HTTP-GET的元数据,但需要显式地添加服务行为(Behavior)以支持这一功能。基于HTTP-GET协议提供元数据:如下:所有引用了定制<behavior>配置节的托管服务都支持基于HTTP-GET协议实现元数据交换。<behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabl
阅读全文
摘要:<?xml version="1.0" encoding="utf-8" ?><configuration> <system.ServiceModel> <!-- services 元素包含应用中驻留的所有service的配置要求 --> <services> <!-- 每个服务的配置 属性说明: name - 指定这个service配置是针对的那个服务,为一个实现了某些Contract的服务类的完全限定名 (名称空间.类型名),ServiceHost载入一个服务后,会到配置文件中的<
阅读全文
摘要:实例管理并发就像两个人同时去银行取钱,他们同时输入取钱数,同时确定取钱,同时完成取钱,但是银行的账户上表现却只减少了一个人的钱,这是并发。WCF并发管理能过确保服务执行在特定的线程,它提供了自动同步和手动同步两种方式,并发一号ServiceBehavior的ConcurrenyMode来负责并发方式,ConcurrenyMode.Single WCF提供自动同步,并通过关联服务的实例和同步锁禁止并...
阅读全文
摘要:我们不仅可以使用声明的方式创建事务,也可以使用显式方法创建事务,如下:显式事务WCF使用显式事务编程的方法是构造一个TransactionScope类,我们可以将它放在using()中自动销毁对象,具体方法如下:using(TransactionScope scope=new TransactionScope()){scope.Complete();//将一致性校验设为true}事务投票在显式事务...
阅读全文
摘要:WCF事务是维持系统一致性并合理实现错误恢复的最好方法,这也是WCF事务的意义,事务具有原子性、一致性、隔离性、和持久性,他的管理方式是使用类似ADO.NET的编程模型来管理。因为事务协调的问题(尤其在分布式事务上),WCF使用了一个叫“两阶段提交事务管理协议”,在第一阶段事务管理器询问参与事务的资源,了解提交修改记录时是否有所保留,在第二阶段,如果第一阶段投票要求提交事务...
阅读全文
摘要:WCF的ABC:A代表Address-where(对象在哪里)B代表Binding-how(通过什么协议取得对象)C代表Contact(契约)-what(定义的对象是什么,如何操纵)--------------------------------------------------------------------------------服务端1.创建一个空的解决方案:WCFDemo:2.创建一...
阅读全文
摘要:1、概念 WCF是基于Windows平台下开发和部署服务的软件开发包。WCF为服务提供了运行时环境(Runtime Enviroment),使得开发者能够将CLR类型公开为服务,又能够以CLR类型的方式使用服务。创建服务不一定需要WCF,但使用WCF可以使得创建服务的任务事半功倍。WCF是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及各种协议的管理。WCF...
阅读全文
摘要:本篇博文只是简单说下WCF中的契约的种类、作用以及一些简单的代码示例。在WCF中契约分为服务契约、数据契约和消息契约。下面对这几种契约进行简单的介绍。服务契约服务契约描述了暴露给外部的类型(接口或类)、服务所支持的操作、使用的消息交换模式和消息的格式。每个WCF服务必须实现至少一个服务契约。使用服务契约必须要引用命名空间System.ServiceModel 。服务契约中常用到的三个特性:Serv...
阅读全文
摘要:使用错误异常消息与特定技术有关,.NET异常同样如此,因而WCF并不支持传统的异常处理方式。如果在WCF服务中采用传统的方式处理异常,由于异常消息不能被序列化,因而客户端无法收到服务抛出的异常,例如这样的服务设计:[ServiceContract(SessionMode = SessionMode.Allowed)]public interface IDocumentsExplorerServic...
阅读全文
摘要:1) TransactionFlowAttribute:操作契约(OperationContractAttribute)的一个属性,它能够指示所属操作(Operation)的事务选项(TransactionFlowOption)。 2) TransactionFlowOption:它是TransactionFlowAttribute构造函数中的参数,是一个枚举(enum),包括三个枚举项NotAl...
阅读全文
1

浙公网安备 33010602011771号