引用 WCF 本质(2)

5. 绑定 (Bindings)

任何一个服务要完成正确、安全、有效的通讯,都会面临诸多问题。将这些问题进行排列,可能有成千上万种组合。

  • 通讯模式(communication patterns):消息可以是同步(synchronous request/replay)或异步(asynchronous fire-and-forget)的;消息可以是双向的;消息可能被立即接收或者被放入消息队列(queued),这个队列可能是持久化,也可能是临时的。
  • 传输协议(transport protocols):可以选择 HTTP(HTTPS)、TCP、P2P(peer network)、IPC(named pipes),或者 MSMQ。
  • 消息编码(message encoding):可以选择使用纯文本(plain text)来确保互操作能力,选择二进制编码(binary encoding) 来优化性能,或者使用 MTOM (Message Transport Optimization Mechanism) 来提高负载能力。
  • 消息安全(securing messages):可以不对消息加密,仅提供传输层的安全保障;或者选择采取独立的安全方案对消息层进行安全保护;还有其他多种对客户端进行身份和授权验证的方案。

为了简化这些问题,并使得它们更容易管理,WCF 在 Binding 中整合了一整套的通讯方案。每个 Binding 都采取一致、可设置的方式来选择传输协议(transport protocol)、消息编码(message encoding)、通讯模式(communication pattern)、可靠性(reliability)、安全性(security)、事务传播(transaction propagation),以及交互方式(interoperability)。如此一来,我们可以专心地用服务来实现业务逻辑,无需去实现或了解繁多的底层通讯细节。

 

多数时候,我们都是直接使用 WCF 提供的 Bindings,只需对其属性作些简单的调整。当然,我们也可以从零开始写一个自定义的 Bindings 用于某些特殊的场合。服务通过元数据发布它所选择的 Bindings, 以允许客户端查询其类型和特定的属性,客户端必须严格使用相同的 Bingings 设置才能调用该服务。每个服务都可绑定多个基于不同地址 Bindings。

标准绑定类型

WCF 提供了 9 种标准的绑定类型。

  • Basic binding : BasicHttpBinding。被设计用来对遗留下来的 ASMX Web Service 提供支持,这样既有的客户端程序可以连接到 WCF 服务上,而且 WCF 客户端也可以使用现有的 Web Service 服务。
  • TCP binding : NetTcpBinding。使用 TCP 在 Intranet 网络进行跨机器通讯,支持多种功能,包括可靠性、事务和安全,并专门针对 WCF-to-WCF 进行了优化。不过相应地,它需要客户端和服务都使用 WCF 环境。
  • Peer network binding : NetPeerTcpBinding。使用 P2P 网络进行通讯,这恐怕是使用率最少的一种绑定类型了。
  • IPC binding : NetNamedPipeBinding。在同一主机上使用命名通道进行通讯,它拥有极高的安全保护能力,不接受任何本机以外的调用,和 TCP Binding 一样支持多种功能。
  • Web Service (WS) binding : WSHttpBinding。使用 HTTP/HTTPS 在 Internet 上进行消息传输,支持可靠性、事务、安全等功能。
  • Federated WS binding : WSFederationHttpBinding。专用的 WS-Federation 绑定协议。
  • Duplex WS binding : WSDualHttpBinding。和 WS binding 类似,但它支持服务和客户端之间的双向通讯。
  • MSMQ binding : NetMsmqBinding。对离线消息队列调用提供支持。
  • MSMQ integration binding : MsmqIntegrationBinding。在 WCF 消息和 MSMQ 消息之间进行转换,被设计用来对遗留下来的 MSMQ 客户端提供支持。

格式和编码

 

每种绑定类型都使用不同的传输和编码方式。

WCF 本质(2) - wxfclnice - 逍遥彩上飞的博客

(粗体表示默认设置)

基于文本编码方式的 WCF 服务(或客户端)可以通过 HTTP 协议与其他的任何服务(或客户端)进行通讯,即便它们所使用的技术不同。而通过 TCP、IPC 进行二进制编码的服务通讯,虽然拥有最好的性能,但交互能力却很差,只能用于 WCF-to-WCF 环境。

绑定类型选择

下图很好地说明了如何选择合适的绑定类型。

WCF 本质(2) - wxfclnice - 逍遥彩上飞的博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值