WCF还是比较常用的,在这里拿出来和大家分享一下关于WCF基础知识的介绍,希望对大家有用。WCF基础功能都放在一个单独的程序集System.ServiceModel.dll中。WCF的几个最重要的技术元素包括:绑定、契约、端点。
#T#如前所述,绑定封装了通道的组成顺序与处理细节,它直接决定了WCF的通信方式,消息的编码方式,通道的协议,消息传递的可靠性以及安全等内容。通过使用绑定,我们就无需了解消息在WCF通道中的实现细节,从而简化程序员的开发。正是因为此,WCF为开发人员提供了多个内置绑定,基本上涵盖了WCF应用的大部分场景。以下是Aaron Skonnard在《WCF深度绑定》一文中列举的内置绑定:
绑定类名称 |
传输 |
消息编码 |
消息版本 |
安全模式 |
可靠消息传送 |
事务流(默认情况下禁用) |
BasicHttpBinding |
HTTP |
文本 |
SOAP 1.1 |
无 |
不支持 |
不支持 |
WSHttpBinding |
HTTP |
文本 |
SOAP 1.2 WS-Addressing 1.0 |
消息 |
禁用 |
WS-AtomicTransactions |
WSDualHttpBinding |
HTTP |
文本 |
SOAP 1.2 WS-Addressing 1.0 |
消息 |
启用 |
WS-AtomicTransactions |
WSFederationHttpBinding |
HTTP |
文本 |
SOAP 1.2 WS-Addressing 1.0 |
消息 |
禁用 |
WS-AtomicTransactions |
NetTcpBinding |
TCP |
二进制 |
SOAP 1.2 |
传输 |
禁用 |
OleTransactions |
NetPeerTcpBinding |
P2P |
二进制 |
SOAP 1.2 |
传输 |
不支持 |
不支持 |
NetNamedPipesBinding |
命名管道 |
二进制 |
SOAP 1.2 |
传输 |
不支持 |
OleTransactions |
NetMsmqBinding |
MSMQ |
二进制 |
SOAP 1.2 |
消息 |
不支持 |
不支持 |
MsmqIntegrationBinding |
MSMQ |
不支持(使用 WCF 之前的序列化格式) |
不支持 |
传输 |
不支持 |
不支持 |
CustomBinding |
您决定 |
您决定 |
您决定 |
您决定 |
您决定 |
您决定 |
每种绑定对应不同的传输协议、消息编码格式和版本以及安全、可靠性和事务模式。WCF基础功能也提供了扩展绑定的方式,例如通过CustomBinding或者定义派生与Binding的类。
WCF 的契约包括服务契约、数据契约和消息契约(特别的,还包括了错误契约,用于异常的处理)。其中服务契约为面向服务应用程序的核心,通过它可以定义服务。数据契约则为服务所要传递的数据。由于服务的调用需要跨进程或机器进行通信,就需要服务数据必须能够被序列化和反序列化。虽然.NET本身提供了数据的序列化功能,但WCF的数据契约更加符合服务数据的定义习惯。至于消息契约,则可以将服务数据定义为消息,包括XML文本格式、MTOM(消息传输优化机制)格式和二进制格式。