WCF 3.5揭秘(来自微软WCF开发团队的权威之作)
基本信息
- 作者: (美)Craig McMurtry Matt Winkler Marc Mercuri Nigel Watling [作译者介绍]
- 译者: 赵科平 龚岑
- 丛书名: 图灵程序设计丛书 C#与.NET系列
- 出版社:人民邮电出版社
- ISBN:9787115211804
- 上架时间:2009-9-11
- 出版日期:2009 年9月
- 开本:16开
- 页码:535
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > .NET > 综合
编辑推荐
来自微软WCF开发团队的权威之作.
从这里,开始.NET企业级开发之旅..
实战性极强的80多个经典示例...
内容简介回到顶部↑
本书是wcf领域内少有的经典著作,以wcf的预备知识开篇,以rest和plain xml服务的具体案例分析结束全书,全面而深入地讲解了wcf技术的各个知识点。具体包括wf、使用wcf和wf、wcs、信息卡、标识元系统、与com+集成、定制行为、定制信道、定制传输、发布/订阅系统以及对等通信等。本书不仅系统地阐述了wcf的重要理论知识,而且还提供了大量的实例和解决常见问题的最佳方案。它是wcf开发团队集体智慧的结晶,是进行wcf开发必备的参考书。.
本书适合于各层次的.net开发者。...
本书适合于各层次的.net开发者。...
作译者回到顶部↑
本书提供作译者介绍
本书的四位作者都是微软公司WCF开发团队成员,负责向社区传播并帮助客户成功实践最新的WCF技术。他们能够在第一时间获得第一手资料,自然对这项技术有着其他人不具备的深入理解。而且重要的是,他们花了大量时间来帮助企业和软件提供商使用WCF,在应对各种难题时都游刃有余。更值得庆幸的是,作者将这些宝贵的经验都融入到了本书中。...
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第一部分 wcf简介...
第1章 预备知识 2
1.1 分部类型 2
1.2 泛型 3
1.3 可空值类型 5
1.4 轻量级事务管理器 7
1.5 角色提供程序 8
1.6 小结 10
1.7 参考文献 10
第2章 基础知识 11
2.1 背景知识 11
2.2 输入服务(enter services) 13
2.3 wcf 15
2.4 服务模型 16
2.4.1 软件资源 20
2.4.2 创建一个访问资源的服务 22
2.4.3 使用服务 36
2.4.4 在iis中承载服务 46
2.4.5 改变服务通信方式 50
2.5 visual studio 2008工具支持 52
第1章 预备知识 2
1.1 分部类型 2
1.2 泛型 3
1.3 可空值类型 5
1.4 轻量级事务管理器 7
1.5 角色提供程序 8
1.6 小结 10
1.7 参考文献 10
第2章 基础知识 11
2.1 背景知识 11
2.2 输入服务(enter services) 13
2.3 wcf 15
2.4 服务模型 16
2.4.1 软件资源 20
2.4.2 创建一个访问资源的服务 22
2.4.3 使用服务 36
2.4.4 在iis中承载服务 46
2.4.5 改变服务通信方式 50
2.5 visual studio 2008工具支持 52
前言回到顶部↑
WCF(Windows Communication Foundation,开发代号Indigo)是一种实现软件中的不同部分相互通信的技术。当前有许多其他类似的技术,包括COM(Component Object Model,组件对象模型)和DCOM(分布式组件对象模型)、RMI(Remote Method Invocation,远程方法调用)、MSMQ(Microsoft Message Queuing,微软消息队列)和WebSphere MQ。这些技术在某些应用场景中是很有效的,但是在其他场景中并不见得有效,甚至有的时候根本无法使用。WCF意在成为一种可以在微软.NET程序集(assembly)需要和其他软件实体交换数据的任何场景中都适用的技术。实际上,WCF要成为最好的解决方案,其性能与其他技术相比至少相当,通常还要更好,它提供的功能特性一点也不少,只会更多,而且它的确是最简单的解决方案。.
具体地说,WCF由数个.NET库组成,这些库中包含了几组添加到微软.NET Famework类库中的新类,并且它们运行在.NET CLR(Common Language Runtime,公共语言运行库)2.0上。它添加了一些工具,以使内建在Windows操作系统中的Web服务器——IIS 5.1及其以上版本能运行WCF解决方案。
WCF是和WPF(开发代号Avalon)、WCS(Windows CardSpace,开发代号InfoCard)以及WF一起免费发布的。在正式发布前,这一组技术称为WinFX,后来在2006年6月改名为.NET Framework 3.0。尽管名字这么叫,.NET Framework 3.0和3.5其实只是一组添加到.NET Framework 2.0中的仍然运行在2.0版.NET CLR上的类,它还对Windows操作系统做了一些相应的改进,如图0-1所示。
图0-1 .NET Framework 3.0
可以在Windows XP SP2、Windows Server 2003和Windows Server 2003 R2上安装.NET Framework 3.0和3.5,Windows Vista上已经预装了运行库组件。在Windows Server 2008中,你可以通过应用服务器基础角色服务来添加.NET Framework 3.0。.NET Framework 3.0中只有一小部分功能特性是Windows Vista和更新版本操作系统所特有的。
.NET Framework 3.5是在.NET Framework 3.0之上扩充的。本书提及的特性包括构建WCF服务需要的Web协议支持,包括AJAX、JSON、REST、POX、RSS 和 ATOM,以及启用工作流(workflow-enabled)服务和Visual Studio 2008的完全工具支持。在开发期间,.NET Framework 3.5被分为“红”位和“绿”位 。“红”位指.NET Framework 3.0的一些特性,目的是提供服务包级别的兼容性。所有可以运行在3.0中的代码均可运行在3.5中。“绿”位则提供新增特性。此外,程序集包含新功能的新增部分将不会影响现有代码。也就是说本书的所有代码都将工作在.NET Framework 3.5中,并且本书中的所有代码应该可以工作在.NET Framework 3.0中(除了那些介绍.NET Framework 3.5新增代码的部分)。
本书并不是包罗万象的WCF百科全书,而是提供了在大多数实际应用中使用WCF所需的知识。
本书通过演示如何使用WCF来解释它的各个方面。所以,一般每一章都会给出一个能展示这项技术某方面应用的实例,并且会提供创建该实例每个步骤的详细解释。所有会用C#编程的读者若想边做边学,都可以遵循这些步骤。而那些只是希望阅读本书的读者也可以详细了解到WCF的各个特性以及如何使用它们。
为了运行各章节提供的例子,需要安装带有C#编译器的任何版本的Visual Studio 2005或2008。http://msdn. microsoft.com/vstudio/express/上有免费版本供下载。同时还需要安装IIS、ASP.NET和MSMQ。
当然,.NET Framework 3.0或者3.5是必需的,可以从http://www.microsoft.com/downloads/下载。各章中的操作指南都假定读者已经安装了.NET Framework 3.0或者3.5的所有运行库和开发组件。运行库组件由Windows Vista预装,或在Windows Server 2008上通过服务器管理器添加。开发组件由一个SDK(Software Development Kit,软件开发工具包)和两个Visual Studio 2005的升级包组成。SDK提供了文档、一些管理工具和很多有用的示例。而升级包对Visual Studio 2005增加了编辑配置文件时的智能提示,以及为WF工作流提供了可视化的设计器。这些特性同样包含在Visual Studio 2008中。
本书同样介绍了WCS的内容。为了能充分利用WCS提供的功能,读者需要安装IE 7。IE 7可以从http://www.microsoft.com/downloads下载。
每章所提供的解决方案的源代码可以从出版商的网站上下载 ,也可以从http://www. cryptmaker.com/WindowsCommunicationFoundationUnleashed上下载。为了避免Visual Studio弹出对话框说明示例代码是从不可信地址获得的,在解压下载的压缩文件包之前,读者可以右键单击压缩包,在弹出的菜单中选择Properties(属性),然后再单击Unblock(解除锁定)按钮(如图0-2所示)。 ..
图0-2 解锁下载的代码压缩包
Vista操作系统支持用Visual Studio 2008进行开发,而当安装SP1中的一个更新后,它也将支持使用Visual Studio 2005进行开发。在Vista操作系统中使用较早版本的Visual Studio 2005的开发者会碰到一些兼容性问题。在这种情况下,可以做两件事情尽量减少这些问题。第一,禁用Vista的用户账户保护(User Account Protection)功能;第二,在启动Visual Studio 2005时,总是从可执行文件或快捷方式的右键菜单中选择Run As,然后从Run As对话框中选择一个管理员账户。
正如.NET Framework 3.5和.NET Framework 3.0的差别一样,本书与上一版的差别也体现在这些方面。新增内容有Visual Studio 2008支持,第3章现在包含了持久化服务。WCS章节则更新了操作界面以及一些新特性。第18章新增了新的联合以及JSON API。最重要的改变则是重写了第6章,使得WCF和WF的整合上有了大量的改进。
许多人为本书的出版做出了贡献。作者希望感谢以下人士:Joe Long、Eric Zinda、Angela Mills、Omri Gazitt、Steve Swartz、Steve Millet、Mike Vernal、Doug Purdy、Eugene Osvetsky、Daniel Roth、Ford McKinstry、Craig McLuckie、Alex Weinert、Shy Cohen、Yasser Shohoud、Kenny Wolf、Anand Rajagopalan、Jim Johnson、Andy Milligan、Steve Maine、Ram Pamulapati、Ravi Rao、Mark Garbara、Andy Harjanto、T. R. Vishwanath、Doug Walter、Martin Gudgin、Marc Goodner、Giovanni Della-Libera、Kirill Gavrylyuk、Krish Srinivasan、Mark Fussell、Richard Turner、Ami Vora、Ari Bixhorn、Steve Cellini、Neil Hutson、Steve DiMarco、Gianpaolo Carraro、Steve Woodward、James Conard、Nigel Watling、Vittorio Bertocci、Blair Shaw、Jeffrey Schlimmer、Matt Tavis、Mauro Ottoviani、John Frederick、Mark Renfrow、Sean Dixon、Matt Purcell、Cheri Clark、Mauricio Ordonez、Neil Rowe、Donovan Follette、Pat Altimore、Tim Walton、Manu Puri、Ed Pinto、Erik Weiss、Suwat Chitphakdibodin、Govind Ramanathan、Ralph Squillace、John Steer、Brad Severtson、Gary Devendorf、Kavita Kamani、George Kremenliev、Somy Srinivasan、Natasha Jethanandani、Ramesh Seshadri、Lorenz Prem、Laurence Melloul、Clemens Vasters、Joval Lowy、John Justice、David Aiken、Larry Buerk、Wenlong Dong、Nicholas Allen、Carlos Figueira、Ram Poornalingam、Mohammed Makarechian、David Cliffe、David Okonak、Atanu Banerjee、Steven Metsker、Antonio Cruz、Steven Livingstone、Vadim Meleshuk、Elliot Waingold、Yann Christensen、Scott Mason、Jan Alexander、Johan Lindfors、Hanu Kommalapati、Steve Johnson、Tomas Restrepo、Tomasz Janczuk、Garrett Serack、Jeff Baxter、Arun Nanda、Luke Melton 以及Al Lee。
这里还要感谢John Lambert对本书的初稿进行审校。没有人能比一个专业而又富有经验的软件测试工程师更加适合审阅本书中与编程技术相关的内容了。现在,书中遗留的任何错误都归咎于我们作者自己。
我们还要特别感谢妻子们的支持,她们是Marta MacNeill、Kathryn Mercuri、Sylvie Watling和Libby Winkler。在目前,Matt是我们中唯一一个当父亲的人,他还要感谢他的女儿Grace。...
具体地说,WCF由数个.NET库组成,这些库中包含了几组添加到微软.NET Famework类库中的新类,并且它们运行在.NET CLR(Common Language Runtime,公共语言运行库)2.0上。它添加了一些工具,以使内建在Windows操作系统中的Web服务器——IIS 5.1及其以上版本能运行WCF解决方案。
WCF是和WPF(开发代号Avalon)、WCS(Windows CardSpace,开发代号InfoCard)以及WF一起免费发布的。在正式发布前,这一组技术称为WinFX,后来在2006年6月改名为.NET Framework 3.0。尽管名字这么叫,.NET Framework 3.0和3.5其实只是一组添加到.NET Framework 2.0中的仍然运行在2.0版.NET CLR上的类,它还对Windows操作系统做了一些相应的改进,如图0-1所示。
图0-1 .NET Framework 3.0
可以在Windows XP SP2、Windows Server 2003和Windows Server 2003 R2上安装.NET Framework 3.0和3.5,Windows Vista上已经预装了运行库组件。在Windows Server 2008中,你可以通过应用服务器基础角色服务来添加.NET Framework 3.0。.NET Framework 3.0中只有一小部分功能特性是Windows Vista和更新版本操作系统所特有的。
.NET Framework 3.5是在.NET Framework 3.0之上扩充的。本书提及的特性包括构建WCF服务需要的Web协议支持,包括AJAX、JSON、REST、POX、RSS 和 ATOM,以及启用工作流(workflow-enabled)服务和Visual Studio 2008的完全工具支持。在开发期间,.NET Framework 3.5被分为“红”位和“绿”位 。“红”位指.NET Framework 3.0的一些特性,目的是提供服务包级别的兼容性。所有可以运行在3.0中的代码均可运行在3.5中。“绿”位则提供新增特性。此外,程序集包含新功能的新增部分将不会影响现有代码。也就是说本书的所有代码都将工作在.NET Framework 3.5中,并且本书中的所有代码应该可以工作在.NET Framework 3.0中(除了那些介绍.NET Framework 3.5新增代码的部分)。
本书并不是包罗万象的WCF百科全书,而是提供了在大多数实际应用中使用WCF所需的知识。
本书通过演示如何使用WCF来解释它的各个方面。所以,一般每一章都会给出一个能展示这项技术某方面应用的实例,并且会提供创建该实例每个步骤的详细解释。所有会用C#编程的读者若想边做边学,都可以遵循这些步骤。而那些只是希望阅读本书的读者也可以详细了解到WCF的各个特性以及如何使用它们。
为了运行各章节提供的例子,需要安装带有C#编译器的任何版本的Visual Studio 2005或2008。http://msdn. microsoft.com/vstudio/express/上有免费版本供下载。同时还需要安装IIS、ASP.NET和MSMQ。
当然,.NET Framework 3.0或者3.5是必需的,可以从http://www.microsoft.com/downloads/下载。各章中的操作指南都假定读者已经安装了.NET Framework 3.0或者3.5的所有运行库和开发组件。运行库组件由Windows Vista预装,或在Windows Server 2008上通过服务器管理器添加。开发组件由一个SDK(Software Development Kit,软件开发工具包)和两个Visual Studio 2005的升级包组成。SDK提供了文档、一些管理工具和很多有用的示例。而升级包对Visual Studio 2005增加了编辑配置文件时的智能提示,以及为WF工作流提供了可视化的设计器。这些特性同样包含在Visual Studio 2008中。
本书同样介绍了WCS的内容。为了能充分利用WCS提供的功能,读者需要安装IE 7。IE 7可以从http://www.microsoft.com/downloads下载。
每章所提供的解决方案的源代码可以从出版商的网站上下载 ,也可以从http://www. cryptmaker.com/WindowsCommunicationFoundationUnleashed上下载。为了避免Visual Studio弹出对话框说明示例代码是从不可信地址获得的,在解压下载的压缩文件包之前,读者可以右键单击压缩包,在弹出的菜单中选择Properties(属性),然后再单击Unblock(解除锁定)按钮(如图0-2所示)。 ..
图0-2 解锁下载的代码压缩包
Vista操作系统支持用Visual Studio 2008进行开发,而当安装SP1中的一个更新后,它也将支持使用Visual Studio 2005进行开发。在Vista操作系统中使用较早版本的Visual Studio 2005的开发者会碰到一些兼容性问题。在这种情况下,可以做两件事情尽量减少这些问题。第一,禁用Vista的用户账户保护(User Account Protection)功能;第二,在启动Visual Studio 2005时,总是从可执行文件或快捷方式的右键菜单中选择Run As,然后从Run As对话框中选择一个管理员账户。
正如.NET Framework 3.5和.NET Framework 3.0的差别一样,本书与上一版的差别也体现在这些方面。新增内容有Visual Studio 2008支持,第3章现在包含了持久化服务。WCS章节则更新了操作界面以及一些新特性。第18章新增了新的联合以及JSON API。最重要的改变则是重写了第6章,使得WCF和WF的整合上有了大量的改进。
许多人为本书的出版做出了贡献。作者希望感谢以下人士:Joe Long、Eric Zinda、Angela Mills、Omri Gazitt、Steve Swartz、Steve Millet、Mike Vernal、Doug Purdy、Eugene Osvetsky、Daniel Roth、Ford McKinstry、Craig McLuckie、Alex Weinert、Shy Cohen、Yasser Shohoud、Kenny Wolf、Anand Rajagopalan、Jim Johnson、Andy Milligan、Steve Maine、Ram Pamulapati、Ravi Rao、Mark Garbara、Andy Harjanto、T. R. Vishwanath、Doug Walter、Martin Gudgin、Marc Goodner、Giovanni Della-Libera、Kirill Gavrylyuk、Krish Srinivasan、Mark Fussell、Richard Turner、Ami Vora、Ari Bixhorn、Steve Cellini、Neil Hutson、Steve DiMarco、Gianpaolo Carraro、Steve Woodward、James Conard、Nigel Watling、Vittorio Bertocci、Blair Shaw、Jeffrey Schlimmer、Matt Tavis、Mauro Ottoviani、John Frederick、Mark Renfrow、Sean Dixon、Matt Purcell、Cheri Clark、Mauricio Ordonez、Neil Rowe、Donovan Follette、Pat Altimore、Tim Walton、Manu Puri、Ed Pinto、Erik Weiss、Suwat Chitphakdibodin、Govind Ramanathan、Ralph Squillace、John Steer、Brad Severtson、Gary Devendorf、Kavita Kamani、George Kremenliev、Somy Srinivasan、Natasha Jethanandani、Ramesh Seshadri、Lorenz Prem、Laurence Melloul、Clemens Vasters、Joval Lowy、John Justice、David Aiken、Larry Buerk、Wenlong Dong、Nicholas Allen、Carlos Figueira、Ram Poornalingam、Mohammed Makarechian、David Cliffe、David Okonak、Atanu Banerjee、Steven Metsker、Antonio Cruz、Steven Livingstone、Vadim Meleshuk、Elliot Waingold、Yann Christensen、Scott Mason、Jan Alexander、Johan Lindfors、Hanu Kommalapati、Steve Johnson、Tomas Restrepo、Tomasz Janczuk、Garrett Serack、Jeff Baxter、Arun Nanda、Luke Melton 以及Al Lee。
这里还要感谢John Lambert对本书的初稿进行审校。没有人能比一个专业而又富有经验的软件测试工程师更加适合审阅本书中与编程技术相关的内容了。现在,书中遗留的任何错误都归咎于我们作者自己。
我们还要特别感谢妻子们的支持,她们是Marta MacNeill、Kathryn Mercuri、Sylvie Watling和Libby Winkler。在目前,Matt是我们中唯一一个当父亲的人,他还要感谢他的女儿Grace。...
序言回到顶部↑
上 一 版 序
我从2001年开始从事WCF(那时称为“Indigo”)的研发工作,当时我们还是一个小团队,我应该是第20位加入该团队的成员。在该团队任职期间,我是存储、可管理性、可靠消息和队列方面的项目经理主管。我们的团队有一个宏伟的愿景:通过为Web服务创建一个基础,使之可以实际应用到广泛的分布式计算问题上,促进下一代Web服务的发展。我们希望确保为各种业务而实现的Web服务可以提供安全的通信——机密性、签名、联合,于是分布式计算客户就可以为现实世界中的通信使用Web服务。我们希望确保Web服务可以融入到ACID模型的事务中,确保其能与数据驱动的系统或那些事务性计算任务进行有效的交互。我们希望确保Web服务可以某种方式编写,从而使广域的松散性不会再约束有意义的分布式应用程序的开发。在这些应用程序中,消息能以发送的次序达到你想发送的地址。这些目标如此涉及底层,现在看起来甚至有点奇怪,但是要知道,在2001年我们都接受这样的事实:当创建分布式系统时,其中的大部分工作都需要自力更生。.
我们也知道大部分的计算环境都是异构的,许多厂商的系统同时并存,所以我们希望通过伟大的Web服务技术标准确保互操作性。我们决心实现良好的互操作性,并且全力地实现了目标。要在底层实现广泛的互操作性,WS-Security、WSAtomicTransactions、WS-ReliableMessaging、WS-Management、WS-Policy、WS-Transfer、WS-Eventing等协议都是必需的。但是,我们开始这个项目时什么都没有,它们都是由WCF团队的同事们后来实现的。回顾以前,我们可能会说:“我们当然希望通过被广泛接受的、可以相互组合的多个Web服务标准使用其他系统。”然而,这在2001年却是一个高不可攀的目标。
我们希望支持一种单一的编程模型,使开发者从面向消息转向远程过程性模式,或者从TCP转向HTTP或MSMQ等队列协议时,不需要从头学起。面对.NET Remoting、ASMX、Socket、MSMQ等众多的编程模型,用一套统一的API完成上述各模型的任务显然很困难,但我们仍然迎难而上。我们希望支持可扩展性,这样再出现新的消息交换模式、协议或加密机制时,也无需另外一种编程模式了。
作为首席项目经理,我帮助贯彻了可管理性这一理念,也就是任何应该交给IT专家决定的信息(当前的协议、加密机制、服务地址、监视,等等)都尽可能交给他们。这又是一个极高的目标:我们希望用WCF创建的应用程序具有最好的跟踪、监控和控制功能,易于通过优秀的配置和跟踪工具使用,而且能通过WMI与所有的Windows管理工具集成。简单地说,这个目标就是让使用WCF创建的应用程序比基于其他框架创建的应用程序更具可管理性,而且管理成本更低。..
我们希望为现实世界创建重要的分布式应用程序能变得简单而又有趣,这可能是我们最富雄心的目标。我们希望直观地引导开发者创建符合分布式系统最佳实践的应用程序。正如Steve Swartz(“简单而又有趣”最忠实的倡导者)所告诉我的,我们的目标是创建这样的一个框架,“如果你在山顶放一个球并让它滚下来,它就会自然地在一个地方停下来,这个地方有一个构架优良的服务,它帮你避免了分布式系统开发者在过去20年里犯下的所有错误。”
那我们做得怎么样呢?看看在Vista中和网络上作为.NET 3.0一部分发布的最终产品,我认为我们做得相当不错。WCF是一个统一的、可扩展的框架,它确实可以帮助你以一个统一的框架去创建现实世界中的安全的、可信赖的、互操作的、可管理的分布式应用程序,而且这个过程实际上很有趣(至少对于喜欢编程的人来说是这样的)。这花了我们六年时间,但是我们实现了所有的主要目标。实际上,我非常喜欢这个产品,现在我的“新”工作就是为微软创建完全基于WCF所提供的功能的新产品,以推广WCF(我现在很享受这份工作)。这个团队中的每位开发人员和项目经理的书架上都有这本书,几乎我们所有的人都把这本书作为开发或使用Web服务的必备参考书,其中还包括几位实际上开发了WCF的开发人员和项目经理。
最后说说Craig吧。我和Craig认识的时候,他身为WCF技术的传道者。他的精力和对项目的热情很有感染力,他是WCF的最忠实拥护者。要是有人问起:“我们可以支持这样的场景吗?”在90%的情况下Craig大概会这样回答:“哦,可以的,我上个星期就试过了,这是原型。”站在他的角度,他可以看到我们这些专注于具体功能特性的人所看不到的全貌。WCF能有今天,他直率的反馈、技术深度和热情功不可没。我相信他对WCF的热情和广博的知识会在每一个章节里闪光,我保证你会像我们一样,发现这是一本令人愉快的、有启发性的而且很有用的书。...
Alex Weinert
微软公司团队项目经理
我从2001年开始从事WCF(那时称为“Indigo”)的研发工作,当时我们还是一个小团队,我应该是第20位加入该团队的成员。在该团队任职期间,我是存储、可管理性、可靠消息和队列方面的项目经理主管。我们的团队有一个宏伟的愿景:通过为Web服务创建一个基础,使之可以实际应用到广泛的分布式计算问题上,促进下一代Web服务的发展。我们希望确保为各种业务而实现的Web服务可以提供安全的通信——机密性、签名、联合,于是分布式计算客户就可以为现实世界中的通信使用Web服务。我们希望确保Web服务可以融入到ACID模型的事务中,确保其能与数据驱动的系统或那些事务性计算任务进行有效的交互。我们希望确保Web服务可以某种方式编写,从而使广域的松散性不会再约束有意义的分布式应用程序的开发。在这些应用程序中,消息能以发送的次序达到你想发送的地址。这些目标如此涉及底层,现在看起来甚至有点奇怪,但是要知道,在2001年我们都接受这样的事实:当创建分布式系统时,其中的大部分工作都需要自力更生。.
我们也知道大部分的计算环境都是异构的,许多厂商的系统同时并存,所以我们希望通过伟大的Web服务技术标准确保互操作性。我们决心实现良好的互操作性,并且全力地实现了目标。要在底层实现广泛的互操作性,WS-Security、WSAtomicTransactions、WS-ReliableMessaging、WS-Management、WS-Policy、WS-Transfer、WS-Eventing等协议都是必需的。但是,我们开始这个项目时什么都没有,它们都是由WCF团队的同事们后来实现的。回顾以前,我们可能会说:“我们当然希望通过被广泛接受的、可以相互组合的多个Web服务标准使用其他系统。”然而,这在2001年却是一个高不可攀的目标。
我们希望支持一种单一的编程模型,使开发者从面向消息转向远程过程性模式,或者从TCP转向HTTP或MSMQ等队列协议时,不需要从头学起。面对.NET Remoting、ASMX、Socket、MSMQ等众多的编程模型,用一套统一的API完成上述各模型的任务显然很困难,但我们仍然迎难而上。我们希望支持可扩展性,这样再出现新的消息交换模式、协议或加密机制时,也无需另外一种编程模式了。
作为首席项目经理,我帮助贯彻了可管理性这一理念,也就是任何应该交给IT专家决定的信息(当前的协议、加密机制、服务地址、监视,等等)都尽可能交给他们。这又是一个极高的目标:我们希望用WCF创建的应用程序具有最好的跟踪、监控和控制功能,易于通过优秀的配置和跟踪工具使用,而且能通过WMI与所有的Windows管理工具集成。简单地说,这个目标就是让使用WCF创建的应用程序比基于其他框架创建的应用程序更具可管理性,而且管理成本更低。..
我们希望为现实世界创建重要的分布式应用程序能变得简单而又有趣,这可能是我们最富雄心的目标。我们希望直观地引导开发者创建符合分布式系统最佳实践的应用程序。正如Steve Swartz(“简单而又有趣”最忠实的倡导者)所告诉我的,我们的目标是创建这样的一个框架,“如果你在山顶放一个球并让它滚下来,它就会自然地在一个地方停下来,这个地方有一个构架优良的服务,它帮你避免了分布式系统开发者在过去20年里犯下的所有错误。”
那我们做得怎么样呢?看看在Vista中和网络上作为.NET 3.0一部分发布的最终产品,我认为我们做得相当不错。WCF是一个统一的、可扩展的框架,它确实可以帮助你以一个统一的框架去创建现实世界中的安全的、可信赖的、互操作的、可管理的分布式应用程序,而且这个过程实际上很有趣(至少对于喜欢编程的人来说是这样的)。这花了我们六年时间,但是我们实现了所有的主要目标。实际上,我非常喜欢这个产品,现在我的“新”工作就是为微软创建完全基于WCF所提供的功能的新产品,以推广WCF(我现在很享受这份工作)。这个团队中的每位开发人员和项目经理的书架上都有这本书,几乎我们所有的人都把这本书作为开发或使用Web服务的必备参考书,其中还包括几位实际上开发了WCF的开发人员和项目经理。
最后说说Craig吧。我和Craig认识的时候,他身为WCF技术的传道者。他的精力和对项目的热情很有感染力,他是WCF的最忠实拥护者。要是有人问起:“我们可以支持这样的场景吗?”在90%的情况下Craig大概会这样回答:“哦,可以的,我上个星期就试过了,这是原型。”站在他的角度,他可以看到我们这些专注于具体功能特性的人所看不到的全貌。WCF能有今天,他直率的反馈、技术深度和热情功不可没。我相信他对WCF的热情和广博的知识会在每一个章节里闪光,我保证你会像我们一样,发现这是一本令人愉快的、有启发性的而且很有用的书。...
Alex Weinert
微软公司团队项目经理
媒体评论回到顶部↑
“微软WCF开发团队中的每一位项目经理和开发人员都有这本书——我们几乎所有人都把这本书作为开发或使用Web服务的必备参考书。你一定会像我们一样,发现这是一本令人愉快、有启发性而且很有用的书。”.
——Alex Weinert,微软公司WCF开发团队项目经理
“要学习WCF,你只需要这本书和WCF SDK!它讲解了对于WCF开发者来说最重要的主题,而且非常易于理解。强烈推荐!”...
——Amazon读者评论
——Alex Weinert,微软公司WCF开发团队项目经理
“要学习WCF,你只需要这本书和WCF SDK!它讲解了对于WCF开发者来说最重要的主题,而且非常易于理解。强烈推荐!”...
——Amazon读者评论
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· InfoQ中文站论坛:.NET讨论区(InfoQ .NET)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· WCF的开山之作 WCF画卷的清明上河图(WCF WF WPF)
· 图灵公司详细书目

点击看大图





加载中...
