也存在一些消息保护选项:你可以选择不对之进行保护,你也可以使用它们来仅提供传输级安全或提供消息级隐私和安全,并且当然,也存在很多种方式用于对客户端实现认证和授权。消息传输在跨越中间媒体和中断连接时可能是不可靠的或可靠的端到端式,并且消息可能是以其发送的方式传输的或是以其接收方式传输的。
通讯服务可能需要与其它服务或仅能够使用基本Web服务协议的客户端互操作,或者它们能够使用WS-*现代协议的核心(例如WS-安全和WS-原子事务)。通讯服务可能需要与旧式的客户端通过原始的MSMQ消息进行互操作,或你可能想限制通讯服务以便仅与另一个WCF服务或客户端互操作。
简言之,通讯存在许多方面的内容,包括大量的参数和决策点。其中,一些选择可能是互斥的,而另一些选择可能要求必须使用另外的相应选择。很明显,客户端和服务必须在所有这些选项上相吻合,以达到正确交流的目的。为了简化并使其更具可管理性,WCF小组共同在绑定中提供了一个这样的通讯方面集合。
个绑定仅仅是对于相协调的传输协议、消息编码、通讯模式、可靠性、安全性、事务传播和互操作性的预封装。理想情况下,你能够从通讯服务代码中"提取"所有的这些繁重的任务方面并且允许它专注于实现业务逻辑。这样做可以使你在相当不同的繁重任务方面使用相同的服务逻辑,而绑定正好使你能够实现这一目的。
你可以使用WCF提供的绑定,也就是说,你或者可以"浓缩"它们的属性,或者是从头编写通讯自己的定制绑定。一个服务在它的元数据中出版它的绑定选择,这使得客户端能够查询这种类型和绑定的特定属性,因为客户端必须使用与服务完全一样的绑定。单个服务能够支持在独立的地址上的多个绑定。
通常,服务并不指定关于绑定本身。WCF定义了列举于表格1中的共9种标准绑定。基于文本的编码使一个WCF服务(或客户端)能够通过HTTP与任何其它服务(或客户端)进行交流而不考虑它的技术;然而,通过TCP或IPC的二进制编码传输能够产生最优的性能,但是却以失去极广泛的互操作性为代价(因为它必须使用WCF到WCF的通讯)。
表格1:WCF标准绑定
| 名称 | 传输 | 编码 | Interop |
| BasicHttpBinding | HTTP/HTTPS | Text | + |
| NetTcpBinding | TCP | Binary | - |
| NetPeerTcpBinding | P2P | Binary | - |
| NetNamedPipeBinding | IPC | Binary | - |
| WSHttpBinding | HTTP/HTTPS | Text,MTOM | + |
| WSFederationBinding | HTTP/HTTPS | Text,MTOM | + |
| WSDualHttpBinding | HTTP | Text,MTOM | + |
| NetMsmqBinding | MSMQ | Binary | - |
| MsmqIntegrationBinding | MSMQ | Binary | + |
为一个传输协议选择MSMQ能够强制实现WCF到WCF或WCF到MSQM的通讯,但是,这仅是针对非连接的离线工作情况提供的。典型情况下,为通讯服务选择一个绑定应该遵循如图4所示的策略活动图。
![]() |
| 图4:策略活动图:该图展示了选择一个绑定的过程 |
你应该问自己的第一个问题是,是否通讯服务需要与非WCF客户进行交互。如果回答"是",并且如果客户端是一个旧的MSMQ客户端,那么应该选择NetMsmqBinding-它可以使通讯服务与这样的一个客户端通过MSMQ进行互操作。如果你需要与一非WCF客户端进行互操作并且该客户端期望使用基本的Web服务协议(ASMX Web服务),那么,你可以选择BasicHttpBinding-它能够把通讯WCF服务暴露到外界,就好象它是一个ASMX Web服务一样。
缺点是你不能利用任何现代WS-*协议。然而,如果非WCF客户端能理解这些标准,那么,你可以选择WS绑定之一,例如WSHttpBinding,WSFederationBinding或WSDualHttpBinding。如果你可以假定客户端是一个WCF客户端,但它要求离线或非连接性交互,那么你可以选择使用MSMQ的NetMsmqBinding来传输消息。如果客户端需要连接的通讯但能够跨越计算机边界被调用,那么你可以选择通过TCP进行通讯的NetTcpBinding。
如果客户端位于与服务同一台计算机上,那么你可以选择使用命名管道的NetNamedPipeBinding来(IPC)最优化性能。注意,一个使用NetNamedPipeBinding的服务不能接受除它自己以外的来自任何其它计算机的调用,并且这样也会更为安全。你可以基于其它标准(例如,回调需要(WSDualHttpBinding),端对端网络(NetPeerTcpBinding)或联盟安全(WSFederationBinding))来详细地调整绑定选择。
十、端点
每一个服务都关联于一个定义了该服务所在位置的地址,一个定义了如何与服务进行通讯的绑定和一个定义了该服务所实现功能的合同。
事实上,WCF用端点的形式来形式化描述这种关系。该端点是地址、合同和绑定的一个结合(见图5)。每一个服务必须具有三个端点,而且由服务暴露该端点。从逻辑上讲,端点是服务的接口,并且类似于一个CLR或COM接口。
![]() |
| 图5:该端点是地址、合同和绑定的结合 |
每一个服务必须暴露至少一个业务端点,并且每一个端点都具有一个相同的合同。在一个服务上的所有的端点都具有唯一的地址,而单个服务可以暴露多个端点。这些端点能够使用相同的或不同的绑定并能暴露相同的或不同的合同。你可以使用一个配置文件来以管理方式配置端点或以编程方式来实现端点配置。
| 共5页: 上一页 [1] [2] [3] 4 [5] 下一页 | ||
|
|
||||
| · CISSP认证成长之路 · 隐私保护技术探讨 · 华为员工自杀频频拷问.. · FTTx光纤接入 · Windows Server 2008专.. · 开源虚拟化技术Xen · WCF开发基础 · Linux——从菜鸟到高手 |
· 微软出价446亿美元收购.. · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 微软Forefront企业安全.. · 如何优化IT 控制能耗 · 国际文档格式标准开战 · 珊瑚虫QQ作者侵权案开庭 · 802.11n:下一代的无线.. |
|||
|
||||
| · VPN技术 · iSCSI应用与发展 · SQL Server 2008/2005.. · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 中间件应用技术专题 · 深入了解PGP加密技术 |
· 病毒查杀专题 · VPN技术 · 国际文档格式标准开战 · SSL VPN详细知识 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. · 木马原理与防范 |
|||
|
||||
| · SQL Server 2008/2005.. · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · 身份认证技术 · 病毒查杀专题 |
· 清除流氓软件——51CTO.. · SSL VPN详细知识 · Sniffer安全技术从入门.. · VPN技术 · 了解统一威胁管理(UTM).. · 网络钓鱼 · ADSL应用面面俱到 · ADSL应用面面俱到 |
|||