WCF简要介绍
什么是WCF
WCF全名:Windows Communication Foundation
是微软开发的一系列支持数据通信的应用程序框架。
是全新的Windows通讯开发平台。
老的Windows通讯开发平台有:WebService和.net Remoting等。
WCF是对这些技术做了统一。
WCF为.Net Framework提供了一个基础,使其能够编写代码,以在组件、应用程序、系统之间进行通信。
WCF的设计遵循的是面向服务的原则。
服务是指可以通过消息与之进行交互的一段代码。
服务是被动的。它们等待传入消息之后才开始工作。客户端是发起者,客户端将消息发送给服务来请求工作。
使用WCF,就可以实现其所有应用程序间的通信。
WCF可使用Web服务进行通信,还可以对WCF进行配置和扩展,以便与使用并非基于SOAP的消息的Web服务进行通信。
WCF是提供统一的,可用于建立安全、可靠的面向服务的应用的高效开发平台。
WCF具有如下的优势:
1、统一性
2、互操作性
3、安全与可信赖
4、兼容性
理解面向服务(SOA)
SOA是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。
SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
SOA指出当前系统应该足够灵活,从而允许在不打乱当前成功运行的体系结构和基础结构的前提下,改动已有的体系结构。
SOA原则:
1、边界清晰
2、服务自治
3、兼容性基于策略
4、共享模式(schma)和契约
WCF体系架构简介
契约与说明
契约定义消息系统的各个方面。
数据契约:服务中的参数;
消息契约:使用SOAP协议特定的消息部分;
服务契约:服务中的方法;
策略与绑定:策略设置安全或其他条件,绑定指定传输方式与编码。
服务运行时
服务运行期间的行为控制
限制行为:控制处理的消息数;
错误行为:出现内部错误时所处理的操作;
元数据行为:是否向外提供元数据及元数据的提供方式;
实例行为:可运行的服务实例数目;
事务行为:处理事务;
调度行为:控制WCF处理消息的方式;
消息传递
消息传递层:说明数据的交换格式和传输模式。
消息传递层由通道(信道)组成,通道是对消息进行处理的组件,负责以一致的方式对消息进行整理和传送。通道用于传输层、协议层、及消息获取。各层次的通道组成了信道栈。
通道对消息和消息头进行操作,服务运行时对消息正文进行操作。
两种类型:传输通道 与 协议通道。
传输通道:读取和写入来自网络的消息,传输通道通过编码器将消息转换为网络传输使用的字节流,以及将字节流转换为消息。传输通道示例如:HTTP通道、命名管道、TCP、MSMQ等;
协议通道:通过读取或写入消息头的方式来实现消息协议,协议通道示例如:WS-Security,WS-Reliability。
承载和激活
服务宿主:负责WCF服务的生命周期和上下文的操作系统进程,负责启动和停止WCF服务,并提供控制服务的基本管理功能。
WCF基础概念介绍
契约(Contract)
WCF的基本概念是以合约(Contract)来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现。合约分成了四种:
数据合约 (Data Contract),订定双方沟通时的数据格式。
服务合约 (Service Contract),订定服务的定义。
操作合约 (Operation Contract),订定服务提供的方法。
消息合约 (Message Contract),订定在通信期间改写消息内容的规范。
绑定 (Binding)
由于 WCF 支持了 HTTP,TCP,Named Pipe,MSMQ,Peer-To-Peer TCP等协议,
而 HTTP 又分为基本 HTTP 支持 (BasicHttpBinding)以及 WS-HTTP 支持 (WsHttpBinding),
而 TCP亦支持 NetTcpBinding,NetPeerTcpBinding等通信方式,
因此,双方必须要统一通信的协议,并且也要在编码以及格式上要有所一致。
WCF 的服务可以挂载于 Console Application,WindowsApplication,IIS (ASP.NET) Application,Windows Service以及 Windows Activation Services中,但大多都会挂在 Windows Service。
主要的系统内置绑定:
系统绑定支持的功能:
终结点
终结点是用来发送或 接收消息(或执行这两种操作)的构造。
终结点包括一个定义消息可以发送到的目的地的位置(地址);
一个描述消息应如何发送的通信机制规范(绑定);
以及对于可以在该位置发送或接收(或两者皆可)的一组消息的定义(服务协定)—该定义还描述了可以发送何种消息。
终结点的地址由EndpointAddress 类表示,该类包含一个表示服务地址的统一资源定位符(URI)。
元数据
所谓的“元数据”就是描述数据的数据,即描述当前服务有哪些服务契约、方法契约和数据契约以及终结点的信息。而“元数据终结点”就是向外界暴露元数据的终结点。
当客户端添加WCF服务引用的时候,会首先通过元数据取得服务器端的契约信息、终结点信息,然后根据这些信息在客户端创建了代理类,我们在客户端调用WCF服务的过程实际上就是通过代理类调用WCF服务的过程。
宿主(Host)
一种应用程序域和进程,服务将在该环境中运行。
WCF和Webservice的区别
微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。
WSDL来实现服务接口相关的描述。此外Webservices可以注册到UDDI中心.供其客户查找使用。后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。
WCF:其实一定程度上就是一个特殊的ASP.NET WebService,因为它支持Web Service的行业标准和核心协议,因此ASP.NET WebService和WSE能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持XML格式化,而且提供了自己的格式化器)。
小结
本章泛泛而谈很多概念以及术语的定义,下一篇文章,我会主要讲解WCF中的ABCB这四个要素,并提供最佳实践的思考。