标签:
一、概述
Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,
它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。WCF的最终目标是通过进程或不同的系统、通过本地网络或是
通过Internet收发客户和服务之间的消息。WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成
在Visual Studio中。WCF专门用于面向服务开发。
Note:基于SOA系统的平台无关性,基于WCF的SOA系统,并不要求所有的服务都只能使用WCF来开发,相反它可以实现多个不同技术和平台实现的服务通信。
二、WCF体系结构图:
(1) 协定Contract:定义了服务对外公开的服务方法,使用的传输协议,可访问的服务地址,消息的传输格式。 ——服务做什么?
服务契约:定义服务需要做什么事情,其中定义了哪些操作。
数据契约:定义调用服务过程中需要使用的数据对象,一般是服务输入参数和返回参数。
消息契约:定义消息发送的格式
错误契约:定义服务异常如何处理。
(2)服务运行:定义了服务在运行中的具体的行为。——服务怎么做?
(3)消息:定义了消息的传输方式,编码与解码。——服务如何交互?
(4)激活和宿主:服务必须寄宿于宿主进程,宿主控制服务的生存周期。一个宿主进程,可以包含多个应用程序域,而一个应用程序
域中可以放置多个服务宿主。宿主类型有,IIS/WAS寄宿、Windows服务进程、Winform 、控制台程序。——如何调度服务?
三、Wcf解决方案最小系统模型:
1、Wcf 服务程序
2、服务寄宿程序
3、客户端程序
四、如何构建Wcf服务程序
A:Address , 定义服务地址. Wcf服务地址通过URI来唯一标示,如:Net.Tcp:\\localhost:9092\MyWcfServices\HelloWorldService, 其中我们可以看出,
其实一个服务的地址与其采用的通讯协议有关,常见的通讯协议有Http, TCP, IPC….一个服务具有一个唯一的地址,类似于地图上的地址一样,客户端也是
通过服务地址去请求调用具体的某个服务。
B:Binding, 绑定,定义Wcf通讯的编码方式与通讯方式(传输协议),简单了说其实就是根据地址选择什么样的传输协议与编码方式的一种信道设置,就是绑定,
在Wcf框架中其实已经提供了一些常用的绑定,可以根据不同的使用场景而使用,其实就是框架中一些定义好的信道栈,里面设置好了传输协议和编码方式和传输通道。
C:Contract, 契约。Address解决了服务在那个地方的问题,而binding解决了通过什么样的方式去访问服务地址的问题,那Contract便是解决访问服务之后需要做什么事情,
或是约定的输入输出的事情了。
一个服务有一个唯一的地址,而一个服务往往不会只做单一的一件事情,可以理解为一个服务可以做同一类相关的事情,而其中具体是什么样的事情和操作,
通过终结点对外暴露。类似于电脑的内存一样,一块内存会有一个地址空间,就类似于我们的服务地址,而一块内存里面还细分很多页,用于不同的用途,类似于我们服务的
终结点,客户端调用只需要连接和操作终结点来调用服务中的某个操作。
所以 1.终结点也有地址,而服务就是一个基地址,终结点就是服务基地址的相对地址。
2.一个服务可以有多个对外的终结点。
例如:
服务地址:Net.Tcp:\\localhost:9092\MyWcfServices\HelloWorldService
终结点1地址:Net.Tcp:\\localhost:9092\MyWcfServices\HelloWorldService\SayHelloWord
终结点2地址:Net.Tcp:\\localhost:9092\MyWcfServices\HelloWorldService\SayHelloWcf
通过以上我们可以看出,终结点包含了:服务地址,绑定,服务契约。
服务必须寄宿于宿主进程,宿主控制服务的生存周期。一个宿主进程,可以包含多个应用程序域,而一个应用程序
域中可以放置多个服务宿主。宿主类型有,IIS/WAS寄宿、Windows服务进程、Winform 、控制台程序。
标签:
原文地址:http://www.cnblogs.com/georgeHeaven/p/4324702.html