第1章 Web服务 1
1.1 基于组件的分布式计算与Web服务 2
1.2 为什么使用Web服务 4
1.2.1 Web服务是一种优秀的分布式计算技术 4
1.2.2 防火墙能挫败系统管理员吗 6
1.2.3 SOAP比较简单 6
1.2.4 混乱的现实 6
1.2.5 集中信息 7
1.2.6 Web服务带来的生财之道 8
1.3 什么是Web服务 8
1.3.1 利用已有的技术 9
1.3.2 Web服务堆栈 10
1.4 如何利用ASP.NET实现Web服务 15
1.5 本章小结 17
第2章 创建ASP.NET Web服务 18
2.1 使用Notepad创建Web服务 18
2.2 应用程序设置示例 18
2.2.1 把应用程序设置外置为Web服务 21
2.2.2 部署Web服务 24
2.2.3 测试Web服务 24
2.2.4 从传统ASP使用Web服务 28
2.2.5 使用独立的装配件 29
2.3.1 创建和运行Hello World示例 30
2.3 使用Visual Studio .NET创建Web服务 30
2.3.2 VS.NET剖析:生成的Web服务 33
2.3.3 为什么使用Visual Studio .NET 34
2.4 进一步创建Web服务 35
2.4.1 WebService指示符 35
2.4.2 WebServlce属性 36
2.4.3 WebMethod属性 39
2.5 从WebService类派生 47
2.6 本章小结 49
第3章 使用代理消费Web服务 50
3.1 代理的作用 50
3.1.1 电话类比 50
3.1.2 代理无处不在 51
3.2 创建代理类 52
3.2.1 使用WSDL.EXE创建代理类 53
3.2.2 引用DLL 58
3.3 使用Visual Studio.NET创建代理 59
3.4 代理的分类 63
3.4.1 透明代理 63
3.4.2 实际代理 63
3.5 同步化和异步化 63
3.6 修改默认的代理设置 67
3.6.1 修改URL 68
3.6.2 超时 68
3.6.5 用户代理 71
3.6.4 编码 71
3.6.3 代理服务器 71
3.6.6 重定向 72
3.7 本章小结 72
第4章 Web服务描述语言 74
4.1 什么是WSDL 74
4.2 如何在NET和COM中创建WSDL文件 76
4.2.1 WSDL文档和COM对象 76
4.2.2 WSDL文档和.NET 85
4.3 深入解析WSDL文档 88
4.3.1 样本WSDL文档 89
4.3.2 逐节浏览WSDL文档 92
4.4 WSDL屏幕剪贴示例 105
4.4.1 Hello world应用程序的WSDL文档 106
4.4.2 创建Hello world应用程序 107
4.5 本章小结 111
第5章 标准线上格式与数据类型 112
5.1 什么是线上格式 112
5.2 常用线上格式 113
5.2.1 HTTP GET 113
5.2.2 HTTP POST 114
5.2.3 BXXP/BEEP 114
5.2.4 ebXML 114
5.2.5 GIOP/IIOP 114
5.2.6 XML-RPC 115
5.2.7 XNLP 116
5.2.8 SOAP 117
5.3 SOAP简介 117
5.3.1 为什么使用SOAP 117
5.3.2 SOAP格式 120
5.3.3 SOAP封套 120
5.3.4 SOAP报头 121
5.3.5 SOAP主体 124
5.3.6 编码数据类型 128
5.4 本章小结 140
第6章 自定义SOAP技术 141
6.1 SOAP扩展 141
6.1.1 SOAP扩展的工作原理 143
6.1.2 使用SOAP扩展 144
6.1.3 创建SoapLog扩展 145
6.2 定形SOAP消息 157
6.2.1 消息的完整编码 159
6.2.2 使用XmlSerializer 162
6.2.3 使用属性定形XML 166
6.3 传递复杂的数据类型 177
6.3.1 传递数据集 177
6.3.2 XML字符串 185
6.3.3 二进制数据 190
6.4 本章小结 192
第7章 Web服务发现机制 194
7.1 为什么需要发现机制 195
7.2 3种主要的发现机制XML文件 196
7.3 .disco文件 196
7.3.1 .disco文件的结构 198
7.3.2 发现元素 199
7.3.3 contractRef元素 200
7.3.4 discoveryRef元素 201
7.3.5 schemaRef元素 201
7.3.6 soapRef绑定元素 202
7.4 .vsdisco文件 202
7.5 添加Web引用 206
7.5.1 向工程中添加单个Web服务 206
7.5.2 向工程中添加多个Web服务 207
7.6 .map文件 209
7.7 创建用户自己的.disco文件 210
7.8 创建用户自己的本地Web服务库 213
7.8.1 本地Web服务器上的Web引用 215
7.8.2 创建一个Web服务的HTML库 216
7.8.3 专家搜索引擎 217
7.8.4 推广Web服务 219
7.9 UDDI 219
7.9.1 UDDI Web服务 219
7.9.2 谁来控制UDDI 220
7.9.3 UDDI Web服务定义 220
7.9.4 理解UDDI WSDL计划的结构 221
7.9.5 使用ASP.NET SDK搜索UDDI注册库 222
7.10 Disco.exe 223
7.11 发现机制的未来发展 225
7.12 本章小结 226
第8章 设计标准 227
8.1 Web服务何时符合设计要求 227
8.1.1 消费Internet上的资源 228
8.1.2 销售商业服务 228
8.1.3 向合作伙伴外置商务逻辑 229
8.1.4 系统间内部互联 229
8.2 何时不使用Web服务 230
8.2.2 .NET间的通信使用Remoting 231
8.2.1 利用DLL内联到应用程序 231
8.2.3 有时最好不要使用分布式应用程序 232
8.3 协调现有的设计方法 232
8.3.1 架构问题 232
8.3.2 设计问题 234
8.3.3 性能问题 239
8.4 本章小结 240
第9章 异步化编程 241
9.1 同步化调用与异步化调用的比较 241
9.1.1 同步化处理实例 242
9.1.2 什么时候采用异步化处理比较好 243
9.2 Web服务的例子 244
9.3 .NET中的异步化编程 251
9.3.1 .NET运行时环境提供的机制 252
9.3.2 委托的概念 252
9.4 异步化调用Web服务 254
9.4.1 深入了解Web服务的代理类 254
9.4.2 使用回撤的异步化方法调用 256
9.5 设计的考虑事项 259
9.5.1 超时处理 259
9.5.2 提供取消方法 260
9.5.3 异步化服务器处理 260
9.6 本章小结 261
10.1 概述 262
第10章 管理状态 262
10.2 ASP.NET中的状态管理 263
10.2.1 Application对象 264
10.2.2 Session对象 266
10.2.3 状态管理需要考虑的事项 270
10.3 在Web服务里管理状态 270
10.3.1 继承WebService类 272
10.3.2 EnableSession属性 273
10.3.3 创建一个支持状态的Web服务 273
10.3.4 为支持状态的服务开发客户程序 276
10.4 设计问题 278
10.4.1 应用程序状态 279
10.4.2 会话状态 281
10.5 本章小结 282
第11章 使用Web服务进行事务处理 283
11.1 提供事务性Web服务 283
11.1.1 继承来自WebMethodAttribute的支持 285
11.1.2 StatusUpdate WebMethod 286
11.1.3 我们的Web服务的输出 288
11.1.4 使用Enterprise Services 291
11.2 使用事务性Web服务 293
11.2.1 消费我们的StatusUpdate WebMethod 293
11.2.2 在事务处理中调用Web服务 296
11.3 本章小结 300
12.1.1 什么是高速缓存 301
12.1 高速缓存概述 301
第12章 数据高速缓存 301
12.1.2 高速缓存的优点和缺点 302
12.2 输出高速缓存 302
12.2.1 测试Web服务 303
12.2.2 输出高速缓存潜在的缺陷 307
12.3 数据高速缓存 307
12.3.1 使用Application对象高速缓存 307
12.3.2 使用Cache对象高速缓存 314
12.3.3 基于时间的高速缓存终止 319
13.3.4 基于从属高速缓存终止 321
12.3.5 目录从属高速缓存 325
12.3.6 多重文件从属高速缓存 325
12.3.8 基于键标的从属高速缓存 331
12.3.7 基于时间和基于文件从属的高速缓存 331
12.3.9 从Cache对象中手工移出高速缓存数据项 335
12.3.10 自动的高速缓存终止 336
12.3.11 高速缓存数据项优先级 336
12.3.12 使用回撤功能 338
12.4 高速缓存性能计数器 341
12.5 本章小结 346
第13章 验证 348
13.1 什么是安全机制 348
13.2 Web服务的安全体系 349
13.4 ASP.NET验证体系 350
13.3 Web服务可用的安全选项 350
13.5 IP和DNS层安全机制 351
13.5.1 IP和DNS层安全机制的优点 351
13.5.2 IP和DNS层安全机制的缺点 352
13.5.3 实现IP和DNS安全机制 352
13.6 Windows安全机制 352
13.6.1 访问控制列表 353
13.6.2 接下来是什么 354
13.7 角色 355
13.8 基本验证 357
13.8.1 基本验证的优点 357
13.8.3 使用的原因和场合 358
13.8.4 实现基本验证 358
13.8.2 基本验证的缺点 358
13.9 简要验证 361
13.9.1 简要验证的优点 361
13.9.2 简要验证的缺点 361
13.9.3 使用的原因和场合 362
13.9.4 实现简要验证 362
13.10 集成Windows验证 362
13.10.1 集成Windows验证的优点 362
13.10.2 集成Windows验证的缺点 363
13.10.3 使用的原因和场合 363
13.10.4 实现集成Windows验证 363
13.11.3 使用的原因和场合 364
13.11.4 实现表单验证 364
13.11.1 表单验证的优点 364
13.11.2 表单验证的缺点 364
13.11 表单验证 364
13.12 SSL 370
13.12.1 SSL的优点 371
13.12.2 SSL的缺点 372
13.12.3 使用的原因和场合 372
13.13 结合SSL的基本验证 372
13.14 客户授权证书验证 375
13.14.1 使用的原因和场合 376
13.14.2 配置客户授权证书 377
13.14.3 怎样读取客户授权证书的内容 378
13.14.4 怎样验证用户 379
13.14.5 给代理外置客户授权证书 381
13.15 利用Windows账号映射验证客户授权证书 383
13.16 扮演 387
13.16.1 WindowsPrincipal对象 387
13.16.2 实现 388
13.17 URL验证 389
13.18 本章小结 391
第14章 SOAP安全体系统 392
14.1 SOAP封套 392
14.2 自定义SOAP报头 393
14.3 自定义验证和授权 398
14.4.2 跟踪SOAP消息 405
14.4.1 用SOAP扩展可以做什么 405
14.4 SOAP扩展 405
14.5 加密和解密SOAP消息 413
14.6 本章小结 421
第15章 通过Web服务外置数据 422
15.1 外置ADO.NET 422
15.1.1 创建ProductService Web服务 423
15.1.2 创建ProductSupply客户机 428
15.2 创建强类型化的Web服务 431
15.2.1 创建类型化的数据集 433
15.2.2 创建GetSupplierList()Web方法 434
15.2.3 为CompanyService创建Web服务客户机 436
15.3.1 Building the CountrySupplier Web Service 440
15.3 创建嵌套的Web服务 440
15.3.2 快速浏览CompanyByCountry服务的Web服务客户机 443
15.4 外置XML 444
15.4.1 创建CreateXmlFile控制台应用程序 444
15.4.2 创建GetProductList()Web方法 446
15.5 外置活动目录 447
15.5.1 MusicListeners Web服务 447
15.5.2 使用XML Designer创建类型化的数据集 449
15.6 遗留系统和应用程序 449
15.7 本章小结 450
第16章 商务中的Web服务 451
16.1.1 内部的商务 452
16.1 需要解决的商务问题 452
16.1.2 外部的合作伙伴 453
16.1.3 推销给消费者 456
16.2 法律问题 457
16.2.1 屏幕剪贴和知识产权 457
16.2.2 安全性 458
16.2.3 QOS 459
16.2.4 许可 460
16.3 支付手段 461
16.3.1 接受验证 461
16.3.2 彻底购买 462
16.3.3 微量支付 462
16.3.4 订阅 463
16.3.5 Favorites服务模式 464
16.3.6 盘点支付模式 465
16.4 商务案例研究 465
16.4.1 SalCentral 466
16.4.2 家中的SETI 467
16.4.3 Microsoft公司的Passport 467
16.4.4 使用这一框架 468
16.5 向领导汇报Web服务 468
16.5.1 特点和优点:无需协议和代码 468
16.5.2 放下自私和成见 469
16.5.3 制定计划 469
16.6 本章小结 470
16.5.4 从客户的角度表达问题 470
16.5.5 关注需求和解决方案 470
第17章 案例研究—BizTalk 472
17.1 BiaTalk概述 472
17.1.1 BizTalk Framework 472
17.1.2 BizTalk.org 473
17.1.3 BizTalk Server 2000 473
17.2 应用程序概述 474
17.3 定义消息 475
17.4 映像消息 478
17.5 消息处理端口 479
17.7 开始工作 480
17.6 定义频道 480
17.8 制定Orchestration进度表 482
17.8.1 “从队列获取消息”任务 484
17.8.2 COM交互操作性 486
17.8.3 “信用卡预授权”任务 487
17.8.4 PreauthOK任务 491
17.8.5 结束 493
17.9 本章小结 494
第18章 案例研究—护照样式的验证服务 495
18.1 VPASS Web服务概述 495
18.2 建立Web服务 496
18.2.1 软件需求 496
18.2.2 软件的安装与配置 497
18.3 VPASS结构 502
18.3.1 应用程序概述 503
18.3.2 可伸缩性 504
18.3.3 VPASS安全性 505
18.3.4 目录服务和LDAP 505
18.3.5 对象和装配件 507
18.4 使用Web服务 516
18.4.1 测试服务 516
18.4.2 创建代理 517
18.4.3 应用程序接口 517
18.5 本章小结 527
第19章 案例研究—分布式处理 528
19.1 工作集和工作单元 530
19.1.1 应用程序开发逻辑 531
19.1.2 建立数据库 532
19.2 创建样本数据 532
19.3 创建服务 535
19.4 建立代理 538
19.4.1 创建工程 538
19.4.2 注册代理 549
19.4.3 创建Distributed.LogAnalyzer 555
19.4.4 请求工作单元 565
19.4.5 返回结果单元 580
19.4.6 重复工作 591
19.5 负载测试 594
19.6 分析结果 598
19.7 本章小结 598
附录A .NET My Services(Hailstorm) 599
A.1 构造块 600
A.1.1 构造块1:安全性 600
A.1.2 构造块2:基本要素 601
A.1.3 .NET My Services的运行 601
A.1.4 优点和缺点 603
A.1.5 大多数人不会错 604
A.1.6 具体方案 605
A.1.7 用户接受.NET My Services 606
A.1.8 软件作为服务 606
A.1.9 谁将会使用.NET My Services 607
A.1.10 状态信息和.NET My Services 608
A.1.11 eTerrorism和.NET My Services安全性 609
A.1.12 对.NET My Services的担心 609
A.2 本附录小结 610
附录B IE5 Web服务行为 611
B.1 HTML组件(.HTCs) 611
B.2 本附录小结 622
附录C ASPToday样本文章 623
C.1 示例SOAP Web服务 623
C.1.1 概览 623
C.1.3 经纪人 624
C.1.2 安装 624
C.1.4 服务供应商 626
C.2 改进服务 627
C.2.1 WSDL 627
C.2.2 推广和发现Web服务 631
C.3 未来展望 635
C.3.1 Web服务事务处理 635
C.3.2 ACID与补偿事务 635
C.3.3 Web服务事务处理的工作要求 635
C.3.4 安全性 636
C.3.5 谈判与合同 636
C.3.6 可靠性和服务质量 637
C.3.7 XMLP 637