一、五种常用绑定常用绑定的传输协议以及编码格式

名称 传输协议 编码格式 互操作性
BasicHttpBinding HTTP/HTTPS Text,MTOM Yes
NetTcpBinding TCP Binary No
NetNamedPipeBinding IPC Binary No
WSHttpBinding HTTP/HTTPS Text,MTOM Yes
NetMsmqBinding MSMQ Binary

No

1、基本绑定(BasicHttpBinding)

对应BasicHttpBinding类,能够将WCF服务公开为传统的ASMX Web服务,是以前就的程序能够使用现在的WCF服务。在实际开发中一个WCF服务可能会给不同的程序调用,如给Java的程序调用,给Flex的程序调用等,那么采用BasicHttpBinding最合适不过了

2、TCP绑定(NetTcpBinding)

对应与NetTcpBinding类,TCP绑定使用TCP协议在Intranet中跨机器的通信,注意这里是Intranet而非Internet。支持多种特性,包括可靠性、事务性、安全性、以及WCF之间通信的优化。前提是要求客户端与服务端都必须使用WCF

3、IPC绑定(NetNamedPipeBinding)

对应于NetNamedPipeBinding累,使用命名管道为同一机器通信进行传输,安全性最高,因为不能接收其它机器的外部调用。IPC协议绑定与TCP协议绑定相似,也是性能最好的绑定,因为IPC协议比TCP协议更简单

4、Web服务(WS)绑定(WSHttpBinding)

对应于WSHttpBinding类,WS绑定使用Http或Https进行传输。为基于Internet的通信提供了多种特性(可靠性、事务性、安全性),遵循WS-*标准。该绑定用来与支持WS-*标准的系统进行互操作

5、MSMQ绑定(NetMsmqBinding)

对应于NetMsmqBinding类,它使用MSMQ进行传输,用于支持断开的队列调用

注:二进制编码格式使用TCP、IPC、MSMQ可以获取最佳性能,但是它是以牺牲互操作性为代价,因为它只支持WCF到WCF的通信

二、选择绑定

首先考虑服务是否要与非WCF的客户端交互,如果需要,判断客户端期望调用基本Web协议(ASMX Web)就选BasicHttpBinding,否则就选WSHttpBinding,该绑定支持WS-*标准。

WCF到WCF的考虑是否需要脱机或断开状态下的交互,如果需要就选择NetMsmqBinding。此外在判断是否需要跨机器调用,如果需要就选择NetTcpBinding,否则就选择NetNamedPipeBinding

三、其他集中不是很常用的绑定

1、WS双向绑定

对应于WSDualHttpBinding类,与WS绑定几乎一样,不过它支持双向通信。由于没有支持回调的行业标准,所以不支持互操作性。在.NET服务总线以及NetTcpRelayBinding出现后,不再推荐使用

2、对等网络绑定

对应于NetPeerTcpBinding类,它使用对等网络来传输消息:使用对等网络与客户端可以订阅的相同网格,并且广播消息。设计网络拓扑与网络计算

3、联邦WS绑定

对应于WSFederationHttpBinding类,主要是支持联邦安全

4、联邦WS 2007绑定

对应于WS2007FederationHttpBinding类,为WSFederationHttpBinding的更新版本

5、MSMQ集成绑定

对应于MsmqIntegrationBinding类,支持消息队列的绑定,MSMQ集成绑定可以将WCF消息转化为MSMQ消息,它的设计目标就是为了与MSMQ客户端交互

6、WS 2007绑定

对应于WS2007HttpBinding类,继承与WSHttpBinding类,添加了对于事务、安全、可靠性规范的支持

