选自《WCF服务编程中文版》 第一章 WCF基础

绑定
服务之间的通信方式是多种多样的,有多种可能的通信模式。包括:同步的请求/ 应答
(Request/Reply)消息,或者异步的“即发即弃(Fire-and-Forget)”消息;双向
(Bidirectional)消息;即时消息或队列消息;以及持久(Durable)队列或者可变
(Volatile)队列。传递消息的传输协议包括:HTTP(或HTTPS)、TCP、P2P(对等网)、
IPC(命名管道)以及MSMQ。消息编码格式包括:保证互操作性的纯文本编码格式;
优化性能的二进制编码格式;提供有效负载的MTOM(消息传输优化机制,Message
Transport Optimization Mechanism)编码格式。消息的安全保障也有多种策略,包括:
不实施任何安全策略;只提供传输层的安全策略;消息层的隐私保护与安全策略。当然,
WCF 还包括多种对客户端认证与授权的安全策略。消息传递(Message Delivery)可能
是不可靠的,也可能是可靠的端对端跨越中间方,然后断开连接的方式。消息传递可能
按照发送消息的顺序处理,也可能按照接收消息的顺序处理。服务可能需要与其他服务
或客户端交互,这些服务或客户端或者只支持基本的Web服务协议,或者使用了流行的
WS-* 协议,例如WS-Security 或者WS-Atomic Transaction。服务可能会基于原来的
MSMQ 消息与旧的客户端(Legacy Client)交互,或者限制服务只能与其他的WCF 服
务或客户端交互。
若要计算所有可能的通信模式与交互方式之间的组合,数量可能达到上千万。在这些组
合选项中,有的可能是互斥的,有的则彼此约束。显然,客户端与服务必须合理地组合
这些选项,才能保证通信的顺畅。对于大多数应用程序而言,管理如此程度的复杂度并
无业务价值。然而,一旦因此作出错误决定,就会影响系统的效率与质量,造成严重的
后果。
为了简化这些选项,使它们易于管理,WCF 引入了绑定(Binding)技术将这些通信特
征组合在一起。一个绑定封装了诸如传输协议、消息编码、通信模式、可靠性、安全性、
事务传播以及互操作性等相关选项的集合,使得它们保持一致。理想状态下,我们希望
将所有繁杂的基础功能模块从服务代码中解放出来,允许服务只需要关注业务逻辑的实
现。绑定使得开发者能够基于不同的基础功能模块使用相同的服务逻辑。
在使用WCF提供的绑定时,可以调整绑定的属性,也可以从零开始定制自己的绑定。服
务在元数据中发布绑定的选项,由于客户端使用的绑定必须与服务的绑定完全相同,因
此客户端能够查询绑定的类型与特定属性。单个服务能够支持各个地址上的多个绑定。

标准绑定
WCF 定义了9 种标准绑定:
基本绑定(Basic Binding)
由BasicHttpBinding类提供。基本绑定能够将WCF服务公开为旧的ASMX Web
服务,使得旧的客户端能够与新的服务协作。如果客户端使用了基本绑定,那么新
的WCF 客户端就能够与旧的ASMX 服务协作。

TCP 绑定
由NetTcpBinding 类提供。TCP 绑定使用TCP 协议实现在Intranet 中跨机器的通
信。TCP 绑定支持多种特性,包括可靠性、事务性、安全性以及WCF 之间通信的
优化。前提是,它要求客户端与服务都必须使用WCF。
对等网绑定
由NetPeerTcpBinding类提供。它使用对等网进行传输。对等网允许客户端与服
务订阅相同的网格(Grid ),实现广播消息。因为对等网需要网格拓扑(Grid
Topology)与网状计算策略(Mesh Computing Strategies)方面的知识,故而不
在本书讨论范围之内。

IPC 绑定
由NetNamedPipeBinding类提供。它使用命名管道为同一机器的通信进行传输。
这种绑定方式最安全,因为它不能接收来自机器外部的调用。IPC绑定支持的特性
与TCP 绑定相似。

