WCF (Windows Communication Foundation) 微软提供的为整合多种编程平台,配置和部署网络分布式运行环境的一种服务。
WCF 架构:WCF 是基于消息通信的,WCF Client 和 WCF Service 互相发送消息,但Client 和 Service 的定义并不是绝对的。
一般来说发送请求的一方被定义为Client,而响应请求的一方被定义为Service,所以在系统中程序即可能是Service也可能是Client,这要依情况而定。
WCF 应用场景
酒店预定平台
下面是WCF 在一个酒店预定管理系统中的应用其中酒店预定应用程序会和三种实体进行通信,酒店预定系统的客户端,已有的J2EE的 App Server 和 来自互联网的预定接口。如果应用传统的架构维护这样的酒店预定系统会是一件非常头痛的事情。但WCF通过平台整合对业务应用层屏蔽了底层异构系统交互的技术细节,使在开发时更注重面向业务,面向服务。
WCF 是基于 SOA架构的(Service-Oriented architecture 主要是用于基于服务的分布式系统的)。
通过SOA的设计原则,可以帮助我们更好的理解WCF。
- 清晰的边界
- 独立的服务
- 基于模式和合约的通信
- 基于策略的兼容性
WCF 的分层
基于SOA架构的WCF可以分为4层:Contracts,Service Runtime,Messaging and Hosting。
各层中的模块和主要作用:
Contracts层:主要用来描述WCF中的消息系统。分为4个模块 Service Contract,Data Contract,Message Contract,Policy and Building。
- Service Contract:可以使用VB.Net 或C#来定义服务的函数签名。
- Data Contract:可以用XML来描述 .Net的数据类型。
- Message Contract:定义了Service和Client间通信中使用的消息结构,
- Policy and Bindings:定义了Client和Service通信时需要配置的信息,例如Security 等。
Service Runtime层:定义了服务运行时的各种行为。
Messaging 层:包含了8种可以处理消息和对消息头及消息体进行操作的管道,这8种管道可以分为2大类,传输管道(负责从网络中读写消息)和协议管道(负责处理消息)。
Hosting 层:描述了WCF Service的各种载体,例如Windows Activation Service(WAS),Internet Information Service(IIS),Windows Service,.EXE,或 COM+。
在WCF应用程序中 Service 和 Client 通过EndPoint 实体进行通信,这个EndPoint是由Service端定义的。
它包括Address, Binding 和 Contract三个组成部分。
Address是Endpoint的网络地址,它标记了消息发送的目的地。
Binding描述的是如何发送消息,例如消息发送的传输协议(如TCP,HTTP),安全(如SSL,SOAP消息安全)。
Contract描述的是消息所包含的内容,以及消息的组织和操作方式。