第1章 Web服务概述 1
1.1 什么是Web服务 1
1.2 为什么需要Web服务 2
1.2.1 传统技术的缺陷 2
1.2.2 历史的必然 3
1.3 Web服务的运行机理 4
1.3.1 Web服务的设计目的 4
1.3.2 Web服务的基本结构 4
1.4 Web服务的技术架构 8
1.4.1 网络层 8
1.4.2 XML消息层 8
1.4.3 服务说明层 9
1.4.4 服务发布层 9
1.4.5 服务发现层 9
1.4.6 其他技术层面 9
1.5 Web服务实现模型 10
1.5.1 Web服务的角色 10
1.5.2 Web服务的操作 11
1.5.3 Web服务的产品 11
1.5.4 Web服务的开发生命周期 11
1.6 Web服务的应用领域 12
1.6.1 Web服务简单应用 12
1.6.2 应用程序集成 13
1.6.3 工作流解决方案 13
1.6.4 不该使用的领域 13
1.7 Web服务的优势和面临的挑战 14
1.7.1 Web服务的优势 14
1.7.2 Web服务面临的挑战 14
1.8 Web服务简单实例 16
1.8.1 实现Web服务 16
1.8.2 测试Web服务 17
1.8.3 使用Web服务 20
1.9 本章总结 22
第2章 XML基础 23
2.1 什么是XML 23
2.1.1 XML是元标记语言 23
2.1.2 XML把内容与形式分离 24
2.2 编写简单XML文档 25
2.2.1 定义基本元素 25
2.2.2 分解元素 25
2.2.3 使用属性 27
2.3 XML文档结构 27
2.3.1 XML声明 28
2.3.2 处理指令 29
2.3.3 注释 30
2.3.4 字符和实体引用 31
2.3.5 CDATA区 32
2.3.6 元素 33
2.3.7 属性 35
2.3.8 文本内容 36
2.4 XML命名空间 37
2.4.1 什么是XML命名空间 37
2.4.2 为什么需要命名空间 37
2.4.3 声明命名空间 39
2.4.4 命名空间作用范围 40
2.5 XSD大纲 41
2.5.1 什么是XSD大纲 42
2.5.2 编写XSD大纲文档 42
2.6 读写XML文档 49
2.6.1 写XML文档 50
2.6.2 读XML文档 51
2.7 本章总结 54
第3章 Web服务类型系统 55
3.1 XSD类型系统简介 55
3.1.1 为什么需要类型系统 55
3.1.2 什么是XSD类型系统 56
3.1.3 XSD类型系统的组成 57
3.2 定义XSD类型 59
3.2.1 定义简单类型 59
3.2.2 定义复杂类型 61
3.2.3 复杂类型的内容 62
3.2.4 匿名类型 64
3.2.5 XSD和XML命名空间 65
3.2.6 类型替换 67
3.2.7 唯一性和健 71
3.3 使用XSD验证文档 73
3.3.1 指定大纲的位置 74
3.3.2 程序验证 75
3.4 对象串行化 77
3.4.1 .NET中实现串行化 78
3.4.2 继承和串行化 81
3.5 XSD和XML串行化应用实例 82
3.5.1 定义发货单大纲 83
3.5.2 买方应用程序设计 84
3.5.3 卖方应用程序设计 88
3.6 本章总结 95
第4章 SOAP协议详释 97
4.1 什么是SOAP 97
4.2 SOAP消息的传递 98
4.3 SOAP的结构 99
4.4 SOAP元素 102
4.4.1 <Envelope>元素 102
4.4.2 <Header>元素 103
4.4.3 <Body>元素 105
4.4.4 <Fault>元素 105
4.5 SOAP编码规则 107
4.5.1 串行化简单类型 107
4.5.2 串行化复合类型 110
4.6 传送SOAP消息 121
4.6.1 消息和传输分离 121
4.6.2 使用HTTP传输SOAP消息 122
4.7 SOAP用于RPC 124
4.7.1 SOAP RPC规定 124
4.7.2 RPC和HTTP 126
4.8 本章总结 128
第5章 SOAP协议应用 129
5.1 SOAP消息格式 129
5.2 SOAP消息系统 131
5.2.1 服务器端设计 132
5.2.2 客户端设计 137
5.3 SOAP RPC调用 145
5.3.1 服务器端设计 146
5.3.2 客户端设计 150
5.3.3 截获HTTP信息 153
5.4 报告错误 155
5.5 传输二进制数据 157
5.5.1 Base64编码 158
5.5.2 携带附件的SOAP 160
5.5.3 简单解决办法 161
5.6 本章总结 166
第6章 Web服务说明WSDL 167
6.1 为什么需要WSDL 167
6.2 什么是WSDL文档 168
6.3 WSDL文档利用方式 171
6.4 WSDL文档详解 172
6.4.1 WSDL文档的结构 172
6.4.2 命名空间部分 177
6.4.3 Types和Messages部分 178
6.4.4 PortTypes部分 186
6.4.5 Bindings部分 190
6.4.6 Services部分 192
6.5 WSDL绑定 192
6.5.1 SOAP绑定 193
6.5.2 HTTP GET POST绑定 217
6.5.3 MIME绑定 223
6.6 本章总结 227
第7章 UDDI规范 229
7.1 什么是UDDI 229
7.1.1 UDDI计划 229
7.1.2 UDDI规范文档 230
7.1.3 UDDI商业注册 231
7.1.4 使用UDDI 232
7.2 UDDI技术概览 232
7.2.1 UDDI与其他协议的关系 232
7.2.2 UDDI技术发现层 233
7.2.3 商业发现与UDDI 233
7.2.4 UDDI信息模型 234
7.2.5 程序员API 236
7.3 UDDI数据结构 238
7.3.1 总体设计原则 239
7.3.2 businessEntity结构 240
7.3.3 businessService结构 242
7.3.4 bindingTemplate结构 243
7.3.5 tModel结构 245
7.3.6 publisherAssertion结构 247
7.4 UDDI程序员API 248
7.4.1 UDDI查询API 249
7.4.2 UDDI发布API 253
7.4.3 返回报告 257
7.5 本章介绍 258
第8章 UDDI实现和应用 259
8.1 在微软测试UDDI操作入口站点发布信息 259
8.1.1 获得Passport 259
8.1.2 创建发布者账号 260
8.1.3 管理注册信息 261
8.1.4 发布商业实体信息 262
8.1.5 发布服务信息 263
8.1.6 定义绑定信息 264
8.1.7 发布tModel数据 264
8.1.8 引用tModel结构 265
8.2 使用Microsoft UDDI SDK查询信息 267
8.2.1 查询商业实体信息 268
8.2.2 查找tModel数据 270
8.3 使用Microsoft UDDI SDK发布信息 272
8.3.1 界面设计 272
8.3.2 添加引用 273
8.3.3 发布信息 273
8.3.4 删除信息 276
8.3.5 运行程序 278
8.4 直接使用API消息实现商业发现 281
8.4.1 default.html 282
8.4.2 uddiUtils.asp 283
8.4.3 getBusinesses.asp 284
8.4.4 getBusDetails.asp 286
8.4.5 gettModelDetails.asp 287
8.4.6 执行软件 288
8.5 本章总结 290
第9章 ASP.NET Web服务 291
9.1 ASP.NET Web服务简介 291
9.2 ASP.NET Web服务开发基础 292
9.2.1 声明ASP.NET Web服务 292
9.2.2 声明ASP.NET Web服务方法 294
9.2.3 调用ASP.NET Web服务 295
9.2.4 支持传递的数据类型 297
9.3 使用Dataset传递数据 302
9.4 定制SOAP头条目 307
9.4.1 定义和处理SOAP头条目 307
9.4.2 设置SOAP头条目的接收方 310
9.4.3 使用可选SOAP头条目 312
9.4.4 处理未知的SOAP头条目 313
9.4.5 处理客户要求的SOAP头条目 315
9.4.6 报告SOAP头条目错误 315
9.5 ASP.NET Web服务中的状态管理 316
9.6 本章总结 318
第10章 Visual Studio.NET和Web服务 319
10.1 使用VS.NET创建Web服务 319
10.1.1 创建ASP.NET Web服务项目 319
10.1.2 查看VS.NET创建的文件 320
10.1.3 添加Web服务 323
10.1.4 添加Web服务方法 324
10.1.5 编译Web服务 324
10.1.6 测试Web服务 325
10.2 在Windows Forms中调用Web服务 325
10.2.1 新建Windows应用程序项目 325
10.2.2 设计界面 326
10.2.3 添加Web引用 326
10.2.4 添加客户端代码 327
10.2.5 运行程序 329
10.3 在Web Forms中调用Web服务 329
10.3.1 新建Web Forms应用程序 329
10.3.2 设计页面 330
10.3.3 添加Web引用 330
10.3.4 编写代码 331
10.3.5 运行程序 332
10.4 本章总结 332
第11章 使用SOAP ToolKit 2.0 333
11.1 SOAP工具箱简介 333
11.1.1 SOAP工具箱API 333
11.1.2 SOAP工具箱工具 334
11.2 使用高级API 336
11.2.1 服务器端设计 336
11.2.2 客户端设计 347
11.2.3 工作机理分析 349
11.3 使用低级API 351
11.3.1 服务器端设计 351
11.3.2 客户端设计 356
11.4 本章总结 359
附录1 简单对象访问协议(SOAP)1.1 361
1 简介 361
1.1 设计目标 362
1.2 符号约定 362
1.3 SOAP消息举例 362
2 SOAP消息交换模型 363
3 与XML的关系 364
4 SOAP封装 364
4.1 SOAP消息 364
4.2 SOAP头 366
4.3 SOAP头和体的关系 367
4.4 SOAP错误 368
5 SOAP编码 369
5.1 XML中的编码类型规则 369
5.2 简单类型 372
5.3 多态accessor 374
5.4 复合类型 375
5.5 缺省值 385
5.6 SOAP root属性 385
6 在HTTP中使用SOAP 385
6.1 SOAP HTTP请求 385
6.2 SOAP HTTP响应 386
6.3 HTTP扩展框架 386
6.4 SOAP HTTP举例 386
7 在RPC中使用SOAP 387
7.1 RPC和SOAP体 388
7.2 RPC和SOAP头 388
8 安全性考虑 388
9 参考文献 389
A SOAP封装举例 389
A.1 请求编码举例 389
A.2 响应编码举例 391
附录2 Web服务描述语言(WSDL)1.1 395
1 绪论 395
1.1 WSDL文档实例 396
1.2 符号约定 398
2 服务定义 399
2.1 WSDL文档结构 399
2.2 类型 405
2.3 消息 406
2.4 端口类型 409
2.5 绑定 412
2.6 端口 413
2.7 服务 413
3 SOAP绑定 414
3.1 SOAP示例 414
3.2 SOAP绑定如何扩展WSDL 419
3.3 soap:binding 421
3.4 soap:operation 421
3.5 soap:body 422
3.6 soap:fault 423
3.7 soap:header和soap:headerfault 424
3.8 soap:address 425
4 HTTP GET POST绑定 425
4.1 HTTP GET/POST示例 425
4.2 HTTP GET/POST绑定如何扩展WSDL 427
4.3 http:address 428
4.4 http:binding 428
4.5 http:operation 429
4.6 http:urlEncoded 429
4.7 http:urlReplacement 429
5 MIME绑定 430
5.1 MIME绑定示例 430
5.2 MIME绑定如何扩展WSDL 432
5.3 mime:content 433
5.4 mime:multipartRelated 433
5.5 soap:body 434
5.6 mime:mimeXml 434
6 参考文献 434
A1 有关URI的注释 435
A1.1 XML名称空间和模式位置 435
A1.2 相对URI 435
A1.3 产生URI 435
A2 用于WSDL的电报格式的例子 435
A2.1 例1 435
A3 扩展元素的位置 436
A4 模式 437
A4.1 WSDL模式 437
A4.2 SOAP绑定模式 444
A4.3 HTTP绑定模式 446
A4.4 MIME绑定模式 447