WCF: Windows通讯基础
WCF以SOA为基础,遵循面向服务的原则,WCF服务的功能是通过定义接口进行表达的,外部调用者和WCF服务通信只能通过接口。
SOA (service-orientedarchitecture面向服务的体系结构):设计分布式系统的一种方式,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来,通过跨越边界传递消息来让多个独立服务协同工作。
服务是指可以通过消息与之进行交互的一段代码。服务是被动的。它们等待传入消息之后才开始工作。客户端是发起者,客户端将消息发送给服务来请求工作
技术综合:
ASMX: Web servise服务
WSE:升级版的ASMX,添加了安全模块。
Remoting:分布式通信技术,缺点:不支持跨平台,优点:采用tcp传递,二进制的比文本的好。
WCF应用程序的基本构成
WCF服务程序集:这个*.dll包含向外部用户公开的类和接口。
WCF服务宿主:承载WCF服务程序集的实体。
WCF客户端:通过中间代理访问服务功能的应用程序。
WCF的ABC:WCF核心模块A(address)B(binding)C(contract)
(1)地址:服务的位置,远程调用者定位远程类型,地址可以硬编码在程序集中(System.Uri类型),或分离到*.config文件中。
构架(http/net.tcp)://<机器名>[:端口]/路径.
一个WCP服务公开一个地址,但可以配置为一个地址的集合,在.config文件中定义多个<endpoint>元素实现。
(2)绑定:指定网络协议、编码机制和传输层。
基于HTTP的绑定协议
BasicHttpBinding:维持向后兼容性。
WSHttpBinding:支持使用消息传输优化机制(MTOM)处理二进制数据编码。
WSDualHttpBinding:允许调用者和发送者使用双向消息进行通信,可以挂接到WCF发布/订阅事件模型。
WSFederationHttpBinding:安全性高。高效的对永和进行验证和授权。
基于TCP的绑定:分布式应用程序包括.NET4类库进行配置,客户端和宿主必须是.NET应用程序。
NetTcpBinding:使用TCP在客户端和WCF服务之间移动二进制数据。
NetNamePipeBinding:不能跨机器调用,在相同机器WCF应用程序之间推送数据最快。
(3)契约:从WCF服务公开的每一个方法的描述,就是接口。
WCF契约:服务契约、数据契约、消息契约和错误契约。
WCF契约的接口称为服务契约,服务契约抽象了服务提供的所有操作,实现了这些接口的类称为服务类型。
WCF服务契约最常定义在System.ServiceModel命名空间中,如果服务契约的成员只包含简单数据类型,使用[OperationContract]和[ServiceContract],使接口成为WCF所提供的服务使用[ServiceContract],使用的方法用[OperationContract]。
如果成员公开自定义类型,需要使用System.Runtime.Serialization.dll程序集中的System.Runtime.Serialization命名空间中,使用[DataMember]和[DataContract].