服务是整个分布式网络的核心,而WCF是微软平台上部署和使用服务的最简单的方式
Address是Endpoint的网络地址,它标记了消息发送的目的地
每种绑定对应不同的传输协议、消息编码格式和版本以及安全、可靠性和事务模式
绑定类名称 |
传输 |
消息编码 |
消息版本 |
安全模式 |
可靠消息传送 |
事务流(默认情况下禁用) |
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 的契约包括服务契约、数据契约和消息契约(特别的,还包括了错误契约,用于异常的处理)
服务契约为面向服务应用程序的核心,通过它可以定义服务。数据契约则为服务所要传递的数据。由于服务的调用需要跨进程或机器进行通信,就需要服务数据必须能够被序列化和反序列化
消息契约,则可以将服务数据定义为消息,包括XML文本格式、MTOM(消息传输优化机制)格式和二进制格式
WCF通信过程中的信道,即管道,就是消息在哪里发送/接受的。很多信道放到一起组成信道栈,信道栈是处理消息的分层通信展,相当于TCP/IP七层协议
信道就是WCF应用程序接收和发送所有信息的通道。它负责在一个持续的方式中准备并传输消息。信道是为传输,协议和消息交换定义的。信道被放到一起来创建信道栈。信道栈是处理消息的分层通信栈。比如,一个信道栈可以由一个TCP传输信道和一个事务协议信道组成。这样的一个信道栈允许使用在网络中的客户端和服务端之间使用TCP协议和事务流转来发送/接收消息
WCF支持不同的消息交换模式:单向,双工和请求-回复
身份验证包括:
1. 无身份验证: 所有的调用者都能访问服务
2.Windows身份验证:Kerberos(有域服务器)和NTLM(工作组)
3.用户名与密码: 客户端向服务端发送一个用户名和密码,服务端通过一些凭证库来验证
4.X509证书: 客户端包含一个证书,服务端预先知道这些证书,当客户端发送请求时,服务端会验证客户端的证书
5.定制机制: 允许开发者任意使用一种身份验证机制
6.发布口令: 调用者与服务同事依赖一个安全口令