WCF常用绑定选择
一、五种常用绑定常用绑定的传输协议以及编码格式
| 名称 | 传输协议 | 编码格式 | 互操作性 |
| 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常用绑定选择的更多相关文章
- WCF系列_WCF常用绑定选择
一.五种常用绑定常用绑定的传输协议以及编码格式 名称 传输协议 编码格式 互操作性 BasicHttpBinding HTTP/HTTPS Text,MTOM Yes NetTcpBinding TC ...
- WCF入门(八)---WCF服务绑定
WCF服务绑定是一个集合,每个元素定义了服务与客户端进行通信方式的几个元素.传输元素和一个消息编码元素各自结合两个最重要的组成部分.这里是WCF服务绑定常用的列表. 基础绑定 基础约束是由basicH ...
- WCF基础:绑定(二)
在WCF的绑定体系中,经常会碰到ICommunicationObject接口,无论是IChannel接口还是IChannelListener/IChannelFactory接口都继承了ICommuni ...
- WCF基础:绑定(三)
在WCF绑定体系中,绑定创建绑定元素,绑定元素创建绑定监听器/绑定工厂,绑定监听器/绑定工厂创建信道. WCF中绑定是有多个信道相连组成的信道栈,在这个信道栈中必须包含传输信道和编码信道,而且传输信道 ...
- WCF基础:绑定(一)
WCF中的终结点(ServiceEndpoint)包含有三要素:地址(EndpointAddress),绑定(Binding),契约描述(ContractDescription)三要素:其中绑定的在整 ...
- WCF 服务编程 - 常用绑定
WCF 定义了5中常用的绑定. 一. 绑定 1.基本绑定: 对应于BasicHttpBinding类.基本绑定能够将WCF服务公开为传统的ASMX Web服务,使得原客户端能够与新的服务协作.如果客 ...
- WCF之绑定
NameSpace+Name作为服务元数据的唯一标示.BindingElement描述Binding的特征. 绑定表示通信信道的配置,定义C/S间的协议. 分为:传输信道(TCP,HTTP…),消息编 ...
- WCF标准绑定以及传输协议与编码格式
WCF 定义了9 种标准绑定: 基本绑定(Basic Binding) 由BasicHttpBinding类提供.基本绑定能够将WCF服务公开为旧的ASMX Web服务,使得旧的客户端能够与新的服务协 ...
- wcf常用的概念
常见的服务行为包括实例控制.并发控制.元数据发布等 在WCF中,有三种消息交换模式:数据报模式.请求-响应模式.双工模式. 在WCF中一共包含了4种契约,分别是服务契约.数据契约.错误契约和消息契约. ...
随机推荐
- 【Python】更优的字符串格式化方式 -- "format"替代"%s"
背景 前段时间看了一篇介绍Python的代码技巧的文章,建议格式化字符串时使用"format"代替使用"%",但是没有说明原因.各博客网站介绍相关用法的博客很多 ...
- sql数据类型转换函数
1.CAST()CAST (<expression> AS <data_ type>[ length ]) 2.CONVERT()CONVERT (<data_ type ...
- WebAPI项目 IHttpActionResult不识别解决办法
转自:http://blog.csdn.net/nnnnnbody/article/details/16945253 使用ASP.NET Web API构造基于restful风格web service ...
- ActiveMQ消息队列使用和配置
安装ActiveMQ 使用brew安装https://blog.csdn.net/u010046908/article/details/54728375 直接下载安装https://blog.csdn ...
- 【转】通过blktrace, debugfs分析磁盘IO
前几天微博上有同学问我磁盘util达到了100%时程序性能下降的问题,由于信息实在有限,我也没有办法帮太大的忙,这篇blog只是想给他列一下在磁盘util很高的时候如何通过blktrace+debug ...
- day37 爬虫2(web微信、高性能相关、Scrapy)
s16day37 爬虫2 参考博客:http://www.cnblogs.com/wupeiqi/articles/6229292.html 课堂代码:https://github.com/liyon ...
- day15 web框架和Django基础
参考博客: http://www.cnblogs.com/yuanchenqi/articles/6788872.html http://www.cnblogs.com/yuanchenqi/arti ...
- [转载]java实现word转pdf
最近遇到一个项目需要把word 转成pdf,百度了一下网上的方案有很多,比如虚拟打印.给word 装扩展插件等,这些方案都依赖于ms word 程序,在java代码中也得使用诸如jacob或jcom这 ...
- jQuery实现select三级联动
参考:jQuery权威指南jQuery初步jQuery选择器jQuery操作domjQuery操作dom事件jQuery插件jQuery操作AjaxjQuery动画与特效jQuery实现导航栏jQue ...
- vue.js 源代码学习笔记 ----- instance index
import { initMixin } from './init' import { stateMixin } from './state' import { renderMixin } from ...