Web 服务(WS)绑定
由WSHttpBinding类提供。WS绑定使用HTTP或HTTPS进行传输,为基于Internet
的通信提供了诸如可靠性、事务性与安全性等特性。
WS 联邦绑定(译注6)(Federated WS Binding)
由WSFederationHttpBinding类提供。WS联邦绑定是一种特殊的WS绑定,提
供对联邦安全(Federated Security)的支持。联邦安全不在本书讨论范围之内。
WS 双向绑定(Duplex WS Binding)
由WSDualHttpBinding 类提供。WS 双向绑定与WS 绑定相似,但它还支持从服
务到客户端的双向通信,相关内容在第5 章介绍。
译注6: WSFederationHttpBinding 支持WS-Federation 安全通信协议。WS-Federation 是WS 联
盟协议的一部分,定义了如何创建跨越多个安全区域的联邦会话,以便在经过单次身份
认证后即可使用部署在多个安全区域内的Web服务。它是一个联邦中多个实体相互信任
的安全机制。对于该安全机制,我们可以想象一下联邦国家中各个成员体之间的安全关
系。追本溯源,这也正是它命名为WS-Federation 的主要原因。

MSMQ绑定
由NetMsmqBinding 类提供。它使用MSMQ 进行传输,用以提供对断开的队列调
用的支持。相关内容在第9 章介绍。

MSMQ 集成绑定(MSMQ Integration Binding)
由MsmqIntegrationBinding 类提供。它实现了WCF 消息与MSMQ消息之间的
转换,用以支持与旧的MSMQ 客户端之间的互操作。MSMQ集成绑定不在本书讨
论范围之内。

格式与编码
每种标准绑定使用的传输协议与编码格式都不相同,如表1-1 所示。
表1-1:标准绑定的传输协议与编码格式(默认的编码格式为黑体)
名字传输协议编码格式互操作性
BasicHttpBinding HTTP/HTTPS Text, MTOM Yes
NetTcpBinding TCP Binary No
NetPeerTcpBinding P2P Binary No
NetNamedPipeBinding IPC Binary No
WSHttpBinding HTTP/HTTPS Text, MTOM Yes
WSFederationHttpBinding HTTP/HTTPS Text, MTOM Yes
WSDualHttpBinding HTTP Text, MTOM Yes
NetMsmqBinding MSMQ Binary No
MsmqIntegrationBinding MSMQ Binary Yes
文本编码格式允许WCF服务(或客户端)能够通过HTTP 协议与其他服务(或客户端)
通信,而不用考虑它使用的技术。二进制编码格式通过TCP 或IPC 协议通信,它所获得
的最佳性能是以牺牲互操作性为代价的,它只支持WCF 到WCF 的通信。

选择绑定
为服务选择绑定应该遵循图1-4 所示的决策活动图表。
首先需要确认服务是否需要与非WCF 的客户端交互。如果是,同时客户端又是旧的
MSMQ客户端,选择MsmqIntegrationBinding绑定就能够使得服务通过MSMQ与该
客户端实现互操作。如果服务需要与非WCF 客户端交互,并且该客户端期望调用基本
的Web 服务协议(ASMX Web 服务),那么选择BasicHttpBinding 绑定就能够模拟


图1-4:选择绑定
ASMX Web 服务(即WSI-Basic Profile)公开WCF 服务。缺点是我们无法使用大多数
最新的WS-*协议的优势。但是,如果非WCF客户端能够识别这些标准,就应该选择其
中一种WS 绑定,例如WSHttpBinding、WSFederationBinding 或者
WSDualHttpBinding。如果假定客户端为WCF客户端,同时需要支持脱机或断开状态
下的交互,则可以选择NetMsmqBinding 使用MSMQ 传输消息。如果客户端需要联机
通信,但是需要跨机器边界调用,则应该选择NetTcpBinding通过TCP 协议进行通信。
如果相同机器上的客户端同时又是服务,选择NetNamePipeBinding使用命名管道可以
使性能达到最优化。如果基于额外的标准,例如回调(选择WSDualHttpBinding)或
者联邦安全(选择WSFederationBinding),则应对选择的绑定进行微调。
注意: 即使超出了使用的目标场景,大多数绑定工作仍然良好。例如,我们可以使用TCP 绑定实
现相同机器甚至进程内的通信;我们也可以使用基本绑定实现Intranet 中WCF 对WCF 的
通信。然而,我们还是应尽量按照图1-4 选择绑定。
使用绑定

