WCF技术总结之一 前篇
学习WCF 有段时间了, 总结下WCF 技术中有关的重要概念,WCF 技术有很多关键的概念:如终结点(EndPoint)、契约(Contract)、信道(Channel)、绑定(Binding)、行为 (Behavior)、序列化与编码、托管(Hosting)等。后续文章会做个详细的陈述。
先概括性了解他们的内容:
终结点(EndPoint):WCF 的客户端与服务器端之间的通信是通过一对 EndPoint 进行的;即客户端通过EndPoint发送消息给服务器端,服务器端通过EndPoint接受消息并通过EndPoint发送消息给客户端。因此客户端、服务器端两端都必须有一个 EndPoint ,而且这两个EndPoint 有着一致“通信协议”因为只有这样两个EndPoint 才能进行通信,才能了解对方消息的含义,并做出回应。EndPoint 由 地址(Address)、绑定(Binding)、契约(Contract)三部分组成,地址指的是服务的地址、通过这个地址可以找到这个服务;绑定指明了这个服务支持什么协议(http等)、采用什么编码方式(text等);契约表示了这个服务能提供什么样的功能。
契约(Contract):一个WCF 服务表示一个完整的功能,由一组动作(一个或者多个动作)组成;契约就是描述这些动作的,就像说明书,说明这个服务能做什么;客户端应该怎么调用:传递什么参数、返回什么结果。契约分服务契约(ServerContract)、操作契约(OperationContract)、数据契约(DataContract)、消息契约(MessageContract)、错误契约(FaultContract)。
信道(Channel):信道就是消息传递的通道。信道分传输层信道、协议层信道以及消息截获的信道;所有各种信道分层次组合成信道栈,信道栈用来处理消息。最底层的是传输信道:传输信道负责通过某种传输协议来输送消息,如:HTTP、TCP、MSMQ、P2P、命名管道等;在传输信道上面的协议信道:提供各种 安全、事务、消息可靠性等。信道栈中的各个信道依次对消息进行处理(如:事务、消息可靠性;编码等)。
绑定(Binding):客户端、服务器端开始通信前需要先初始化一个彼此兼容的信道栈,绑定就是设置好了(内置)的信道栈。WCF提供了多种绑定(basicHttpBinding、wsHttpBinding、netTcpBinding、netNamedPipeBinding、netMsmqBinding等)、也支持自定义绑定。每种绑定都规定了对消息进行处理方式;像basicHttpBinding、netMsmqBinding 就不支持事务、消息可靠性等,那么这采用了这样的绑定方式的服务就不进行相关验证。
行为 (Behavior):行为指的是那些影响运行时操作的类。如何影响运行时:指示如何创建 实例(利用现有的实例还是重新创建实例)、是否启用事务、是否启用消息可靠性、如何处理并发、验证与授权等等这些都是行为在起作用。行为分契约行为、服务行为、操作行为、终结点行为。契约行为包括 DeliveryRequirement ,服务行为包括实例并发模式、实例会话模式、事务隔离级别、元素据发布、调试、审核、遏制控制等,操作行为包括事务、序列化等。终结点行为包括回调、回调调试等。
序列化与编码:消息被传输前、消息首先被序列化成某种格式如 :text, binary,mtom,Json等格式 ;WCF提供了DataContractSerializer、XmlSerializer、DataContractJsonSerializer等序列化器。
托管(Hosting):WCF服务不能独立运行,必须承载于CLR中。(WCF) 服务能够被托管于任何支持CLR的 Windows 进程。可托管WCF服务的有:托管应用程序、托管Windows 服务、IIS、WAS(Windows 激活服务)。