本书是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
.3.3 XML物神 57
3.3.1 创建服务 58
3.3.2 创建客户端 59
3.4 使用DataContractSerializer 60
3.5 异常处理 72
3.6 小结 76
3.7 参考文献 76
第4章 会话、可信赖会话、队列与事务 77
4.1 简介 77
4.2 可信赖会话 77
4.3 会话管理 80
4.4 队列交付 81
4.5 事务 84
4.6 小结 91
第二部分 WF介绍
第5章 WF简介 94
5.1 简介 94
5.1.1 WF是什么 94
5.1.2 WF不是什么 94
5.2 活动 95
5.2.1 开箱即用活动 96
5.2.2 创建定制服务 97
5.2.3 活动通信 102
5.2.4 设计行为 107
5.2.5 事务和补偿 108
5.3 工作流模型 110
5.3.1 顺序工作流 110
5.3.2 状态机工作流 116
5.3.3 定制根活动 117
5.4 工作流承载 117
5.4.1 承载运行时 118
5.4.2 运行时服务 119
5.4.3 定制服务 126
5.5 规则引擎 128
5.5.1 作为条件的规则 128
5.5.2 ConditionedActivityGroup活动 130
5.5.3 作为策略的规则 131
5.6 小结 133
5.7 参考文献 133
第6章 使用WCF和WF 134
6.1 简介 134
6.2 消费服务 134
6.2.1 简单情形 134
6.2.2 一般情形 135
6.3 组合多个服务 138
6.4 将工作流暴露为服务 139
6.4.1 作为Web服务发布 139
6.4.2 在WCF服务中承载 141
6.5 展望 145
6.6 参考文献 149
第三部分 安全
第7章 安全基础 152
7.1 简介 152
7.2 确保通信安全的基本任务 152
7.3 传输安全和消息安全 153
7.4 使用传输安全 153
7.4.1 安装证书 153
7.4.2 指定服务器即将提供的证书 155
7.5 使用消息安全 161
7.6 身份模拟与授权 166
7.6.1 身份模拟 166
7.6.2 授权 169
7.7 取消对Windows的更改 175
7.7.1 卸载证书 175
7.7.2 从IIS中删除SSL配置 176
7.7.3 从HTTP.SYS中删除SSL配置 176
7.7.4 恢复服务器的标识 177
7.8 小结 177
7.9 参考文献 177
第8章 WCS、信息卡和标识元系统 178
8.1 简介 178
8.2 标识的角色 178
8.3 Microsoft Passport和其他标识验证方法 180
8.4 标识规则 181
8.5 标识元系统 182
8.6 信息卡和CardSpace 186
8.7 管理信息卡 188
8.8 架构、协议和安全 192
8.9 CardSpace与企业 202
8.10 小结 205
8.11 参考文献 205
第9章 使用信息卡保护应用程序的安全 207
9.1 简介 207
9.2 标识元系统开发 207
9.3 CardSpace的简单示例 209
9.4 CardSpace示例的准备工作 209
9.4.1 开启IIS和ASP.NET 2.0 210
9.4.2 获取X.509证书 210
9.4.3 将证书导入证书存储区 210
9.4.4 更新Hosts文件使DNS项与
证书匹配 211
9.4.5 IIS设置 211
9.4.6 读取证书私钥 211
9.4.7 HTTP配置 212
9.5 为WCF应用程序添加信息卡 213
9.6 添加信息卡 216
9.7 使用Federation绑定 220
9.8 捕获异常 221
9.9 处理发布的令牌 222
9.10 使用Metadata Resolver 224
9.11 为浏览器应用程序添加信息卡 225
9.12 创建托管卡 234
9.13 创建简单的安全令牌服务 237
9.14 小结 239
9.15 参考文献 239
第10章 高级安全 240
10.1 序幕 240
10.2 简介 241
10.3 利用声明保证资源安全 241
10.3.1 基于声明授权和基于角色
授权 241
10.3.2 基于声明授权和访问控制
列表 242
10.3.3 采用基于声明授权 243
10.4 使用XSI运用基于声明的安全 244
10.4.1 利用Windows标识授权对
局域网资源的访问 244
10.4.2 改进初始方案 249
10.4.3 添加STS作为联合的基础 255
10.4.4 重新配置Resource Access
服务 265
10.4.5 重新配置客户端 269
10.4.6 体验带有XSI的、联合的、
基于声明的标识的强大 271
10.5 基于声明的安全和联合安全 271
10.6 小结 272
10.7 参考文献 273
第四部分 集成与互操作
第11章 遗留集成 276
11.1 简介 276
11.2 COM+集成 276
11.2.1 支持的接口 277
11.2.2 选择承载模式 277
11.3 使用COM+服务模型配置工具 278
11.4 将COM+组件以WCF Web服务提供 279
11.5 从COM调用WCF服务 284
11.5.1 创建服务 284
11.5.2 创建客户端 286
11.5.3 创建VBScript文件 288
11.5.4 测试解决方案 288
11.6 与MSMQ集成 289
11.7 创建与MSMQ集成的WCF服务 289
11.7.1 创建请求 289
11.7.2 创建服务 290
11.7.3 创建客户端 292
11.7.4 测试 296
11.8 小结 296
第12章 互操作性 297
12.1 简介 298
12.2 小结 299
12.3 参考文献 299
第五部分 扩展WCF
第13章 定制行为 302
13.1 简介 302
13.2 扩展WCF 302
13.3 用定制行为扩展服务模型 302
13.3.1 声明你要提供的行为的类型 303
13.3.2 将定制行为附加到操作或
终结点上 306
13.3.3 将定制行为告知WCF 306
13.4 实现定制行为 306
13.4.1 声明 306
13.4.2 附加 307
13.4.3 告知 307
13.5 实现各种类型的定制行为 313
13.5.1 操作选择器 313
13.5.2 参数检查器 315
13.5.3 消息格式器 317
13.5.4 消息检查器 319
13.5.5 实例上下文提供者 321
13.5.6 实例提供者 321
13.5.7 操作调用器 322
13.6 实现WSDL导出扩展 323
13.7 定制行为实战 325
13.8 小结 326
13.9 参考文献 326
第14章 定制信道 327
14.1 简介 327
14.2 绑定元素 327
14.2.1 出站通信 328
14.2.2 入站通信 328
14.3 信道是有形状的 329
14.4 可能需要信道支持会话 330
14.5 根据契约匹配信道 330
14.6 通信状态机 332
14.7 创建定制绑定元素 332
14.7.1 理解起点 332
14.7.2 提供一个支持出站通信的定
制绑定元素 333
14.7.3 更改自定绑定元素以支持入
站通信 339
14.7.4 通过配置应用定制绑定元素 344
14.8 小结 346
第15章 定制传输 348
15.1 简介 348
15.2 传输信道 348
15.2.1 入站通信 348
15.2.2 出站通信 349
15.3 消息编码器 349
15.4 完善栈 349
15.5 实现传输绑定元素和编码器绑定元素 350
15.5.1 场景 350
15.5.2 要求 351
15.5.3 TcpListener类和TcpClient类 351
15.6 实现支持任意TCP协议的定制绑定
元素 353
15.6.1 配置 353
15.6.2 定制传输绑定元素 355
15.6.3 信道监听器 357
15.6.4 传输信道 359
15.6.5 消息编码器 361
15.6.6 使用定制传输绑定元素 362
15.7 小结 363
15.8 参考文献 363
第六部分 具体案例
第16章 发布/订阅系统 366
16.1 简介 366
16.2 使用回调契约的发布/订阅系统 366
16.3 使用MSMQ实际通用组播的发布/
订阅系统 372
16.4 使用流的发布/订阅系统 378
16.4.1 流传输模式 378
16.4.2 使用流传输模式传送定制流 382
16.4.3 使用流传输模式和定制流实
现发布/订阅系统 385
16.5 小结 388
16.6 参考文献 389
第17章 对等通信 390
17.1 介绍对等信道 390
17.2 在点对点应用中使用结构化数据 390
17.3 利用Windows对等网络开发平台 391
17.4 理解Windows对等网络 391
17.5 使用对等信道 392
17.5.1 终结点 392
17.5.2 绑定 392
17.5.3 地址 395
17.5.4 契约 395
17.5.5 实现 396
17.6 对等信道实战 396
17.6.1 设想解决方案 396
17.6.2 设计数据结构 399
17.6.3 定义服务契约 401
17.6.4 实现服务契约 403
17.6.5 配置终结点 404
17.6.6 将消息发给特定的节点 406
17.6.7 定制对等名称解析 408
17.6.8 查看对等信道的工作 412
17.7 对等信道和People Near Me 414
17.8 小结 414
17.9 参考文献 414
第18章 REST和Plain XML服务 415
18.1 简介 415
18.2 REST 415
18.3 REST服务 416
18.4 REST服务和Plain XML 416
18.5 REST服务的优点和局限 416
18.6 使用WCF创建REST POX服务 417
18.6.1 REST POX服务终结点的
地址 417
18.6.2 REST POX服务终结点的
绑定 417
18.6.3 REST POX服务终结点的
契约 418
18.6.4 实现 418
18.6.5 应用程序范例 419
18.7 小结 423
18.8 参考文献 423
第七部分 WCF应用程序的生命周期
第19章 可管理性 426
19.1 简介 426
19.2 检测功能与工具 426
19.2.1 配置系统和配置编辑器 427
19.2.2 Service Configuration Editor 429
19.2.3 安全事件的可配置审计 433
19.2.4 消息日志、活动跟踪和
Service Trace Viewer 436
19.2.5 性能计数器 444
19.2.6 WMI提供程序 445
19.3 完善管理工具 453
19.4 小结 453
19.5 参考文献 453
第20章 版本处理 454
20.1 简介 454
20.2 版本术语 454
20.3 版本问题集 455
20.3.1 添加新的操作 455
20.3.2 更改操作 457
20.3.3 删除一个操作 460
20.3.4 更改绑定 460
20.3.5 决定废除一个终结点 460
20.3.6 更改服务终结点的地址 460
20.4 集中的生命周期管理 461
20.5 小结 462
20.6 参考文献 463
第八部分 规范
第21章 规范 466
21.1 简介 466
21.2 采用WCF 466
21.3 使用WCF地址 467
21.4 使用WCF绑定 469
21.5 使用WCF契约 471
21.5.1 使用结构化契约 473
21.5.2 使用行为契约 475
21.6 使用WCF服务 477
21.7 使用WCF客户端 483
21.8 使用大量数据 488
21.9 调试WCF应用程序 490
21.10 小结 490
21.11 参考文献 490
本书由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的一些功能特性。本章将介绍书中需要用到的分部类型、泛型、可空值类型、轻量级事务管理器和角色提供程序。对这些特性的讲解并不是为了面面俱到,仅仅只是充分地阐明它们在后面章节中的用途。
……