<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>SOA 观念提出后,经过多年的时间终于开始发酵。微软世界里因 WCF 的出现,简化了实做的基础。SOA 强调如下的重点:
l 一切技术遵循公开标准
l 服务定义的边界明确
l 服务自主而不受制于其他服务
l 服务间只共享合约和原则
这些概念既抽象,实际设计与撰写也很繁琐,且维护不易,WCF 则尽量将我们所需要开发的商业逻辑与 SOA 的基本要求分开。系统开发人员依然专注在使用者的需求,若要满足 SOA 的特性,仅需要照着 WCF 的规范提供定义后,就交由平台去负责。
换句话说,要落实 SOA 的概念,需要容易开发自定服务的整合环境与执行平台。在强调组装、重用与整合下,程序如何遵循标准,共享数据合约和服务合约,而非绑死在基本数据型态和类别?在开放架构下,跨异质型平台的沟通变成是基本,如何弹性、安全、有效率地沟通?当上述问题变成是基本需求,则根稳固才会枝繁叶茂。微软就此推出了 WCF,为架构工程师和程序设计师清除了底层的障壁。
什么是 WCF
WCF 全名是 Windows Communication Foundation,程序代码名称为 ”Indigo”,是建立在 .NET 上的应用程序沟通框架,集微软分布式应用经验之大成。整合了 .Net 平台和分布式计算相关的技术,如.Net Remoting、Web Service/WSE/WS-*、分布式交易(.NET Enterprise)和讯息处理(MSMQ),以及以往的 COM+/DCOM 等技术。提供开发者建立跨平台、安全、可信赖、交易管理的解决方案,且与既有系统兼容。
WCF 内建于.Net Framework 3.0。Windows Vista 及 Windows 2008 操作系统会预含该架构。而 Windows XP 和 Windows 2003 操作系统也可以单独安装 .NET Framework 3,0 Runtime。现今通行的 Visual Studio 2005 中并没有包含WCF,但可自微软的网站下载 Visual Studio 2005 extensions for .NET Framework 3.0,以方便开发架在 WCF 上的系统。
总而言之,WCF将所有与程序沟通相关的技术都包含在内,并替你实做了 OASIS 组织所定义一堆的 WS-* 标准规格[1]。而熟悉 WCF 是简化 SOA 开发的第一步。
WCF 的优点
概括地说,WCF具有如下的好处:
l 统一:如前所述,WCF 整合微软历来分布式开发的技术。
l 相容:充分与旧有系统兼容。安装WCF并不会影响企业内原有的技术,且仍可与其沟通。
l 整合:WCF支持多种通信协议以保证系统间的互操作性,且期待经由标准的 WS-*/Web Service/SOAP 等规格,可跨异质型平台整合。
l 安全:支持 WS-* 所规范的多种安全机制,如 WS-Security,WS-Trust 和WS-SecureConversation 等标准,以用于用户认证,数据完整性验证,数据隐私等多种安全议题。
l 可信赖的讯息沟通:一般对可信赖的讯息沟通之要求可大分为两部分,一是安全,另一是两端收发讯息的质量。安全的部分如前点所述,WCF 同时支持 WS-ReliableMessaging、WS-Addressing 标准,提供可信赖的端对端通信[2]。同时还支持 MTOM 规格(讯息传输优化机制,Message Transmission Optimization Mechanism),让大型二进制数据可以有效地传递。
l 整合队列(Queue):上述讯息质量指的是两端应用程序同时在在线之端对端沟通。而 WCF 也支持透过队列(Queue)传递讯息,让两端不必同时存在同一时空中。
l 交易管理:建立在 WS-Coordination 和 WS-AtomicTransaction 标准之上,以整合异质型平台的交易,提供分布式交易所需的两阶段完成交易协议(two-phase commit transactions)。
l 简化开发:让以往需徒手撰写的功能改以设定启动(依据微软举的例子,将原本需撰写 56296 行的程序代码简化成 3 行程序代码,4 行设定)。
光是表列这么多 WCF 的好处当然不够J,上图 1 的架构也非三言两语可以道尽。在此介绍一本关于 WCF 的好书「Microsoft Windows Communication Foundation Step by Step」,作者是 John Sharp,Microsoft Press 出版。它有着 Step by Step 系列书籍的特征,就是藉由许多实做范例导引你。但不同的是,本书所援引的技术广且深[3]。
书籍内容
本书共有十六个章节,利用前三章介绍了 WCF 的基本原理,其余针对不同的需求面向,深入解释并辅之以实做。第一章以简单范例启始,用架在 WCF 上的用户端应用程序呼叫服务。第二章介绍透过 .NET Framework 3.0 的 System.ServiceModel.ServiceHost 类别来承载我们所撰写的服务,但由于它只是一个类别,自己不会执行。作者进一步示范如何撰写 WPF 以及 Windows Service 两种应用程序类型来加载先前撰写的服务。
本书所涵盖的面向相当广泛,程序设计新手阅读起来可能会有点辛苦。换言之,你是个使用 Visual Studio 2005 的 C# 程序老手,且有网络结构、交易管理、安全等基本知识,则 WCF 将是一个工作利器。当然,若你是系统分析设计人员,或是架构工程师,也可以透过此书了解一下分布式系统应注意的事项。
相关阅读
除了本书之外,笔者列出些与 WCF 相关的资源供你参考:
l 微软对 WCF 的主网页:http://wcf.netfx3.com/,MSDN 对 WCF 的主网页:http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx。
l 制定 WS-* 标准的 OASIS (Organization for the Advancement of Structured Information Standards) 组织的首页:http://www.oasis-open.org/home/index.php。
l 另一本关于 WCF 不错的书:Inside Windows Communication Foundation,出版社 Microsoft Press,作者 Smith。这本书只有本文介绍的书三分之二的厚度,单就 WCF 本身介绍,并未延伸讨论。
最后,就个人对 WCF 的感觉是:我们实做信息系统的技术依然建立于 .Net 之上,以面向对象/组件导向的设计方式融入服务导向的精神后,WCF 将可简化与商业逻辑无关的部分。明年(2008/3月) Visual Studio 2008(Orcas) + Windows 2008(Longhorn) + IIS 7出来后,新一代的 AP Server 可以便利地整合 WCF,也有一致的开发与设定方式,分布式系统将有一番新气象。