WCF系列学习笔记4之绑定详解
标准绑定
绑定的基本概念:通道模型具有极大的灵活性,可以在协议通道,编码器,传输通道等各个方面进行设置,每次都需要设置一个完整的通道栈是一个较为复杂的事情,从传输协议上看,有HTTP,TCP,UDP,P2P,IPC和MSMQ等多种方案,从编码器上,有二进制编码,MTOM等编码方法,在加上消息的安全策略,会话设置的组合会有很多。绑定是一个定制好的通道栈,包含协议通道,传输通道和编码器,从功能上看,一个绑定集成了通信模式,可靠性,安全性,事务传播和互操作性等设置,标准绑定一共有十二种,下面将一一介绍。
标准绑定:
绑定名称 |
简要介绍 |
网络协议 |
可交互性 |
basicHttpBinding |
基于WS-BasicProfile1.1 的WEB服务 |
HTTP/HTTPS |
可交互 |
wsHttpBinding |
针对改进的WEB服务的绑定,包括WS-Security,WS-Transaction |
HTTP/HTTPS |
可交互 |
wsDualHttpBinding |
提供双工通信的HTTP绑定 |
HTTP |
可交互 |
WebHttpBinding |
支持REST/POX服务的绑定,使用XML/JSON序列化 |
HTTP/HTTPS |
可交互 |
netTcpBinding |
使用TCP传输协议在跨主机的局域网内使用,支持可靠性,事务,安全特性,特别优化支持WCF系统,使用它确保通信双方都基于WCF构建,不符合SOA原则。 |
TCP |
不可交互 |
netNamedPipeBinding |
支持和NetTCpBinding相同的特性,由于使用命名管道进行通信,所以通信不同跨主机 |
ICP |
不可交互 |
netMsmqBinding |
使用微软MSMQ协议进行异步脱机的消息交互, |
MSMQ |
不可交互 |
netPeerTcpBinding |
使用P2P在网络中进行消息交互 |
P2P |
不不可交互 |
msmqIntegrationBinding |
支持WCF消息和MSMQ消息中进行转换 |
MSMQ |
可交互 |
wsFederationHttpBinding |
支持使用了联合安全机制的WEB服务 |
HTTP/HTTPS |
可交互 |
Ws2007HttpBinding |
支持2007 年设计的WS标准 |
HTTP/HTTPS |
可交互 |
Ws2007federationHttpBinding |
为支持2007年制定的ws标准 |
HTTP/HTTPS |
可交互 |
出了功能之外,性能要求也是挑选绑定的重要参数,使用IPC的绑定性能要优于使用TCP的绑定,使用TCP 的绑定要由于HTTP。
系统部署在同一台超级主机上,又便于统一管理和备份,WCF-WCF的交互可以分为下列几种情况1)跨越主机进程交互,2)快越应用程序但在统一进程内交互,3)在统一应用程序域内交互。
IPC基本概念
IPC是一种通信方法,而非通信协议。全称是进程间通信,在WIN32系统中,主要利用以下几种方法实现:
1.使用剪贴板,剪贴板可以在进程之间共享,并且这种机制容易理解,使用也方便,缺点是使用非常频繁,容易产生资源争用,同时性能不高。
2. 使用匿名管道和命名管道,管道是进程用来通信的共享内存区域,一个进程相管道重写入信息,而其他的进程可以从管道中读出信息,管道是进程之间交流的通道,管道的类型有两种, 匿名管道和命名管道,匿名管道是不命名的,他最初用于在本地系统中父进程与他启动的子进程之间的通信,命名管道更高级,它有一个名字表示,以示客户段和服务端应用程序可以通过它进行彼此通信,而且,WIN32 管道甚至可以在不同系统进程间使用。软件是连接两个进程并传输数据,一个管道一旦被建立,她就可以向文件一样被访问,并且可以使用许多与文件操作同样的函数,可以使用CreateFile函数获取一个以打开的管道句柄,或者由另一个进程提供一个句柄,使用WriteFile函数向管道写入数据,之后这些数据可以被另外进程使用ReadFile函数读取,管道是系统对象,因此管道句柄不需要时必须使用CloseHandler函数关闭,
3.匿名管道只能单向传送数据,而命名管道可以实现双向传送数据,管道可以比特流形式传送数据,命名管道可以将数据机和到成为消息的数据块中,命名管道甚至具有通过网络连接多个进程的能力。
4.使用邮件槽,广播式通信,在Win32系统中提供的新方法,可以在不同的主机间交换数据,实现了网络跨越.
5.使用TCP/IP他具备消息管道的所有功能,但遵守一套通信标准是的不同操作系统之上的应用程序可以互相通信,这种方式用于网络方面比较好,用于本地进程间交互性能较差。
6. 使用COM/DCOM:通过COM系统代理存根方式进行进程间数据交换,但只能够表现在对接口含糊调用时传递数据,通过DCOM可以在不同的主机间传送数据。
7.使用内存影射文件:系统内核内存区域开辟一块内存,然后每个进程把每个内存映射到自己可以访问的虚内存地址中,对每个进程说,似乎在操作系统的格子的内存区域,而实际上所有的操作被映射到内存区域中。
跨主机的WCF-WCF交互的绑定的地址
当服务器部署在不同的服务器上,对于局域网内跨主机的WCF-WCF交互,采用TCP协议进行通信是较为合适的选择,首先TCP是先面连接的通信协议,其次处于传输层,TCP一般被称为是一种端对端的协议,当一台计算机需要与另一台计算机建立连接时,TCP协议会让他们建立一个连接,发送和接收资料以及终止连接,传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使他能够自动适应网上的各种变化。IP协议之保证计算机能够发送和接收分组资料,而TCP协议则可以提供一个可靠的,可流控制的,全双工的信息传输服务。
TCP/IP 通过一个应用程序协议分配一个唯一的16位断口号,从而使用断口号来区分应用程序,例如HTTP通信现在已经统一为使用TCP端口80 ,SMTP使用TCP端口25,FTP 使用TCP端口20和21 ,其他使用TCP传输协议的应用程序可以按习惯活遵循标准选择其他可用的断口号,防火墙一般会配置阻塞TCP通信,部署使用非标准端口的应用程序进程会因为存在公司防火墙和个人防火墙而变得复杂甚至无法实现,通过已得到允许标准的端口进行通信的应用程序可以较少外部攻击,TCP默认端口为80 ,在HTTP。SYS模型中,许多不同的HTTP应用程序的通信中将多路复用到单个TCP端口,此模型以及称为Window平台上的标准,这可以降低部署程序的成本。但是多个HTTP应用程序共享端口的能力早已成为Internet信息服务的一个功能,但是,只有在引入IIS6.0附带的协议之后,此基础结构才完全得到广泛使用,实际上,Http.Sys允许任意进程共享专用于HTTP通信的TCP端口,此功能可以让HTTP应用程序在统一物理计算机上共存于不同的进程中,同时共享80端口发送和接收所需要的网络基础结构。
使用netTcpBinding 是唯一能够使用TCP协议的使用二进制编码来提高性能。
WebService是一种网络服务,通过通用的规范,WebService技术须臾使用者访问网络上每一个WebService提供的服务.Web服务的消息都是基于Soap协议进行的, 而Soap本身又处于Http/Https协议之上,所以Soap协议可以轻松地穿越防火墙,而同时借助XML的跨平台特性, Soap协议和具体的实现平台完全无关,Soap协议是简单对象访问协议的缩写,它致以与提供一个简单,轻量的用于在分散或分布环境中交换结构化和类型信息的机制,它致规范对消访问的方式,而不限制具体实现的技术环境,这意味着Soap协议是一种跨技术平台的协议,它一般由四部分组成:Soap信封,Soap编码规则,Soap RPc,Soap 绑定。
BasicHttpBinding绑定支持WS-I Basic Web服务,其内容包括SOAP1.1,WSDL1.1和消息安全协议,它提供了和其他系统的兼容性,但是它却不支持改进的Web服务协议。
与改进的WEB服务进行交互和绑定和地址
与基本的Web服务相比,改进的Web服务添加安全,身份验证,加密,事务控制,可靠传输等,使得Web的功能更加强大,在改进Web服务的交互场景中,绑定和地址都是选择的重点。
改进Web服务协的概述
改进Web服务协议并没有颠覆基本的Web服务,而是在其基本上添加了一系列的WS*协议,来支持功能更加丰富的SOAP消息交互,所以从实现上来说,改进Web服务能够有效地兼容Web服务,
1. Web-Secirity安全协议:他的定制是使用应用程序构建安全的SOAP消息交互,他很灵活,他被设计用来构成多种安全模型,他为多安全令牌,多信任域,多签名格式和多加密技术提供支持,他通过利用现有标准和规范来实现安全性,这样就不必在WS-Security中定义一个完整的安全性解决方案,从身份验证的角度来说:提供了三种方式:1)用户名/密码,2)通过X.509证书的PKI,3)KerBerors方式。
2. WS-Atomic事务流:在普通的SOAP消息交互中加入事务处理的能力,改进WEB服务协议中定义了WS-Atomic事务流协议,该协议建立在WS-Coordination协议之上,而WS-Coordination定义了激活,注册服务,事务流协议主要包括两个事物协议:1)完成协议(completion),完成协议被用来启动提交/会滚流程,基于注册协议的每一个事物参数者,事物协调者会先处理易失的两端提交,在处理持久性的两端提交,结果最终被发送到事物发起者。2)两端提交协议,特别针对分布式事务提交的,分为两个类型,分别为易失两端提交协议和持久两端提交协议,接受到提交通知后,协调者开始所有注册了易失两端提交协议的参与者的提交准备,所有参与者都必须及时给出回复,在所有易失两端提交协议参与者的提交准备结束后,协调者将开始所有注册了持久两端提交协议的提交准备。
3. WS-ReliableMessaging协议:他指定的目的是保证消息的可靠传输,这里的可靠传输精确含义是:1)最多一次,如果没有发生任何错误,那一条消息最多只会被发送一次,2)最少一次:每一条消息必须最少发送一次。3)有序,所有消息必须被有序地发送。
使用脱机模式进行消息交互和绑定和地址
在某些场景下,消息交互的一方无法确定另一方是否可访问,而在大多数交互方式中,如果交互一方出于脱机状态,交互失败,脱机模式是指双方无需同时在线的一种交互模式, 脱机模式交互在WCF中使用MSMQ来实现。
MSMQ是在多个不同的应用程序之间实现相互通信的一种异步传输模式,相互通信的应用程序可以分布在相连网络中的任意位置,他的实现原理是消息的发送者把自己想要发送的信息放入一个容器,然或把它保存在一个系统共用的消息队列中,本地或者是异步消息接受程序在从该队列中读取信息。在消息传递机制中,用两个比较重要的概念,一个是消息,一个是队列,消息是通信的双方所需要的传输的信息,它可以是各式各样的媒体,消息最终的理解方式,为iaoxichuandi的双方实现商定,这样的好厨师,对数据进行了简单的加密,而此采用自己定义的格式可以节省通信的传递量,消息可以含有发送和接收者的标示,只有指定的用户能够看到消息,消息也可以由时间戳,表明制定时间内未到达作废,消息队列是发送和接收消息的公共消息存储体,可以存在内存或无力文件中,消息可以又两种发送方式,快地方式和可恢复模式,快地方式为了消息的快速传递,把消息放在内存中,而可恢复方式择放在物理磁盘上,消息队列可以放置在发送方,接受方所在的机器山个,也可以放在其它位置,MSMQ可以创建以下几种队列:1)公共队列,2)专用队列,3),管理队列,4)响应队列,系统本身的队列有:1)日记队列,2)死信队列,3)报告队列,4)专用系统队列.