WCF揭秘,经典书籍

所需积分/C币:10 2011-12-08 14:51:30 46.05MB PDF
0
收藏 收藏
举报

WCF揭秘,很经典的关于描述WCF的书籍。
版权声明 Authorized translation from the English language edition entitled Windows Communication Foun dation Unleashed by Craig McMurtry, Marc Mercuri, Nigel Watling and Matt Winkler, published by Pearson Education, Inc, publishing as Sams, Copyright@ 2007 by Sams Publishing All rights reserved. No part of this book may be reproduced or transmitted in any form or by any neans, electronic or mechanic, including photocopying, recording, or by an information storage retrieval system, without permission of Pearson Education, Inc CHINESE SIMPLIFIED language edition published by Post& TELECOM PRESS Copyright o 2007 本书中文简体字版由 Pearson Education Inc授权人民邮电出版社独家出版。未经出版者书面 许可,不得以任何方式复制或抄袭本书内容。 版权所有,侵权必究 译者序 本书由 Craig McMurtry、 Marc mercuri、 Nigel Watling和 Matt Winkler这4位微软WCF传道者共同撰 写而成,他们和微软WCF开发团队保持着紧密的联系,当WCF还处于开发阶段时就开始参与其中。而 且,他们中有的人还是 Cardspace、WF等领域的技术专家。这些使得他们在编写此书时具备了无与伦 比的优势。 本书一共8个部分,分为21章,介绍了WCF的各个方面。作者对不同部分的讲解,在广度和深度 上都恰到好处。例如,本书的第二部分和第三部分分别介绍了如何使WF和 Cardspace这两项一同发布 的技术与WCF协同工作,其中穿插了WF和 CardSpacel的介绍章节,它们以有限的篇幅精辟地阐述了这 两项技术的基本概念和一般的应用场景,之前没有实际操作过WF和 CardSpace的读者,也能很好地理 解和操作,可以说是绝佳的入门介绍。又例如,在介绍如何扩展WCF时,作者将WCF相关部分的一些 底层工作细节展现给读者,使读者能据此了解他们编写的定制行为、信道等是如何融入到WCF的构架 中的。 本书的另外一大特点就是采用了大量的示例,每一项技术的讲解都是以示例展开的。作者并没有 简单地把代码贴上来,而是为每个示例提供了详尽的步骤,让读者可以完全依照这些步骤从无到有重 现使用了相关技术的解决方案。本书还提供了所有代码和 Visual studio项目文件的下载地址,为读者 提供了极大的方便。如果你在创建或使用WCF服务时碰到了一个不熟悉的应用场景,翻翻这本书,你 很有可能找到一个相关的而且非常详尽的示例—它能作为你开始工作的非常好的起点。如此多可操 作的示例也会让你的阅读过程变得非常有趣:看书的同时,打开 Visual studio,试试不同的代码和配 置,你会有更多的发现。 作为原著者和中文读者之间的“传话人”,我希望能把作者所要表达的意思用中文完整且准确地 传达出来,使更多的人能够从这本书中获益。由于水平有限,疏忽和纰漏在所难免,敬请各位读者朋 友批评指正。欢迎大家提供宝贵意见与建议,我的E-mai是kazhuo@hotmail.com。 在此,我先要感谢本书的四位作者给广大读者奉献了这本好书。感谢 Flying之初为我和图灵公司 之间牵线搭桥。感谢我的老板陈众先生、刘宗翰先生以及前老板黄振裕先生对翻译本书的支持。最后, 感谢家人和朋友一直以来对我的支持和鼓励,让我坚持将这本书翻译完。 打开 Visual Studio,开始尝试新的web服务开发模式吧。 赵科平 序 我从2001年开始从事WCF(那时称为“ Indigo”)的研发工作,当时我们还是一个小团队,我应 该是第20位加入该团队的成员。在该团队任职期间,我是存储、可管理性、可靠消息和队列方面的项 目经理主管。我们的团队有一个宏伟的愿景:通过为Web服务创建一个基础,使之可以实际应用到广 泛的分布式计算问题上,促进下一代Web服务的发展。我们希望确保为各种业务而实现的web服务可 以提供安全的通信—机密性、签名、联合,于是分布式计算客户就可以为现实世界中的通信使用 wcb服务。我们希望确保web服务可以融入到ACID模型的事务中,确保其能与数据驱动的系统或那些 事务性计算任务进行有效的交互。我们希望确保Web服务可以某种方式编写,从而使广域的松散性不 会再约束有意义的分布式应用程序的开发。在这些应用程序中,消息能以发送的次序达到你想发送的 地址。这些目标如此涉及底层,现在看起来甚至有点奇怪,但是要知道,在2001年我们都接受这样的 事实:当创建分布式系统时,其中的大部分工作都需要自力更生。 我们也知道大部分的计算环境都是异构的,许多厂商的系统同时并存,所以我们希望通过伟大的 Web服务技术标准确保互操作性。我们决心实现良好的互操作性,并且全力地实现了目标。要在底层 实现广泛的互操作性,Ws- Security、 WSAtomicTransactions、 WS-ReliableMessaging、 WS-Management、 ws- Policy、 WS-Transfer、 WS-Eventing等协议都是必需的。但是,在我们开始这个项目时什么都没有, 它们都是由WCF团队的同事们后来实现的。回顾以前,我们可能会说:“我们当然希望通过被广泛 接受的、可以相互组合的多个Web服务标准使用其他系统。”然而,这在2001年却是一个高不可攀 的目标。 我们希望支持一种单一的编程模型,使开发者从面向消息转向远程过程性模式,或者从TCP转向 HTTP或MSMQ等队列协议时,不需要从头学起。面对NETRemoting、ASMX、Socket、MSMQ等众 多的编程模型,用一套统一的AP完成上述各模型的任务显然很困难,但我们仍然迎难而上。我们希 望支持可扩展性,这样再出现新的消息交换模式、协议或加密机制时,也无需另外一种编程模式了。 作为首席项目经理,我帮助贯彻了可管理性这一理念,也就是任何应该交给IT专家决定的信息(当 前的协议、加密机制、服务地址、监视,等等)都尽可能交给他们。这又是一个极高的目标:我们希 望用wCF创建的应用程序具有最好的跟踪、监控和控制功能,易于通过优秀的配置和跟踪工具使用, 而且能通过wM与所有的 Windows管理工具集成。简单地说,这个目标就是让使用wCF创建的应用程 序比基于其他框架创建的应用程序更具可管理性,而且管理成本更低。 我们希望为现实世界创建重要的分布式应用程序能变得简单而又有趣,这可能是我们最富雄心的 目标。我们希望直观地引导开发者创建符合分布式系统最佳实践的应用程序。正如 Steve Swartz(“简 单而又有趣”最忠实的倡导者)所告诉我的,我们的目标是创建这样的一个框架,“如果你在山顶放 一个球并让它滚下来,它就会自然地在一个地方停下来,这个地方有一个构架优良的服务,它帮你避 2序 免了分布式系统开发者在过去20年里犯下的所有错误。 那我们做得怎么样呢?看看在Vsta中和网络上作为NET3.0一部分发布的最终产品,我认为我们 做得相当不错。WCF是一个统一的、可扩展的框架,它确实可以帮助你以一个统一的框架去创建现实 世界中的安全的、可信赖的、互操作的、可管理的分布式应用程序,而且这个过程实际上很有趣(至 少对于喜欢编程的人来说是这样的)。这花了我们六年时间,但是我们实现了所有的主要目标。实际 上,我非常喜欢这个产品,现在我的“新”工作就是为 Microsoft创建完全基于WCF所提供的功能的新 产品,以推广wCF(我现在很享受这份工作)。这个团队中的每位开发人员和项目经理的书架上都有 这本书,几乎我们所有的人都把这本书作为开发或使用web服务的必备参考书,其中还包括几位实际 上开发了WCF的开发人员和项目经理。 最后说说 Craig吧。我和 Craig认识的时候,他身为wCF技术的传道者。他的精力和对项目的热情 很有感染力,他是WCF的最忠实拥护者。要是有人问起:“我们可以支持这样的场景吗?”在90%的 情况下 Craig大概会这样回答:“哦,可以的,我上个星期就试过了,这是原型。”站在他的角度,他 可以看到我们这些专注于具体功能特性的人所看不到的全貌。WCF能有今天,他直率的反馈、技术深 度和热情功不可没。我相信他对WCF的热情和广博的知识会在每一个章节里闪光,我保证你会像我们 一样,发现这是一本令人愉快的、有启发性的而且很有用的书。 Alex Weinert 微软公司团队项目经理 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服务器—Is5.1和更新的版本能运行wCF解 决方案 WCF是和WPF、Wcs( Windows CardSpace,开发代号 Infocard)以及WF一起免费发布的。在正 式发布前,这一组技术称为 WinFX,后来在2006年6月改名为 NET Framework3.0。尽管名字这么 叫, NET Framework3.0其实只是一组添加到 NET Framework20中的仍然运行在20版 NET CLR上的 类,它还对 Windows操作系统做了一些相应的改进,如图0-1所示。① NET Framework 30 ASPNET 2.D Windows Forms NET基类库20 NET公共语言运行库20 Windows操作系统( Windows Server2003或 Windows XP SP2 或 Windows vista以及更新版本) 图0-1 NET Framework3.0 ① NET Framework3只是在 NET Framework30基础上进行了扩展,主要是引入了LNQ和 ASPNET AJAX,核心部 分只进行了微调。—编者注 2前言 可以在 Windows XP Service Pack2、 Windows Server2003和 Windows Server2003R2上安装NET Framework3.0, Windows vista上已经预装了运行库组件。在 Windows Server2008中,可以通过服务器 设置向导( Server Configuration Wizard)添加 NET Framework3.0。 NET Framework3.0中只有一小部 分功能特性是在 Windows vist和更新版本操作系统上所特有的。 本书并不是包罗万象式的WCF的百科全书,而是提供了在大多数实际应用中使用这种技术所需要 理解的知识。 本书通过演示如何使用WCF来解释它的各个方面。所以,一般每一章都会给出一个能展示这项技 术的某个方面的应用实例,并且会提供创建该实例的所有详细步骤和每个步骤的详细解释。所有正在 使用和准备学习使用C#编程的读者都可以遵循这些步骤。而那些只是希望阅读本书的读者也可以详细 了解到WCF的各个特性以及如何使用它们。 为了运行各章节提供的例子,需要安装带有C编译器的任何版本的 Visual studio2005hp:/msdm microsoft. com/studio/express/上有免费版本供你使用。同时还需要安装Is、 ASP NET和MSMQ。 当然,NETFramework3.0是必需的,可以从htp:www.microsoft.com/downloads/下载。各章节中 的操作指南都假定读者已经安装了 Net Framework3.0的所有运行库和开发组件。运行库组件由 Windows Vista预装,或在 Windows Server2008上通过服务器设置向导添加。开发组件由一个SDK ( Software Development Kit,软件开发工具包)和两个 Visual studio2005的升级包组成。SDK提供了文 档、一些管理工具和很多有用的示例。两个升级包增强了 IntelliSense对编辑设置文件的支持,同时为 WF工作流提供了一个可视化设计器 本书同样介绍了wCS的内容。为了能充分使用WCS提供的功能,读者需要安装 Internet Explorer7 nternetExplorer7可以从hp:/hww.microsoft.com/downloads下载。 每章所提供的解决方案的源代码可以从出版商的网站上下 载,也可以从htp//ww.cryptmaker.com/WindowsCommunication Gmas setul summon Foundation Unleashed 上下载。为了保证 Visual Studio不弹出对话框①Fa 说明示例代码是从不可信地址获得的,在解压下载的压缩文件包 Tge d te Ca 之前,读者可以右击压缩包,在弹出的菜单中选择 Properties(属 a Conmcmedfopea pharon 性),然后再单击 Unlock(解锁)按钮(如图02所示)。 Loewe CVoeumwit and Same\ My Doou 当安装 Sevice Pack1中的一个更新后, Vista操作系统将支持使 11/M8 012290815tye 用 Visual studio2005进行开发。在 Vista操作系统中使用较早版本的 tondi 11 7MB 012232.06 bte Visual Studio2005的开发者会碰到一些兼容性问题。在这种情况 To4,A20a0023A Moa.A城20.20023AM 下,可以做两件事情尽量减少这些问题。第一,禁用Vs的用户4mk 账户保护( User Account Protection)功能:第二,在启动 Visual Studio sbu rtos rhosm 2005时,总是从可执行文件或快捷方式的右键菜单中选择 Run As, 比上山 然后从 Run as对话框中选择一个管理员账户。 wopondtncomnies 本书与它的前身 Windows Communication Foundation Hand Cave Om是非常不同的。自然地,本书所有的文字内容和示例都符合wCF 最终发布版的对象模型,而且本书还提供了几个全新的章节。 图0-2解锁下载的代码压缩包 最重要的是,我们使用了两章的内容介绍WF以及它如何与WCF共同使用。我们发现同时使用这 ①本书所附代码也可以从图灵公司网站(www.turingbook.com)本书配套网页下载,—编者注 前言3 两个技术很常见,但是在 NET Framework3.0下做这件事情却挺困难。简化这件事情已经成为NET Framework3.5的一个重要目标。 先前那本书用一章内容介绍了wCS,本书用了两章内容。这部分的作者 Nigel在给我们的一封电 子邮件中形容 Cardspace是一个“沉睡的技术巨人”。说它“沉睡”,是因为它在 NET Framework3.0 的这些技术中是最鲜为人知的;说它是“巨人”,是因为它不仅是用户最有可能去认识的一项技术, 而且它也能实实在在地改善大部分人使用计算机的体验,并进一步加快电子商务的发展。 本书为WCF本身也增加了几个新的章节。这些章节更好地介绍了安全特性和可扩展性,而且还提 供了作者从早期用户那里获得的大量有关设计和创建wCF应用程序的建议。 许多人为本书的出版做出了贡献。作者希望感谢以下人士: Joe Long、 Eric Zinda、 Angela Mills Omri Gazit. 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 Gambara Andy Haryanto、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 pren、 Laurence melloul、 Clemens wasters 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和Lib Winkler。在目前,Mat是我们中唯一一个当父亲的人,他还要感谢他的女儿 Grace 目录 第一部分wCF简介 44队列交付… 4.5事务…………………84 第1章预备知识… 2 46小结 …91 1.1简介………………2 第二部分WF介绍 1.2分部类型… 2 13泛型………………………………3 第5章WF简介 14可空值类型… 5.1简介……………………………94 1.5轻量级事务管理器……… 51.1WF是什么 ……94 1.6角色提供程序… 8 5.1.2WF不是什么 1.7小结………………………………………9 52活动…………… 1.8参考文献 …10 521开箱即用活动 …96 第2章基础知识 52.2创建定制服务 5.2.3活动通信………………………………102 2.1背景知识 524设计行为… 10 2.2服务模型 …16 525事务和补偿… 108 2,2.1软件资源………………………19 53工作流模型……………………………110 2.2.2创建一个访问资源的服务 21 53.1顺序工作流………………10 23小结… 51 5.32状态机工作流 ………116 24参考文献……51 53.3定制根活动 ……117 第3章数据表示… …52 54工作流承载………… ……117 3.1背景知识……52 5.4.1承载运行时………18 3.2 XmlSerializer/DataContractserializer.53 542运行时服务………………119 33XML物神… ……57 543定制服务……………………126 33.1创建服务 58 55规则引擎 :128 3.32创建客户端………………………59 55.1作为条件的规则…………………128 34使用 DataContractserializer…… 5.5.2 ConditionedActivityGroup活动…130 35异常处理………………………72 55.3作为策略的规则…………131 3.6小结 76 56小结 …133 3.7参考文献 ………76 57参考文献…………… 133 第4章会话、可信赖会话、队列与事务…77第6章使用WCF和WF 41简介………………………………77 61简介……………………………134 42可信赖会话……………… ……7 62消费服务……………… …134 4.3会话管理 80 62.1简单情形………………………134

...展开详情
试读 505P WCF揭秘,经典书籍
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
上传资源赚积分or赚钱
    最新推荐
    WCF揭秘,经典书籍 10积分/C币 立即下载
    1/505
    WCF揭秘,经典书籍第1页
    WCF揭秘,经典书籍第2页
    WCF揭秘,经典书籍第3页
    WCF揭秘,经典书籍第4页
    WCF揭秘,经典书籍第5页
    WCF揭秘,经典书籍第6页
    WCF揭秘,经典书籍第7页
    WCF揭秘,经典书籍第8页
    WCF揭秘,经典书籍第9页
    WCF揭秘,经典书籍第10页
    WCF揭秘,经典书籍第11页
    WCF揭秘,经典书籍第12页
    WCF揭秘,经典书籍第13页
    WCF揭秘,经典书籍第14页
    WCF揭秘,经典书籍第15页
    WCF揭秘,经典书籍第16页
    WCF揭秘,经典书籍第17页
    WCF揭秘,经典书籍第18页
    WCF揭秘,经典书籍第19页
    WCF揭秘,经典书籍第20页

    试读结束, 可继续阅读

    10积分/C币 立即下载 >