现在的位置: 首页 > 综合 > 正文

WCF基本资料

2013年03月12日 ⁄ 综合 ⁄ 共 3178字 ⁄ 字号 评论关闭

WCF资料

1.Service Class:一个标记[ServiceContract](服务契约)Attribute(属性)的类,在其中可能包含多个方法。

除了标记一些WCF特有的Attribute(属性)外,这个类与一般类没有什么区别。

2.Host(宿主):可以是应用程序,如进程Windows Service等,它是WCFService运行的环境。

3.Endpoints(终结点):可以是一个,也可以是一组,它是WCF实现通信的核心要素。

WCFService由一个Endpoints集合组成,每一个Endpoint就是用于通信的入口,客户端和服务端通过Endpoint交换信息,如下图:

从图中我们可以看到一个Endpoint由三部分组成:Address,Binding,Contract。便于记忆,

我们往往将这三部分称为是Endpoint的ABC。

WCF的三大核心是ABC也就是

A代表Address-where(对象在哪里)
B代表Binding-how(通过什么协议取得对象)
C代表Contract(契约)-what(定义的对象是什么,如何操纵)

Address:是Endpoint的网络地址,它标记了消息发送的地址。

Binding:描述的是如何发送消息,例如消息发送的传输协议(如TCP,HTTP),安全(如SSL,SOAP消息安全)。

Contract:则描述的是消息所包含的内容,以及消息的规范和操作方式。

所以Endpoint中的ABC分别代表的含义就是:where,how,what。当WCF发送消息时,通过address知道信息发送的地址,通过binding知道信息怎么样来发送的,通过contract则知道发送的消息时什么。

SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序

合约(Contract)

WCF 的基本概念是以合约(Contract) 来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现。合约分成了四种:数据合约 (Data Contract),订定双方沟通时的数据格式。服务合约 (Service Contract),订定服务的定义。操作合约 (Operation Contract),订定服务提供的方法。消息合约 (Message Contract),订定在通信期间改写消息内容的规范。一个 WCF 中的合约,就如同下列代码所示: using System;

using System.ServiceModel;
namespace Microsoft.ServiceModel.Samples

{

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] // 服务合约 public interface ICalculator

{

[OperationContract] // 操作合约

double Add(double n1, double n2);

[OperationContract] // 操作合约

double Subtract(double n1, double n2);

[OperationContract] // 操作合约

double Multiply(double n1, double n2);

[OperationContract] // 操作合约

double Divide(double n1, double n2);

}
}

协议绑定 (Binding)

由于 WCF 支持了 HTTPTCP,Named Pipe,MSMQ,Peer-To-Peer TCP 等协议,

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

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

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<system.serviceModel>

<!-- 设定服务系结的资讯 -->

<services>

<service name=" CalculatorService" >

<endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="ICalculator" />

</service>

</services>

<!-- 设定通讯协定系结的资讯 -->

<bindings>

<wsHttpBinding>

<binding name="Binding1">

</binding>

</wsHttpBinding>

</bindings>

</system.serviceModel>

</configuration>
虽然 WCF 也可以使用 SOAP做通信格式,但它和以往的 ASP.NETXML Web Services不同,因此有部分技术文章中,会将 ASP.NET 的 XML Web Services 称为 ASMX Service。WCF 的服务可以挂载于 Console Application,Windows Application,IIS (ASP.NET) Application,Windows Service以及 Windows Activation Services中,但大多都会挂在 Windows Service。

安全性层次

WCF 实现上已经支持了传输层次安全性 (Transport-level security) 以及消息层次安全性 (Message-level security) 两种。传输层次安全性:在数据传输时期加密,例如 SSL。消息层次安全性:在数据处理时就加密,例如使用数字签名,散列或是使用密钥加密法等。

 image

WCF支持的转传输安全模式

在WCF中,一同支持5种传输安全模式,这些模式都是可配置的,如下所示列出了这些模式和其简要说明。

1.None:None模式指的是不采用任何传输安全机制。客户端不向服务端提供任何凭证,也不确保通道是安全的。None模式没有任何安全可言,通常是在绝对安全的网络孤岛内使用None模式,以提高系统效率。

2.Transport:当使用Transport(传输/运送/运输)安全模式时,WCF将依靠传输通道来实现完整性,机密性和互相验证性的功能。可以提供安全通道传输协议包括HTTP,TCP,IPC和MSMQ。也就是说,使用这些传输协议的绑定都可以使用Transport安全模式。

3.Message:Message安全模式对消息本身进行加密来保证完整性,机密性和互相验证性。和Transport安全模式不同,Message安全模式不依赖任何传输通道或者网络,所以该模式的不需要考虑客户端和服务端之间是否直接通信,该安全模式是标准模式。

4.Mixed:Mixed模式结合了Transport安全模式和Message安全模式,Mixed安全模式在实现消息完整性,机密性和服务端身份验证是采用了Transport安全模式,而在保护客户端安全凭证的安全时又采用了Message安全模式。

5.Both:Both安全模式同时使用了Transport安全模式和Message安全模式。在实际情况中很少使用Both模式,因为其过渡的安全机制使用导致了系统性能的下降。

 

image

 

 image

 

 image

抱歉!评论已关闭.