频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

在.NET Framework 3.5中的WCF通信选项(1)

作者: Hartmut Wilms 出处:InfoQ中文站 2008-03-07 08:45    砖    好    评论   进入论坛
阅读提示:针对分布式系统开发中会遇到的各种通信选项,微软发布的Windows Communication Foundation 为其提供了一种单一的编程模型。这一组选项涵盖了从内部处理通信到端对端网络通信的诸多方面。

Chappell & Associates的负责人David Chappell在他撰写的一篇白皮书《处理多样性:理解.NET Framework 3.5中的WCF通信选项》中,为我们展现了WCF所提供的各种通信方式。

针对分布式系统开发中会遇到的各种通信选项,微软发布的Windows Communication Foundation 为其提供了一种单一的编程模型。这一组选项涵盖了从内部处理通信到端对端网络通信的诸多方面。在过去,每一种通信模型都对应了一种特定的编程模型。“如果为多种通信方式提供一个通用的编程模型,就能够帮助开发者有效地处理各种多样性”,David Chappell说道。

白皮书一开始就介绍了两种主要的负责处理多样性的WCF概念:

从一开始,WCF的创建者就认识到应用程序会有多个不同的通信需求。同时,他们也确信会有新的通信方式不断出现。为了应对这样的现实问题,WCF提供了一个通用的体系架构,以支持不同的通信方式。这种体系架构最突出的两个理念就是通道与绑定[...]。

在WCF中,每一次交互可以被看作是一次消息交换。消息包含了一次访问负载以及在一次传输过程任意数量的基础设施数据。为了处理不同的现有以及未来的通信方式,WCF引入了通道模型。每种通道对应一个特定的基础设施方向,例如安全性或者可靠性。一套完整的基础设施需要一个单独的通信选项,而该选项则由预先定义或自定义的通道堆栈进行处理:

无论是客户端,还是服务,或者两者,通过WCF进行通信的所有软件均依赖于一个或多个通道。[...]通道堆栈基于WCF客户端或服务与它所依赖的通信机制之间进行创建。在堆栈中最底层的通道所做的工作是相同的,即负责将要传递的消息与用来传输该消息的相关机制映射起来。因此,这一最底层的组件通常被称之为“传输通道”。

WCF通过引入绑定的方式允许对通道堆栈进行便捷的配置与定义:

通过指定一个特定的绑定,WCF客户端或者服务隐式地创建了实现一组特定通信行为的通道堆栈。[...] 一个特定的WCF接口所定义的服务可以通过该绑定进行访问[...]或者通过多个绑定同时进行访问[...]。

下面的内容阐释了David Chappell所介绍的.NET Framework 3.5提供的所有通信选项的体系架构:

SOAP和WS-* Web Service

作为微软推出的针对面向服务体系架构的技术,WCF的构建目的在于开发SOAP/WS-*的Web Service:

◆WCF允许传递基于任意传输类型例如HTTP或TCP的SOAP/WS-*消息。
◆支持最重要的WS-规格 - 在.NET Framework 3.5的MSDN文档中,提供了一个扩展的概要介绍《由系统提供的互操作性绑定支持的Web Service协议》。
◆能够强制要求服务遵循Web Services Interoperability Organization (WS-I) Basic Profile 1.0。
◆WCF针对通用的Web服务场景提供了一套预定义的绑定。

WCF应用程序之间的二进制通信

适用于WCF到WCF之间的通信
WCF支持使用更加有效的二进制编码方式进行通信。不仅可以通过HTTP传递标准的基于XML的SOAP消息,开发者还可以选择直接通过TCP传递在表示方式上更加有效的相同的信息。

REST化(RESTful)的Web Service

由于REST方式的Web Service越来越普及,因此在.NET Framework 3.5中,WCF也支持REST方式。事实上,虽然WCF的第一个版本专注于基于SOAP的服务,但是“通用的通道模型完全能够添加对REST通信最直接的支持”。首先,WCF消息必须去除SOAP信封以及标头,这一点可以使用新增加的WebHttpBinding:

与[其他的]基于HTTP的绑定不同[...],该绑定使用了一个编码项WebMessageEncoding,这是.NET Framework 3.5版本中的WCF新增加的特性。该选项不会添加或移除SOAP标头。相反,它会为呈现的内容实现三种不同的选项:基于文本的XML编码,JSON编码和不透明的二进制编码,后者对于某些场景会非常有用,例如传递JPEG文件。作为一种HTTP绑定,出于安全性考虑,WebHttpBinding同样可以被配置为使用HTTPS。

操作会被映射为HTTP动作,例如GET,PUT,POST或者DELETE,可以通过WebGet或WebInvoke特性在WCF的服务契约上进行标记。因为REST方式“必然意味着要操作URIs”,WCF提供某种手段来负责管理“大量相似的URIs”:URI模板。“这些模板的目的在于简化开发者表示URI模式以及处理匹配这些模式的UIRs的工作”

POX与Syndication(RSS,ATOM),使用WCF的REST模式,可以发送POX(Plain Old XML)消息或者使用联合(Syndication)格式。

POX,RSS和ATOM均为格式,而非协议。正因为此,并不需要特定的WCF绑定来使用它们。通常,它们都可以直接通过HTTP进行传送,由于没有SOAP标头,因此绑定的最佳选择是使用WebHttpBinding。

商务营运(LOB)应用程序的通信。

WCF支持正在开发的客户端与不提供Web Service接口的应用程序之间的通信:

对此,一个重要的范例就是与LOB应用程序的通信,例如SAP。[...]


共2页: 1 [2] 下一页
【内容导航】
专题
ASP.NET 2.0基础开发指南
.NET移动与嵌入式技术专题
.NET Framework新手入门专题
VS.NET实用开发专题
ADO.NET实用技巧专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看69014次)
·UML类图详解 (查看63276次)
·UML统一建模语言 (查看34427次)
·C#技术开发指南 (查看32684次)
·Java编程开发手册 (查看30877次)
·Java编程开发手册 (1196个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (308个砖)
·.NET开发手册 (238个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (654个好)
·Java基础教程 (574个好)
·.NET开发手册 (271个好)
·PB开发教程 (212个好)
·Delphi开发技术手册 (187个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。