您的浏览历史

WCF揭秘 (来自微软WCF开发团队的权威之作)(china-pub首发)

促销活动
  • [本书]参加人民邮电出版社满80元赠书活动
精彩评论

基本信息

编辑推荐

来自微软WCF开发团队的权威之作.
从这里,开始.NET企业级开发之旅..
实战性极强的80多个经典示例...

内容简介回到顶部↑

本书是WCF 领域内少有的经典著作,以WCF 的预备知识开篇,最后以REST 和Plain XML 服务的具体案例分析结束全书,全面而深入地讲解了WCF 技术的各个知识点,在广度和深度上都恰到好处。本书不仅系统地阐述了WCF 的重要理论知识,而且还提供了大量的实例和解决常见问题的最佳方案。它是WCF 开发团队集体智慧的结晶,是进行WCF 开发必备的参考书。
本书适合于各层次的.NET 开发者。

作译者回到顶部↑

本书提供作译者介绍

本书的四位作者都是微软公司WCF开发团队成员,负责向社区传播并帮助客户成功实践最新的WCF技术。他们能够在第一时间获得第一手资料,自然对这项技术有着其他人不具备的深入理解。更重要的是,他们花了大量时间来帮助企业和软件提供商使用WCF,在应对各种难题时都游刃有余。更值得庆幸的是,作者将这些宝贵的经验都融入到了本书中。
.. << 查看详细

目录回到顶部↑

第一部分 WCF简介
第1章 预备知识 2
1.1 简介 2
1.2 分部类型 2
1.3 泛型 3
1.4 可空值类型 5
1.5 轻量级事务管理器 6
1.6 角色提供程序 8
1.7 小结 9
1.8 参考文献 10
第2章 基础知识 11
2.1 背景知识 11
2.2 服务模型 16
2.2.1 软件资源 19
2.2.2 创建一个访问资源的服务 21
2.3 小结 51
2.4 参考文献 51
第3章 数据表示 52
3.1 背景知识 52
3.2 XmlSerializer和DataContractSerializer 53

译者序回到顶部↑

本书由Craig McMurtry、Marc Mercuri、Nigel Watling和Matt Winkler这4位微软WCF传道者共同撰写而成。他们和微软WCF开发团队保持着紧密的联系,当WCF还处于开发阶段时就开始参与其中。而且,他们中有的人还是CardSpace、WF等领域的技术专家。这些使得他们在编写此书时具备了无与伦比的优势。.
本书一共8个部分,分为21章,介绍了WCF的各个方面。作者对不同部分的讲解,在广度和深度上都恰到好处。例如,本书的第二部分和第三部分分别介绍了如何使WF和CardSpace这两项一同发布的技术与WCF协同工作,其中穿插了WF和CardSpace的介绍章节,它们以有限的篇幅精辟地阐述了这两项技术的基本概念和一般的应用场景,之前没有实际操作过WF和CardSpace的读者,也能很好地理解和操作,可以说是绝佳的入门介绍。又例如,在介绍如何扩展WCF时,作者将WCF相关部分的一些底层工作细节展现给读者,使读者能据此了解他们编写的定制行为、信道等是如何融入到WCF的构架中的。..
本书的另外一大特点就是采用了大量的示例,每一项技术的讲解都是以示例展开的。作者并没有简单地把代码贴上来,而是为每个示例提供了详尽的步骤,让读者可以完全依照这些步骤从无到有重现使用了相关技术的解决方案。本书还提供了所有代码和Visual Studio项目文件的下载地址,为读者提供了极大的方便。如果你在创建或使用WCF服务时碰到了一个不熟悉的应用场景,翻翻这本书,你很有可能找到一个相关的而且非常详尽的示例——它能作为你开始工作的非常好的起点。如此多可操作的示例也会让你的阅读过程变得非常有趣:看书的同时,打开Visual Studio,试试不同的代码和配置,你会有更多的发现。
作为原著者和中文读者之间的“传话人”,我希望能把作者所要表达的意思用中文完整且准确地传达出来,使更多的人能够从这本书中获益。由于水平有限,疏忽和纰漏在所难免,敬请各位读者朋友批评指正。欢迎大家提供宝贵意见与建议,我的E-mail是kpzhao@hotmail.com。
在此,我先要感谢本书的四位作者给广大读者奉献了这本好书。感谢Dflying之初为我和图灵公司之间牵线搭桥。感谢我的老板陈众先生、刘宗翰先生以及前老板黄振裕先生对翻译本书的支持。最后,感谢家人和朋友一直以来对我的支持和鼓励,让我坚持将这本书翻译完。
打开Visual Studio,开始尝试新的Web服务开发模式吧。...
赵科平

前言回到顶部↑