WCF 绑定的选择的更多相关文章

  1. WCF绑定类型选择

    WCF绑定类型选择   发布日期:2010年12月10日星期五 作者:EricHu   在开发WCF程序时,如何选择一个适合的绑定对于消息传输的可靠性,传输模式是否跨进程.主机.网络,传输模式的支持. ...

  2. WCF绑定netTcpBinding寄宿到IIS

    继续沿用上一篇随笔中WCF服务类库 Wettery.WcfContract.Services WCF绑定netTcpBinding寄宿到控制台应用程序 服务端 添加WCF服务应用程序 Wettery. ...

  3. WCF绑定和行为在普通应用和SilverLight应用一些对比

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 绑定 普通应用和SilverLight应用区别 本文版权归mephisto和博客园共有, ...

  4. WCF 绑定(Binding)

    绑定包含多个绑定元素 ,它 们描述了所有绑定要求 .可以创建自定义绑定 ,也可以使用下表中的其中一个预定义绑定 : 不同的绑定支持不同的功能.以Ws开头的绑定独立于平台 ,支持 Web服务规范. 以 ...

  5. WCF - 绑定

    从整个基础架构来看 WCF可分为服务模型层和信道层 模型层提供了一个统一的可扩展的编程模型 而信道层提供了对请求信息的接收和处理 而作为WCF通信的三要素之一的绑定 是它实现了组成整个信道层的信道栈 ...

  6. WCF - 绑定后续之自定义绑定

    自定义信道基类 WCF是一个极具扩展性的通信框架 无论在服务模型层还是信道层 都具有很多扩展点 而信道层的扩展点主要体现在实现自定义信道以增强信道栈处理信息的能力 比如我们可以扩展信道层 实现一个自定 ...

  7. @Html.DropDownListFor 下拉框绑定(选择默认值)

    首先先构建绑定下拉框的数据源 private void GetSalesList() { var userList = _rmaExpressAppService.GetUserList(); Tem ...

  8. WCF绑定netTcpBinding寄宿到控制台应用程序

    契约 新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService 代码如下: [ServiceContract] public interface IGa ...

  9. xml文件绑定chenckbox选择框

    //xml文件如下: <?xml version="1.0" encoding="utf-8" ?> <CallReson> <! ...

随机推荐

  1. Remoting的入门教程

    注:<网摘自http://www.codesky.net/article/200411/48322.html> 基本原理 当客户端创建远程RemotableClass的一个实例,.NET框 ...

  2. IntellJ 13.x JPA Persistence Sample

    跟上一篇差不多,一些基本的东西. 这次是JPA + Spring MVC 3.0 1.建立Project 2.Add JPA Support 3.我们以Hibernate为例,设置JPA的Provid ...

  3. Arnold+Shave 渲染毛发

    Arnold是一款基于真实物理光照算法和光线追踪算法的照片级渲染器,参与过多部好莱坞大片的制作,公司官网是:www.solidangle.com,官网上有很多效果图: 这里自己用一个球体测试了一下效果 ...

  4. Intent的属性介绍

    在Android系统的设计中有四大组件:Activity,Service,BroadcastReceiver,ContentProvider.Intent可以被应用于ContentProvider之外 ...

  5. C# WCF学习笔记(二)终结点地址与WCF寻址(Endpoint Address and WCF Addressing) WCF中的传输协议

    URI的全称是 Uniform Rosource Identifire(统一资源标识),它唯一标识一个确定的网绐资源,同时也表示资源所处的位置及访问的方式(资源访问所用的网络协议). 对于Endpoi ...

  6. C# 微信扫码支付 回调页面

    .NET版 微信扫码支付,官方推荐使用[模式二] 一.微信扫码支付模式一: 1.回调页面:官方demo中example文件下的NativeNotifyPage.aspx 2.微信回调地址:http:/ ...

  7. random between [a,b]、(a,b]、[a,b)

    #include <iostream> #include <ctime> #include <cstdlib> using namespace std; ; /*c ...

  8. 随机森林之oob error 估计

    摘要:在随机森林之Bagging法中可以发现Bootstrap每次约有1/3的样本不会出现在Bootstrap所采集的样本集合中,当然也就没有参加决策树的建立,那是不是意味着就没有用了呢,答案是否定的 ...

  9. SMB/CIFS协议解析一概述

    一.SMB/CIFS协议的区别 在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协 议,Microsoft ...

  10. IE下的bug解决方案

    1.IE6下的双边距bug <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...