你的位置:首页 > ASP.net教程

[ASP.net教程]WCF入门教程1——WCF简要介绍


什么是WCF

Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。

整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有Http和Ftp的相关技术。

是Windows平台上开发分布式应用最佳的实践方式。

 

WCF体系架构简介

契约与说明

契约定义消息系统的各个方面。

数据契约:服务中的参数;

消息契约:使用SOAP协议特定的消息部分;

服务契约:服务中的方法;

策略与绑定:策略设置安全或其他条件,绑定指定传输方式与编码。



服务运行时

服务运行期间的行为控制

限制行为:控制处理的消息数;

错误行为:出现内部错误时所处理的操作;

元数据行为:是否向外提供元数据及元数据的提供方式;

实例行为:可运行的服务实例数目;

事务行为:处理事务;

调度行为:控制WCF处理消息的方式;



消息传递

消息传递层:说明数据的交换格式和传输模式。

消息传递层由通道(信道)组成,通道是对消息进行处理的组件,负责以一致的方式对消息进行整理和传送。通道用于传输层、协议层、及消息获取。各层次的通道组成了信道栈。

通道对消息和消息头进行操作,服务运行时对消息正文进行操作。

两种类型:传输通道 与 协议通道。

传输通道:读取和写入来自网络的消息,传输通道通过编码器将消息转换为网络传输使用的字节流,以及将字节流转换为消息。传输通道示例如:HTTP通道、命名管道、TCP、MSMQ等;

协议通道:通过读取或写入消息头的方式来实现消息协议,协议通道示例如:WS-Security,WS-Reliability。



承载和激活

服务宿主: 负责WCF服务的生命周期和上下文的操作系统进程,负责启动和停止WCF服务,并提供控制服务的基本管理功能。

两种类型:传输通道 与 协议通道。

传输通道:读取和写入来自网络的消息,传输通道通过编码器将消息转换为网络传输使用的字节流,以及将字节流转换为消息。传输通道示例如:HTTP通道、命名管道、TCP、MSMQ等;

协议通道:通过读取或写入消息头的方式来实现消息协议,协议通道示例如:WS-Security,WS-Reliability。

承载和激活

WCF基础概念介绍


契约(Contract)

WCF 的基本概念是以合约(Contract)来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现。合约分成了四种:

  数据合约 (Data Contract),订定双方沟通时的数据格式。服务合约 (Service Contract),订定服务的定义。操作合约 (Operation Contract),订定服务提供的方法。消息合约 (MessageContract),订定在通信期间改写消息内容的规范。一个 WCF中的合约,就如同下列代码所示:

[csharp] view plain copy 在CODE上查看代码片派生到我的代码片

  1. using System;  
  2. using System.ServiceModel;  
  3. namespace Microsoft.ServiceModel.Samples{  
  4.   
  5. [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]// 服务合约  
  6. public interface ICalculator  
  7. {  
  8. [OperationContract] // 操作合约  
  9. double Add(double n1, double n2);  
  10.   
  11. [OperationContract] // 操作合约  
  12. double Subtract(double n1, double n2);  
  13.   
  14. [OperationContract] // 操作合约  
  15. double Multiply(double n1, double n2);  
  16.   
  17. [OperationContract] // 操作合约  
  18. double Divide(double n1, double n2);  
  19. }  
  20. }  

绑定 (Binding)

  由于 WCF 支持了 HTTP,TCP,Named Pipe,MSMQ,Peer-To-Peer TCP等协议,而 HTTP又分为基本 HTTP 支持 (BasicHttpBinding)以及 WS-HTTP支持 (WsHttpBinding),而 TCP亦支持 NetTcpBinding,NetPeerTcpBinding等通信方式,因此,双方必须要统一通信的协议,并且也要在编码以及格式上要有所一致。

  一个设置通信协议绑定的示例如下:

[html] view plain copy 在CODE上查看代码片派生到我的代码片

  1. <?version="1.0" encoding="utf-8" ?>  
  2. <configuration>  
  3. <system.serviceModel>  
  4. <!-- 设定服务系结的资讯 -->  
  5. <services>  
  6. <service name=" CalculatorService" >  
  7. <endpoint address="" binding="wsHttpBinding"bindingConfiguration="Binding1" contract="ICalculator"/>  
  8. </service>  
  9. </services>  
  10. <!-- 设定通讯协定系结的资讯 -->  
  11. <bindings>  
  12. <wsHttpBinding>  
  13. <binding name="Binding1">  
  14. </binding>  
  15. </wsHttpBinding>  
  16. </bindings>  
  17. </system.serviceModel>  
  18. </configuration>  

  虽然 WCF 也可以使用 SOAP做通信格式,但它和以往的 ASP.NET不同,因此有部分技术文章中,会将 ASP.NET 的 称为 ASMX Service。

WCF 的服务可以挂载于 Console Application,WindowsApplication,IIS (ASP.NET) Application,Windows Service以及 Windows Activation Services中,但大多都会挂在 Windows Service。

终结点

–终结点是用来发送或接收消息(或执行这两种操作)的构造。终结点包括一个定义消息可以发送到的目的地的位置(地址)结点,包括一个定义消息可以发送到的目的地的位置(地址)、一个描述消息应如何发送的通信机制规范(绑定)以及对于可以在该位置发送或接收(或两者皆可)的一组消息的定义(服务协定)—该定义还描述了可以发送何种消息。

元数据

所谓的“元数据”就是描述数据的数据,即描述当前服务有哪些服务契约、方法契约和数据契约以及终结点的信息。而“元数据终结点”就是向外界暴露元数据的终结点。当客户端添加WCF服务引用的时候,会首先通过元数据取得服务器端的契约信息、终结点信息,然后根据这些信息在客户端创建了代理类,我们在客户端调用WCF服务的过程实际上就是通过代理类调用WCF服务的过程。

宿主(Host):一种应用程序域和进程,服务将在该环境中运行。

WCF和Webservice的区别

1.WebService严格来说是行业标准,不是技术,使用扩展标记语言来表示数据(这个是夸语言和平台的关键)。微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。

WSDL来实现服务接口相关的描述。此外Webservices可以注册到UDDI中心.供其客户查找使用。后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。

2.WCF其实一定程度上就是ASP.NET WebService,因为它支持Web Service的行业标准和核心协议,因此ASP.NET WebService和WSE能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持格式化,而且提供了自己的格式化器)。