WCF(Windows Communication Foundation,开发代号Indigo)是一种使软件中的不同部分相互通信的技术。当前有许多其他类似的技术,包括COM(Component Object Model,组件对象模型)和DCOM(分布式组件对象模型)、RMI(Remote Method Invocation,远程方法调用)、MSMQ(Microsoft Message Queueing,Microsoft消息队列)和WebSphere MQ。所有这些技术在某些应用场景中是很有效的,但是在其他场景中并不那么有效,甚至有的时候根本无法使用。WCF意在成为一种可以在Microsoft .NET程序集(assembly)需要和其他软件实体交换数据的任何场景中都适用的技术。实际上,WCF是最好的解决方案。它的性能与其他技术相比至少相当,通常要更好,它提供的功能特性一点也不少,甚至更多,而且它的确是最简单的解决方案。.
具体地说,WCF由数个.NET库组成,这些库中包含了几组添加到Microsoft .NET Famework类库中的新类,并且它们运行在.NET CLR(Common Language Runtime,公共语言运行库)2.0上。它添加了一些工具,以使内建在Windows操作系统中的Web服务器——IIS 5.1和更新的版本能运行WCF解决方案。
WCF是和WPF、WCS(Windows CardSpace,开发代号InfoCard)以及WF一起免费发布的。在正式发布前,这一组技术称为WinFX,后来在2006年6月改名为.NET Framework 3.0。尽管名字这么叫,.NET Framework 3.0其实只是一组添加到.NET Framework 2.0中的仍然运行在2.0版.NET CLR上的类,它还对Windows操作系统做了一些相应的改进,如图0-1所示。
图0-1 .NET Framework 3.0
可以在Windows XP Service Pack 2、Windows Server 2003和Windows Server 2003 R2上安装.NET Framework 3.0,Windows Vista上已经预装了运行库组件。在Windows Server 2008中,可以通过服务器设置向导(Server Configuration Wizard)添加.NET Framework 3.0。.NET Framework 3.0中只有一小部分功能特性是在Windows Vista和更新版本操作系统上所特有的。
本书并不是包罗万象式的WCF的百科全书,而是提供了在大多数实际应用中使用这种技术所需要理解的知识。
本书通过演示如何使用WCF来解释它的各个方面。所以,一般每一章都会给出一个能展示这项技术的某个方面的应用实例,并且会提供创建该实例的所有详细步骤和每个步骤的详细解释。所有正在使用和准备学习使用C#编程的读者都可以遵循这些步骤。而那些只是希望阅读本书的读者也可以详细了解到WCF的各个特性以及如何使用它们。
为了运行各章节提供的例子,需要安装带有C#编译器的任何版本的Visual Studio 2005。http://msdn. microsoft.com/vstudio/express/上有免费版本供你使用。同时还需要安装IIS、ASP.NET和MSMQ。
当然,.NET Framework 3.0是必需的,可以从http://www.microsoft.com/downloads/下载。各章节中的操作指南都假定读者已经安装了.NET Framework 3.0的所有运行库和开发组件。运行库组件由Windows Vista预装,或在Windows Server 2008上通过服务器设置向导添加。开发组件由一个SDK(Software Development Kit,软件开发工具包)和两个Visual Studio 2005的升级包组成。SDK提供了文档、一些管理工具和很多有用的示例。两个升级包增强了IntelliSense对编辑设置文件的支持,同时为WF工作流提供了一个可视化设计器。
本书同样介绍了WCS的内容。为了能充分使用WCS提供的功能,读者需要安装Internet Explorer 7。Internet Explorer 7可以从http://www.microsoft.com/downloads下载。..
每章所提供的解决方案的源代码可以从出版商的网站上下载 ,也可以从http://www.cryptmaker.com/WindowsCommunication- FoundationUnleashed上下载。为了保证Visual Studio不弹出对话框说明示例代码是从不可信地址获得的,在解压下载的压缩文件包之前,读者可以右击压缩包,在弹出的菜单中选择Properties(属性),然后再单击Unlock(解锁)按钮(如图0-2所示)。
当安装Sevice Pack 1中的一个更新后,Vista操作系统将支持使用Visual Studio 2005进行开发。在Vista操作系统中使用较早版本的Visual Studio 2005的开发者会碰到一些兼容性问题。在这种情况下,可以做两件事情尽量减少这些问题。第一,禁用Vista的用户账户保护(User Account Protection)功能;第二,在启动Visual Studio 2005时,总是从可执行文件或快捷方式的右键菜单中选择Run As,然后从Run As对话框中选择一个管理员账户。
本书与它的前身Windows Communication Foundation Hands On是非常不同的。自然地,本书所有的文字内容和示例都符合WCF最终发布版的对象模型,而且本书还提供了几个全新的章节。
最重要的是,我们使用了两章的内容介绍WF以及它如何与WCF共同使用。我们发现同时使用这两个技术很常见,但是在.NET Framework 3.0下做这件事情却挺困难。简化这件事情已经成为.NET Framework 3.5的一个重要目标。
先前那本书用一章内容介绍了WCS,本书用了两章内容。这部分的作者Nigel在给我们的一封电子邮件中形容CardSpace是一个“沉睡的技术巨人”。说它“沉睡”,是因为它在.NET Framework 3.0的这些技术中是最鲜为人知的;说它是“巨人”,是因为它不仅是用户最有可能去认识的一项技术,而且它也能实实在在地改善大部分人使用计算机的体验,并进一步加快电子商务的发展。
本书为WCF本身也增加了几个新的章节。这些章节更好地介绍了安全特性和可扩展性,而且还提供了作者从早期用户那里获得的大量有关设计和创建WCF应用程序的建议。
许多人为本书的出版做出了贡献。作者希望感谢以下人士: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是一个统一的、可扩展的框架,它确实可以帮助你以一个统一的框架去创建现实世界中的安全的、可信赖的、互操作的、可管理的分布式应用程序,而且这个过程实际上很有趣(至少对于喜欢编程的人来说是这样的)。这花了我们六年时间,但是我们实现了所有的主要目标。实际上,我非常喜欢这个产品,现在我的“新”工作就是为Microsoft创建完全基于WCF所提供的功能的新产品,以推广WCF(我现在很享受这份工作)。这个团队中的每位开发人员和项目经理的书架上都有这本书,几乎我们所有的人都把这本书作为开发或使用Web服务的必备参考书,其中还包括几位实际上开发了WCF的开发人员和项目经理。
最后说说Craig吧。我和Craig认识的时候,他身为WCF技术的传道者。他的精力和对项目的热情很有感染力,他是WCF的最忠实拥护者。要是有人问起:“我们可以支持这样的场景吗?”在90%的情况下Craig大概会这样回答:“哦,可以的,我上个星期就试过了,这是原型。”站在他的角度,他可以看到我们这些专注于具体功能特性的人所看不到的全貌。WCF能有今天,他直率的反馈、技术深度和热情功不可没。我相信他对WCF的热情和广博的知识会在每一个章节里闪光,我保证你会像我们一样,发现这是一本令人愉快的、有启发性的而且很有用的书。
Alex Weinert
微软公司团队项目经理...

