软件开发技术始终处于变迁之中,更新速度有时候甚至超过了定义硬件发展的摩尔定律值。诚然,软件设计思想的发展略微滞后,然而在这过往几十年来,设计思想却仍然经历了数次重大的变迁。每一次变迁都会给整个软件开发行业带来翻天覆地的变化。在最近十余年,就在面向对象设计与面向组件设计已经成为软件开发的主流开发方法之时,软件设计又开始踏上面向服务设计的崭新之路。
从面向组件设计到面向服务设计无疑是软件设计的又一次重大飞跃,它摆脱了组件设计固有的约束与桎梏,不再依赖于实现的技术与平台,以“服务”为核心的实现原则,可以极大程度地解除组件之间的依赖关系,而面向服务框架在事务处理、安全控制、消息传输等方面提供的公共基础功能模块,又使得开发者可以从实现基础功能的工作中解放出来,服务的设计者可以只关注于与企业应用密切相关的业务逻辑。可以说,面向服务设计在互操作性、可扩展性、可重用性以及可伸缩性等诸多方面有着得天独厚的优势与巨大潜能。
是的,SOA(Service Oriented Application,面向服务应用程序)的时代已经到来!“弄潮儿向涛头立,手把红旗旗不湿”,软件开发人员从来都不缺乏弄潮儿迎接怒涛的勇气,谁能够坚定地走在更前面,谁就能够收获更广阔的视野。
WCF无疑为.NET开发者提供了决战SOA的制胜利刃。WCF是基于Windows平台下开发和部署服务的SDK,为服务提供了运行时环境,以便于开发者设计服务、部署服务与运行服务。WCF是.NET Framework 3.0的一个重要组成部分,它集成了.NET Remoting,Web服务,WSE以及MSMQ的所有特性,使得开发者能够以统一的方式开发面向服务的应用程序。
在WCF还未推出正式版本(当时被命名为Indigo)的时候,我就开始关注于它的技术元素与技术发展。出于对SOA的认知,我能够预见到WCF的远大前程。无疑,WCF是Microsoft软件产品战略中针对企业级应用的重要产品。以WCF为基础框架搭建面向服务的企业级应用程序,以WF工作流引擎支撑企业应用中业务流程的传递与控制,以Cardspace以及WCF固有的安全策略保证企业信息的安全,最后以ASP.NET AJAX、WPF以及Silverlight丰富客户端界面与企业客户的体验,这就是Microsoft实现企业级应用的霸业宏图。WCF在其中的地位举足轻重。
本书可以称得上是介绍WCF技术的开山之作。它全面准确地为我们描绘了一幅WCF画卷的清明上河图。Juval Löwy作为全世界享有盛誉的分布式系统专家,一位循循善诱的技术讲师与作家,一方面具有高屋建瓴的体系架构知识,同时又能够细致入微地观察技术细节,然后用深入浅出的语言转换为通俗易懂的著作。就像清明上河图一般,巨细无遗,浑然天成。
我很荣幸自己能够翻译Juval Löwy的这本巨著。然而,在兴奋之余,也难免感到诚惶诚恐。对于一本书而言,译者的翻译可以称得上是书籍的第二次生命,“信”乃其骨,“达”乃其肉,“雅”则为其貌。我担心自己拙劣的翻译会让这本书的第二次生命成为一次苦难的历程。翻译自古难为,译者就像走钢丝绳的杂耍者,如果不能准确、优雅地表达原作者的含义,就会失去平衡,从高达数丈的钢丝绳上摔下来。然而,这份惶恐与踌躇,终究敌不过本书给我带来的诱惑,何况,我自有作为一名技术人员的几分自信。同时,在我的诚邀之下,徐宁先生的“加盟”无疑又为《WCF服务程序设计》的翻译加重了成功的砝码。作为Microsoft的MVP,徐宁先生曾经参与了Patrick Smacchia著作《Practical .NET 2 and C# 2》的翻译,拥有非常丰富的翻译经验。
本书的第7章、第9章以及第10章由徐宁先生翻译,而我则负责翻译除这几章之外的所有章节,同时包括附录、序、前言以及第10章的部分章节,并负责全书的技术审校。由于译者技术水平有限,疏漏在所难免,敬请广大读者指正。