转自:http://blog.csdn.net/dingxingmei/article/details/13772121

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

  1. WCF系列_WCF常用绑定选择

    一.五种常用绑定常用绑定的传输协议以及编码格式 名称 传输协议 编码格式 互操作性 BasicHttpBinding HTTP/HTTPS Text,MTOM Yes NetTcpBinding TC ...

  2. WCF入门(八)---WCF服务绑定

    WCF服务绑定是一个集合,每个元素定义了服务与客户端进行通信方式的几个元素.传输元素和一个消息编码元素各自结合两个最重要的组成部分.这里是WCF服务绑定常用的列表. 基础绑定 基础约束是由basicH ...

  3. WCF基础:绑定(二)

    在WCF的绑定体系中,经常会碰到ICommunicationObject接口,无论是IChannel接口还是IChannelListener/IChannelFactory接口都继承了ICommuni ...

  4. WCF基础:绑定(三)

    在WCF绑定体系中,绑定创建绑定元素,绑定元素创建绑定监听器/绑定工厂,绑定监听器/绑定工厂创建信道. WCF中绑定是有多个信道相连组成的信道栈,在这个信道栈中必须包含传输信道和编码信道,而且传输信道 ...

  5. WCF基础:绑定(一)

    WCF中的终结点(ServiceEndpoint)包含有三要素:地址(EndpointAddress),绑定(Binding),契约描述(ContractDescription)三要素:其中绑定的在整 ...

  6. WCF 服务编程 - 常用绑定

    WCF  定义了5中常用的绑定. 一. 绑定 1.基本绑定: 对应于BasicHttpBinding类.基本绑定能够将WCF服务公开为传统的ASMX Web服务,使得原客户端能够与新的服务协作.如果客 ...

  7. WCF之绑定

    NameSpace+Name作为服务元数据的唯一标示.BindingElement描述Binding的特征. 绑定表示通信信道的配置,定义C/S间的协议. 分为:传输信道(TCP,HTTP…),消息编 ...

  8. WCF标准绑定以及传输协议与编码格式

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

  9. wcf常用的概念

    常见的服务行为包括实例控制.并发控制.元数据发布等 在WCF中,有三种消息交换模式:数据报模式.请求-响应模式.双工模式. 在WCF中一共包含了4种契约,分别是服务契约.数据契约.错误契约和消息契约. ...

随机推荐

  1. 我的Android学习路线(二)

    这两天的主要工作: 优化了一下布局界面,原本使用的是相对布局,直观省力,但是考虑了一下还是使用更加主流的线性布局. 完善了一下计算器的功能,比如加入小数运算. 使用线性布局的思路可以用下面的伪代码表示 ...

  2. Jenkins基础复习

  3. Jenkins搭建GitHub仓库

    一.安装Jenkins 二.安装Git 三.注册GitHub账号 以上都很简单,网上资源丰富 四.新增GitHub远程仓库,连接到本地Git,这样就可以实现代码提交到GitHub中了 ----自行找资 ...

  4. Mysql5.7基于日志转为基于事务主从复制

    将基于日志的复制变更为基于事务的复制 mysql版本要高于5.7.6 gtid_mode要设为off 处理步骤 详细步骤 1.查看主从mysql版本是否高于5.7.6 show variables l ...

  5. UVALive-4287 Proving Equivalences (有向图的强连通分量)

    题目大意:有n个命题,已知其中的m个推导,要证明n个命题全部等价(等价具有传递性),最少还需要做出几次推导. 题目分析:由已知的推导可以建一张无向图,则问题变成了最少需要增加几条边能使图变成强连通图. ...

  6. <mvc:annotation-driven>新增标签

    以下为spring mvc 3.1中annotation-driven所支持的全部配置 <mvc:annotation-driven message-codes-resolver =" ...

  7. vue组件间传值

    父传子 1.父组件:在子组件容器内绑定数据 <router-view :unusedOrderNum="num1" :usedOrderNum="num2" ...

  8. 使用libimobiledevice + ifuse提取iOS沙盒文件

    简介 libimobiledevice:一个开源包,可以让Linux支持连接iPhone/iPod Touch等iOS设备. Git仓库: https://github.com/libimobiled ...

  9. yum离线安装

    安装yum-plugin-downloadonly插件 yum install -y yum-plugin-downloadonly 下载对应的软件包,我们以mysql为例,终端输入如下命令 yum ...

  10. 对于get方法是否需要synchronized修饰

    具体用法没有总结,只是说明一个用法而已,对于以前个人理解出现的偏差 [问题描述] 对于一个计数功能的实现,获取值的方法是否需要加锁? [以前理解] 我只需要在进行累加的方法上进行加锁即可,这样保证其可 ...