媒体评论回到顶部↑

“WCF开发团队中的每一位项目经理和开发人员都有这本书——我们几乎所有人都把这本书作为开发或使用Web服务的必备参考书。你一定会像我们一样,发现这是一本令人愉快、有启发性而且很有用的书。” .
——Alex Weinert,微软公司WCF开发团队项目经理
“要学习WCF,你只需要这本书和WCF SDK!它几乎讲解了对于WCF开发者来说最重要的所有主题,而且非常易于理解。强烈推荐!”...
——Amazon读者评论

书摘回到顶部↑

第1章 预备知识
本章内容
*简介
*分部类型
*泛型
*可空值类型
*轻量型事务管理器
*角色提供程序
*参考文献
1.1 简介
为了能正确理解并有效使用WCF,必需熟悉.MET Framework2.0和.NET CLR的一些功能特性。本章将介绍书中需要用到的分部类型、泛型、可空值类型、轻量级事务管理器和角色提供程序。对这些特性的讲解并不是为了面面俱到,仅仅只是充分地阐明它们在后面章节中的用途。
……
评论交流

共有18人开贴评论  21人参与评论  13人参与打分 查看

5人
 38%
用户平均打分
我要写评论 help如何参与评论和打分
6人
 46%
2人
 15%
0人
 0%
0人
 0%

thirston_bill

三级评论员
精彩书评
评价等级:  
发表于:2008-9-3 8:49:00
不过这本书不太适合初学者使用。先找一个入门的学习一下。然后在把这本书仔细研究一下应该很不错哦。推荐。刚刚仔细读了一遍。
您觉得呢? 送鲜花 (得2支)  扔鸡蛋 (得0个)

zongruipeng
二级评论员
该会员在china-pub购买过此书
  
发表于:2010-1-27 10:45:00
不错,不过结合着网上的入门Lab看更好
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

deerchao

三级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-1-4 13:46:00
没有深入讲解基本概念,只是一些案例。不适合入门。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

lisayang123
三级评论员
  
发表于:2009-11-27 13:57:00
给大家介绍一本好书《WCF技术剖析(卷1)》,作者用心之作,本书适合那些尚未接触过WCF,希望尽快入门并进行深入研究的开发人员,同样适合那些对WCF有一定了解的开发设计人员和架构师。此书一出炉,便好评不断~~~
http://www.cnblogs.com/artech/archive/2009/11/21/1607686.html,在本书的写作过程中,作者之新的感悟,都写在这里。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得1个)
  
发表于:2009-8-20 16:13:00
本书马上要出第2版了,拭目以待……
回复 ( 1条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得1支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共18条)