本书并不是关于Web服务的又一本开发手册,抑或是开发技术的宝典之类的读物。本书的作者来自于IBM软件开发中心的SOA技术中心,作为最早的一批从事SOA相关产品和客户项目开发的软件技术人员,见证了SOA从诞生到发展壮大的全过程。而本书的目的在于将作者在项目过程中的经验介绍给读者,通过分析SOA产生的根源,以及SOA对业务模式和开发模式带来的变革,帮助读者理解什么是SOA,以及如何科学的实施SOA。
本书的内容分为三部分,将从作者的实际经验出发,分析SOA理念产生的合理性,然后分析SOA的相关开发技术,最后结合一个实例片断,讲述一个完整的SOA项目是如何设计完成的。
本书针对的读者是有一定经验的开发人员,例如,信息系统架构师,企业决策人员,对Web开发感兴趣的高年级计算机或相关领域的学生,以及任何希望了解SOA的广大技术人员。
第一部分 SOA理论篇
第1章 SOA概述 1
1.1 SOA的基本概念 4
1.2 计算环境的演变和面向服务的计算环境 7
1.2.1 计算环境 7
1.2.2 计算环境的演变历程 8
1.2.3 面向服务的计算环境 9
1.2.4 面向服务计算环境的现状 11
1.2.5 面向服务的编程模型:服务组件架构(SCA)和
1.2.5 服务数据对象(SDO) 14
1.3 软件体系结构的演变和面向服务的设计原则 14
1.4 软件工程的演变和面向服务体系结构 17
1.5 SOA技术概览 19
1.5.1 SOA的主要组件 19
1.5.2 SOA主要技术和标准 19
1.5.3 SOA技术在工业界的支持现状 21
1.6 本章小结 35
第2章 SOA与企业IT战略 37
2.1 当今IT战略所面临的主要挑战和任务 38
2.2 开始你的SOA旅程 41
2.3 本章小结 43
第3章 SOA设计原则 45
3.1 业务和IT对齐 47
3.2 保持灵活性 49
3.3 松散耦合 50
3.4 本章小结 54
第4章 SOA方法学 55
4.1 SOA方法学和其他方法学的比较 56
4.2 面向服务的分析和设计概述 59
4.2.1 服务发现 61
4.2.2 服务规约 63
4.2.3 服务实现 64
4.3 本章小结 65
第5章 SOA参考架构 67
5.1 SOA概念层次 68
5.2 SOA参考架构 70
5.2.1 连接服务:企业服务总线 72
5.2.2 业务逻辑服务 73
5.2.3 控制服务 75
5.2.4 开发支持 77
5.2.5 业务创新和优化 78
5.2.6 管理支持 79
5.3 本章小结 80
第6章 SOA设计模式 81
6.1 服务注册表(service registry)模式 82
6.2 企业服务总线(Enterprise Service Bus, ESB)模式 84
6.3 服务编排(choreography)模式 89
6.4 本章小结 91
第二部分 SOA技术基础篇
第7章 Web服务基础 95
7.1 Web服务标准 96
7.1.1 从XML到Web服务 98
7.1.2 Web服务的特性 99
7.1.3 Web服务简史 101
7.1.4 Web服务体系结构 102
7.1.5 标准组织与Web服务 105
7.1.6 Web服务规范简介 108
7.2 SOAP协议 119
7.2.1 SOAP消息 120
7.2.2 SOAP消息交换模式 125
7.2.3 传输协议独立性 125
7.2.4 SOAP编码 128
7.3 WSDL规范 129
7.3.1 WSDL概念模型 130
7.3.2 WSDL文档格式 132
7.3.3 WSDL SOAP绑定 137
7.4 UDDI协议 141
7.4.1 UDDI信息模型 142
7.4.2 UDDI API 146
7.4.3 UDDI与WSDL 148
7.4.4 其他服务发现机制 151
7.5 本章小结 153
第8章 Web服务实现方式 155
8.1 Web服务实现平台的发展历程 156
8.2 Java SOAP服务引擎的工作原理 158
8.2.1 Web服务的客户端 159
8.2.2 Web服务的服务器端 164
8.3 开发Web服务的方式 167
8.4 不同Web服务引擎的工作原理 169
8.4.1 SOAP 2.3引擎的Web服务的运行时环境 169
8.4.2 IBM的SOAP引擎/AXIS 173
8.5 Java Web服务的主流编程模式JAX-RPC 176
8.6 IBM WAS6的JAX-RPC Web服务开发过程 180
8.6.1 IBM WAS对Web服务的支持 181
8.6.2 从已有的业务逻辑EJB出发构建Web服务 182
8.7 特殊类型的Web服务实现方式 201
8.7.1 基于EJB绑定的Web服务 202
8.7.2 直接绑定数据库操作的Web服务 210
8.8 Web服务的互操作——WS-I协议 217
8.8.1 Web服务的类型与编码模式 217
8.8.2 WS-I概述(基于WS-I Basic Profile) 220
8.9 本章小结 225
第9章 Web服务的事务,安全和可靠性 227
9.1 Web服务的事务处理 228
9.1.1 Web服务事务模型与规范 228
9.1.2 IBM WebSphere中实现事务处理的方式 237
9.2 Web服务的安全 238
9.2.1 Web安全的基本概念 238
9.2.2 Web服务的安全协议介绍 240
9.2.3 IBM WebSphere中实现Web服务安全性的方式 249
9.3 本章小结 263
第10章 业务流程简述 265
10.1 BPEL简史 267
10.2 BPEL的基本特性 268
10.3 BPEL模型 269
10.4 BPEL活动 273
10.5 BPEL异常管理 278
10.6 BPEL事务与补偿机制 279
10.7 BPEL开发 281
10.8 本章小结 283
第11章 SOA程序设计模型 285
11.1 SCA编程模型 287
11.1.1 SCA起源 288
11.1.2 SCA的规范现状 288
11.1.3 SCA的构成 290
11.1.4 SCA客户端开发模式 293
11.2 SDO 294
11.2.1 SDO的结构 295
11.2.2 SDO的编程模式 296
11.3 本章小结 297
第12章 SOA体系结构的高级话题 299
12.1 WS-Resource Framework协议 300
12.2 WS-Notification协议 306
12.3 WS-Reliability Message协议 314
12.4 本章小结 323
第三部分 实例篇
第13章 SOA体系结构的实例讲解 327
13.1 选择什么样的SOA解决方案及具体的业务 329
13.2 业务流程分析 330
13.3 建立服务模型 334
13.3.1 自顶向下分解业务进行分析 334
13.3.2 通过业务目标来分析 337
13.3.3 自底向上分析 339
13.3.4 决定服务是否暴露 340
13.3.5 定义服务接口 342
13.4 建立业务流程 348
13.4.1 建立业务对象 348
13.4.2 建立服务接口 350
13.4.3 建立业务流程 351
13.4.4 通过ESB来连接不同的服务 354
13.5 本章小结 358
参考文献 359
毛新生,现为IBM中国开发中心资深技术专员(STSM)。1997从北京大学计算机系毕业以后,他先后在北京大学和IBM研究院从事研发工作,以研究人员,开发经理,或者架构师的身份在以下领域工作过:信息检索,语音技术及其中间件,门户,普及计算,Linux,网格计算,Web Service,SOA和Web 2.0。欢迎通过电子邮件maoxs@cn.ibm.com或者博客http://mxs.blog.ccidnet.com/跟他讨论SOA与Web 2.0的问题。
金戈,硕士,2001年毕业于中科院软件研究所。现任IBM中国软件开发实验室全球SOA解决方案中心技术经理和架构师。从2004年起一直耕耘在IBMSOA客户服务第一线,曾经领导若干SOA的咨询和实施项目。
易立,硕士,2001年毕业于北京大学计算机系。现任IBM中国软件开发实验室软件工程师。曾经参与多个国外SOA的咨询和实施项目。
黄若波,硕士,2000年毕业于中科院软件研究所。现任IBM中国软件开发实验室全球SOA设计中心技术经理。参与多个SOA项目的设计和实施。
李珉,硕士,1999年毕业于北京工业大学。现任IBM中国软件开发实验室新技术孵化部门技术经理。参与多个SOA相关项目的设计和开发工作。
任静安是IBM SOA design Center的SOA架构师,对网络安全、J2EE、Eclipse、SOA等有深入研究。曾经作为架构师参与实施过多个大型的SOA项目,如Pepboys,Insurance Australia Group和URC。
SOA已经成为企业IT系统实施的一个时尚,无论是对旧有信息系统的改造,还是企业新IT架构的设计,面向服务的体系结构都往往成为首选的方案。很多的权威机构也纷纷预测SOA的美妙前景,例如,Gartner预言,到了2008年,至少60%的企业将使用SOA作为其IT架构。
这种流行的趋势其实是若干因素的共同促进的结果。一方面,历经多年软件工程发展所积累的经验、方法和各种架构模式,比如OO/MDD/MDA,需要新的想法来促进更加快捷的工程组织模式来应对飞速发展变化的商业模式;另一方面,互联网的多年发展带来前所未有的分布式系统的交互能力,这既是实施进一步标准化需求的基础,同时也是发展的瓶颈:枝蔓横生的分布式技术,RPC,RMI,CORBA,各种中间件,消息格式等等,发展到一定程度,企业间的标准壁垒也达到了急待破解的时侯。乱世造英雄,SOA是解决这诸多问题,促进企业连横的灵丹妙药吗?热闹之后,我们需要的是些许冷静,让我们重新回到起点,看一看,究竟什么是SOA。这其实就是本书的创作初衷。看似简单,却是真正作好SOA方案的急所。你很难期望那些认为SOA就是用Web服务写程序的架构师能够设计出解决企业问题的优美方案。
本书面向广大的软件开发人员,尝试介绍什么是SOA,它的本质理念是什么,有哪些SOA的方法学和设计模式,然后引入一个实际案例,详细介绍怎样实现SOA。IBM作为SOA的倡导者,已经提供了很好的产品来实现我们的设想。本书的第二、第三部分中分别介绍基于IBM产品的实现方式,最后辅以企业应用场景的实例。但是,本书并不纠缠于代码细节,即使在本书中提供了一些代码样例,也只是帮助读者形象的理解SOA的方法和理念。希望通过本书,能让广大读者朋友快速掌握SOA的基本知识。本书的读者对象可以是软件开发人员,企业信息系统的决策人员,IT架构设计师,计算机或相关领域的在校学生,以及任何对SOA感兴趣的工程技术人员。
本书的写作过程也是一波三折,由于作者都工作在SOA开发项目的第一线担任重要的角色,大家聚少离多,虽然都有热情分享自己工作的经验与教训,但是难免面临着时间压力,沟通协调不便等诸多困难的挑战。本书很多内容都来自于作者在工余时间,甚至加班后的宝贵休息时间。在此感谢大家艰苦付出。
在成书的过程中,我们也得到了很多人的帮助,借此机会,特别在此感谢IBM中国知识产权律师仲崇国先生,IBM SOA中心主任沈丽琴女士,IBM软件开发中心CEO郑妙勤女士。同时,感谢出版社领导与编辑的鼓励与支持。
由于时间仓促,水平有限,书中难免有所疏漏之处,在此敬请广大读者批评指正。
无封面