| WinVista新技术 WCF开发指南之构建服务 |
|
| 来源:天极yesky 作者:朱先忠编译 加入时间:2006-12-8 访问次数:85 [大 中 小] |
|
八. WAS宿主
Windows活动服务(WAS)是可用于Windows Vista中的一种系统服务。WAS是IIS7的一部分,但是可以被独立地配置。为了使用WAS来宿主通讯WCF服务,你需要提供一个.svc文件。该WAS提供与IIS和自宿主相比更多的优点,包括空闲时间管理、标识管理、应用程序池、隔离等等,并且是选择的宿主进程(在可用的情况下)。而且,这种自宿主的进程为进程内宿主提供独特的优点:处理未知的客户环境、依赖于TCP或IPC(当只有IIS可用时)、利用HTTP上的多个端口(当只有IIS 6可用时)以及通过编程方式存取一些高级宿主特征。
九. 绑定
与任何给定的服务进行通讯都存在多方面的问题。首先,存在许多可能的通讯模式:消息可能是同步请求/响应或异步式的"激活-忘记"模式(fire-and-forget);消息也可能是双向的;消息能够被立即传输或队列化操作而该队列可能是持久性的或易破坏性的。
还存在许多可能的消息传输协议:例如HTTP(或HTTPS),TCP,P2P(端对端网络),IPC(命名管道)或MSMQ。也存在一些可能的消息编码选项:你可以选择普通文本以支持互操作性,二进制编码以便于优化性能,或MTOM(消息传输优化机制)以便处理巨大载荷。
也存在一些消息保护选项:你可以选择不对之进行保护,你也可以使用它们来仅提供传输级安全或提供消息级隐私和安全,并且当然,也存在很多种方式用于对客户端实现认证和授权。消息传输在跨越中间媒体和中断连接时可能是不可靠的或可靠的端到端式,并且消息可能是以其发送的方式传输的或是以其接收方式传输的。
通讯服务可能需要与其它服务或仅能够使用基本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所示的策略活动图。
|
|
|
|
|
|