WCF入门笔记(1)什么是Endpoint?

  笔者也是看书,做摘记,原文来自WCF入门这本书。开篇大段冗长定义略过,直奔主题。

WCF最重要的就是能够快捷地创建一个服务(Service)。如图1-1所示,一个WCF Service由下面三部分组成:

  • Service Class: 一个标记了[ServiceContract]Attribute的类,在其中可能包含了多个方法,除了标记了一些WCF特有的Attribute外,这个类和一般类没什么区别。
  • Host(宿主):可以是应用程序,也可以是ASP.NET程序,或是Windows Service等,它是WCF Service运行的环境。
  • Endpoints:可以是一个,也可以是一组,它是WCF实现通信的核心要素。

WCF Service由一个Endpoints集合组成,每个Endpoints就是用于通信的入口,客户端和服务端通过Endpoint交换信息。

Endpoint的构成

  Endpoint由三部分组成:Address,Binding,Contract,简称ABC。

  • Address是Endpoint的网络地址,它标记了消息发送的目的地。
  • Binding描述的是如何发送消息,例如消息发送的传输协议(如TCP,HTTP),安全(如SSL,SOAP消息安全)。
  • Contract描述的是消息所包含的内容,以及消息的组织和操作方式,例如是one-way,duplex和request/reply

  在WCF中,类ServiceEndpoint代表了一个Endpoint,在类中包含的EndpointAddress,Binding,ContractDescription类型分别对应Endpoint的Address,Binding和Contract。

  EndpointAddress类包含URI,Identity和可选的headers集合,如图1-2所示:

图1-2

Endpoint安全的唯一性识别通常是通过其URI的值,但为了避免一些特殊情况造成URI的重复,又引入了Identity附加到URI上,保证了Endpoint地址的唯一性。至于可选的AddressHeader则提供了一些附加的信息,尤其是当多个Endpoint在是哦那个同样的URI地址信息时,AddressHeader就非常必要了。

    Binding类包含Name,Namespace和BindingElement集合,如图1-3所示:

图1-3

Binding的Name以及Namespace是服务元数据(Service‘s metadata)的唯一标识。BindingElement描述的是WCF通信时binding的方式。例如,SecurityBindingElement表示Endpoint使用SOAP消息安全方式,而ReliableSessionBindingElement表示Endpoint利用可信赖消息确保消息的传送。TcpTransportBindingElement则表示Endpoint利用TCP作为通信的传输协议。每种BindingElement还有相应的属性值,进一步详细的描述WCF通信的方式。

BindingElement的顺序非常重要,BindingElement集合通常会创建一个用于通信的堆栈,起顺序语BindingElement集合中元素顺序一致。因此BindingElement集合中的binding element顺序直接影响了通信堆栈处理消息的顺序。不过这些WCF都为你排好序了,不必担心。

Contract是一组操作的集合,该操作定义了Endpoint通信的内容,每个操作都是一个简单的信息交换,例如one-way或者request/reply消息交换。

类ContractDescription用于描述WCF的Contracts以及它们的操作,它通常在定义Contract的接口或类中创建。每个Contract中包含了Name、Namespace,用于在Service的元数据中作为唯一性标识。此外Contract中还包含了ContractBehavior的集合,ContractBehavior类型可以用于修改或扩展Contract的行为,如图1-4所示:

图1-4

 

posted @ 2012-08-24 13:22  阿凡迪  阅读(2872)  评论(0编辑  收藏  举报