WCF綁定
服务之间的通信方式是多种多样的,有多种可能的通信模式。包括:同步的请求与应答(Request/Reply)消息,或者异步的即发即弃(Fire-and-Forget)消息等等,在通信时传输的消息编码格式也有许多种,为了简化之些操作,使之易于管理,WCF引入了绑定技术将这些通信特征组合在一起。一个绑定可以是封装了诸如传输协议、消息编码、通信模式、可靠性、安全性、事务传播以及互操作性等相关选项的集合,并使之保持一致。
传输消息的传输协议包括:HTTP(或者HTTPS)、TCP、P2P2(对等网)、IPC(命名管道 Named Pipes)以及MSMQ,除此还提供自定义协议的支持,如:UDP或者SMTP等。
消息编码格式包括:保证互操作性的纯文本编码格式、优化性能的二进制编码格式、提供有效负载的MTOM(消息传输优化机制,Message Transport Optimization Mechanism)编码格式,除此还提供自定义消息编码格式。
WCF定义了9种标准绑定:
基本绑定(Basic Binding):由BasicHttpBinding类提供,基本绑定能够将WCF服务公开为旧的ASMX Web服务,使得旧的客户端能够与新的服务协作。
TCP绑定:由NetTcpBinding类提供,TCP绑定使用TCP协议实现在Intranet中跨机器的通信。TCP绑定支持多种特性,包括可靠性、事务性、安全性以及WCF之间通信的优化。前提是,它要求客户端与服务都必须使用WCF。
对等网绑定:由NetPeerTcpBinding类提供,它使用对等网进行传输。
IPC绑定:由NetNamedPipeBinding类提供,它使用命名管道为同一机器的通信进行传输。这种绑定方式最安全,因为它不能接收来自机器外部的调用。IPC支持的特性与TCP绑定相似。
Web服务(WS)绑定:由WSHttpBinding类提供,WS绑定用不用HTTP或HTTPS进行传输,为基于Internet的通信提供了诸如可靠性、事务性与安全性等特性。
WS联邦绑定(Federated WS Binding):由WSFederationHttpBinding类提供,提供对联邦安全(Federated Security)的支持。
WS双向绑定(Duplex WS Binding):由WSDualHttpBinding类提供,WS双向绑定与WS绑定相似,但它还支持从服务到客户端的双向通信。
MSMQ绑定:由NetMsmqBinding类提供,它使用MSMQ进行传输,用以提供对断开的队列调用的支持。
MSMQ集成绑定(MSMQ Integration Binding):由MsmqIntegrationBinding类提供,它实现了WCF消息民MSMQ消息之间的转换,用以支持与旧的MSMQ客户端之间的互操作。
对于以上绑定可以进行一下分类:
Web Service绑定:BasicHttpBinding、WSHttpBinding、WSDualHttpBinding、WSFederationHttpBinding;
跨进程/主机绑定:NetNamedPipeBinding、NetTcpBinding、NetPeerTcpBinding;
消息绑定:NetMsmqBinding、MsmqIntegrationBinding。
每种标准绑定使用的传输协议与编码格式都不相同,如下所示:
|
名字 |
传输协议 |
编码格式 |
互操作性 |
|
BasicHttpBinding |
HTTP/HTTPS |
Text,MTOM |
YES |
|
NetTcpBnding |
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的通信。
WCF提供了多种绑定方式供我们选择,然而如何选择绑定,我们还是要在遵循绑定特性的基础上进行选择,下面以一副图来说明如何选择WCF的绑定方式:
本章主要介绍WCF绑定的基础知识(本章知识主要参考《WCF服务编程》),下一章我们通过一些DEMO对绑定进行介绍。
以上轉http://www.cnblogs.com/xinhaijulan/archive/2010/10/23/1858894.html
WCF綁定的更多相关文章
- vue事件綁定
事件綁定可以是一個句子,一個函數名稱,也可以是一個函數. 事件修飾符,按鍵修飾符.
- vue樣式綁定
vue的樣式可以使得class,style不僅可以綁定文本,而且可以綁定數組和對象. 使用對象{} 使用數組 綁定對象 使用computed屬性, 使用內聯樣式.
- Python 變量 Variable 動態綁定
為何 Python 變量沒有 Data Type 概念 ? 可以與任意 Data Type 綁定? Python 變量 Variable 與其他程式語言不同之處在於: > variable 不是 ...
- MVC 下拉單數據內容綁定
#region /// <summary>授權範圍自建列表</summary> /// <returns></returns> ...
- C# Chart圖標綁定
开发软件为VS2010 免去了安装插件之类的麻烦. 最终效果图: 饼状图: 前台设置:设置参数为: :Titles, 添加一个序列,在Text中设置名字. :Series ,添加一个序列,选择Char ...
- WCF分佈式事務支持
WCF分佈式事務對Binding有要求,不支持BasicHttpBinding,BasicHttpContextBinding,NetPeerTcpBinding 要支持分佈式事務,需要進行以下配置: ...
- 前端框架MVVM是什么(整理)
前端框架MVVM是什么(整理) 一.总结 一句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定. 1.我大前端应该不应该做复杂的数 ...
- MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN
在Membership系列的最后一篇引入了ASP.NET Identity,看到大家对它还是挺感兴趣的,于是来一篇详解登录原理的文章.本文会涉及到Claims-based(基于声明)的认证,我们会详细 ...
- [转]MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN
本文转自:http://www.cnblogs.com/jesse2013/p/aspnet-identity-claims-based-authentication-and-owin.html 在M ...
随机推荐
- 动态网页制作PHP常用的正则表达式
匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内): [^x00-xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空行的正则表达 ...
- DOJO 八 event dojo/on
官网教程:Events with Dojo在元素上绑定events,需要引用包dojo/on,通过on方法来实现. <button id="myButton">Clic ...
- Linux设备模型——设备驱动模型和sysfs文件系统解读
本文将对Linux系统中的sysfs进行简单的分析,要分析sysfs就必须分析内核的driver-model(驱动模型),两者是紧密联系的.在分析过程中,本文将以platform总线和spi主控制器的 ...
- Google 网络库Volley简介
Volley是什么? 2013 Google I/O 大会发布的Android平台网络通讯库,旨在帮助开发者实现更快速,简单,健壮的网络通讯.支持网络图片的缓存加载功能. 适用场景:数据量不大,但是通 ...
- Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader
这里下载:http://www.newtonsoft.com/products/json/安装: 1.解压下载文件,得到Newtonsoft.Json.dll 2.在项目中添加引用.. jav ...
- AI中去掉页面边框
其实也没啥说的,就是很多人在百度中问这个在AI中这样除去页面边框,其实很简单,用快捷组合键 ctrl+shift+H 就行啦,边框自己就没了
- 漫游Kafka设计篇之消息传输的事务定义
之前讨论了consumer和producer是怎么工作的,现在来讨论一下数据传输方面.数据传输的事务定义通常有以下三种级别: 最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输. 最 ...
- PHP学习笔记04——数组
<?php // 1.数组的声明,可以直接为数组元素赋值,也可以使用array函数声明数组 /* 索引数组:下标从0开始,依次递增 * 关联数组:字符串为下标 * */ //直接赋值声明数组,不 ...
- pycharm Working directory error
/***************************************************************************** * pycharm Working dir ...
- Spring无配置使用properties文件
利用@PropertySource注解加载 @Configuration @ComponentScan(basePackages="*") @PropertySource({&qu ...