WCF深入浅出入门教程(一)
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:admin 阅读 2253
1、什么是WCF什么是WCF?WCF的全称是:WindowsCommnicationFoundation。WCF,是微软对一系列产业标准定义的实现,是面向服务实现的好途径。传统的三层结构模式一般为:

1、什么是WCF

什么是WCFWCF的全称是:Windows Commnication FoundationWCF,是微软对一系列产业标准定义的实现,是面向服务实现的好途径。传统的三层结构模式一般为:数据访问层、业务逻辑层、显示层,但是这种模式下显示层与业务逻辑层的耦合较为紧密,而面向服务则使得显示层跟业务逻辑上实现松耦合。
 

1.1、地址

WCF的每个服务都需要有一个地址,而且只能有一个,WCF支持多种传输:

 

(1)     HTTP

 

(2)     TCP

 

(3)     对等网

 

(4)     内部进程通信

 

(5)     MSMQ

 

一般情况下地址包括两个方面:1) 服务位置、2) 传输的协议。如基于tcp的地址:net.tcp://localhost:8800/test.Service,在这里net.tcp就是传输的协议,而后面就是告诉服务的位置。

1.2、契约

WCF所有的服务都是公开为契约,当你使用这个服务是就必须遵循一定的契约。契约的表示就像webservice里的表示,也是通过属性标签来标识的。WCF定义了四种契约类型:

 

(1)     服务契约(Service Contract):定义客户端能够执行的服务操作。

 

(2)     数据契约(Data Contract:定义于服务交互的数据类型。

 

(3)     错误契约(Fault Contract:定义抛出的错误。

 

(4)     消息契约(Message Contract:定义直接与服务交互的消息。

 

服务契约是要广泛使用的,定义服务契约是很简单的,在服务接口上进行标识即可。

 

2、代码示例

2.1、服务端

WCF

首先我们要在接口或者类上标识为"ServiceContract",其中有两个可选的参数:"Namespace""Name",即指定命名空间跟类或者接口的名称。即使应用了ServiceContract,该类或者接口下面的成员也不是契约中的。如果想成员暴露在契约中,必须用OperationContract来暴露操作,为了方便重载,OperationContract提供了可选参数:Name来指定暴露操作的另外的名称。

 

  注意:服务契约只能定义在接口或者类上,OperationContract只能应用到方法上。建议服务契约定义在接口上面。

 

托管

 

每个WCF的服务必须托管在进程中,每个托管进程可以托管多个服务,而每个服务也可以由多个进程托管。托管有以下几种:

 

(1)     IIS托管。IIS托管可以在客户端请求时启动,不需一直启动,但它只能使用HTTP协议。

 

(2)     自托管。必须手工通过程序来控制托管的启动跟关闭。

 

(3)     WAS。只使用Vista,IIS托管一样,但并不局限于HTTP

 

 

WCF
    WCF客户端跟服务器端的交互一般是采用EndPoint来交互的,每个EndPoint是由Address(地址)Binding(绑定)Contract(契约)组成的。而服务器端是通过暴露EndPoint来交互的。在程序中首先我们定义了一个ServiceHost,同时指定了服务为我们已经定义的VinsonWCF.Service.Hello,同时跟host添加一个终节点,然后打开host,等待用户取消进程。

2.2、客户端

客户端引用WCF服务的方式有两种:


(1) VS2010中添加服务引用,输入WCF地址。


(2) 自己通过编程方式来引用。如下图

 

WCF

  在客户端中,我定义了跟WCF服务一样的接口,然后通过使用通道ChannelFactory来实现代理,指定绑定、跟EndPoint地址。现在,我们的客户端就可以调用WCF服务并返回结果了。

 

本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自中睿,本站保留追究责任的权利。

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2