本书介绍了作为SOA核心和基础架构的ESB(Enterprise Service Bus,企业服务总线)的主要功能,并且重点介绍BEA的企业级ESB产品——AquaLogic Service Bus(简称ALSB)。在本书中,读者将通过很多详细的例子来领略ALSB如何与一些传统的系统相连接,以及Web Service通用的设计模式,丰富在SOA与ESB上开发与构架方面的经验。本书总共15章,其中大多数章节在内容上相对独立,读者可以单独地阅读每一章。不论是对ESB和SOA概念完全不了解的新手,还是ALSB的专家,本书都具有可读性和指导意义。
第1章 为什么使用服务总线\r\n 1.1 我们现在面临的问题\r\n 1.1.1 点到点集成\r\n 1.1.2 紧耦合\r\n 1.1.3 轻配置重编码\r\n 1.2 早期的ESB\r\n 1.3 现代解决方案\r\n 1.3.1 松耦合\r\n 1.3.2 位置透明\r\n l.3.3 服务中介\r\n 1.3.4 Schema转换\r\n 1.3.5 服务聚合\r\n 1.3.6 负载均衡\r\n 1.3.7 强制安全性\r\n l.3.8 监控\r\n 1.3.9 配置与编码\r\n 1.4 进入AquaLogic Service Bus\r\n 1.4.1 松耦合\r\n 1.4.2 位置透明\r\n 1.4.3 服务中介\r\n l.4.4 Schema转换\r\n 1.4.5 服务聚合\r\n 1.4.6 负载均衡\r\n 1.4.7 强制安全性\r\n 1.4.8 监控\r\n 1.4.9 配置与编码\r\n 1.5 这会不会把我绑在BEA的技术上?\r\n 1.6 为何购买Enterprise Sefrvice Bus?\r\n 1.7 总结\r\n第2章 软件安装与配置\r\n 2.1 安装软件\r\n 2.1.1 配置WebLogic Workshop\r\n 2.1.2 Workshop快速导航\r\n 2.2 创建ServiceBus域\r\n 2.3 在Eclipse中配置Ant\r\n 2.4 为AquaLogic Server配置Workshop\r\n 2.5 导入示例代码\r\n 2.6 总结\r\n第3章 Hello World服务\r\n 3.1 创建和部署web Service\r\n 3.1.1 @WebService\r\n 3.1.2 @SoapBinding\r\n 3.1.3 @WLHttpTransport\r\n 3.1.4 @WlebMethod\r\n 3.2 创建一个POJO测试客户端\r\n 3.2.1 在ALSB创建一个HelloWorld项目\r\n 3.2.2 创建WSDL\r\n 3.3 业务服务和代理服务\r\n 3.3.1 创建业务服务\r\n 3.3.2 创建代理服务\r\n 3.3.3 关于配置变更的快速笔记\r\n 3.3.4 测试代理服务\r\n 3.4 总结\r\n第4章 消息流基础\r\n 4.1 消息流概述\r\n 4.1.1 管道对节点\r\n 4.1.2 分支节点\r\n 4.1.3 路由节点\r\n 4.1.4 操作\r\n 4.2 GoodbyeWorld!\r\n 4.2.1 到底发生了什么事情?\r\n 4.2.2 隐藏的设计缺陷\r\n 4.3 总结\r\n第5章 WSDL速成\r\n 5.1 命名空间(Namespaces)\r\n 5.1.1 默认的命名空间\r\n 5.1.2 目标命名空问\r\n 5.2 \r\n 5.2.1 本地数据类型\r\n 5.2.2 自定义数据类型\r\n 5.2.3 minOccurs与maxOccurs\r\n 5.2.4 导入XML Schemas\r\n 5.3 \r\n 5.4 \r\n 5.5 \r\n 5.6 \r\n 5.7 \r\n 5.8 WSDL最佳实践\r\n 5.8.1 Element与Types\r\n 5.8.2 依赖性陷阱\r\n 5.8.3 基于文档与RPC对比\r\n 5.9 针对WSDL和Schema的故障分析\r\n 5.10 根据Schema可视化文档\r\n 5.10.1 ElementFormDefault属性\r\n 5.10.2 attributeFonnDefault属性\r\n 5.11 总结\r\n第6章 消息流\r\n 6.1 场景1:用户请求一个产品目录\r\n 6.2 场景2:用户订购一个产品\r\n 6.3 总结\r\n第7章 高级消息主题\r\n 7.1 同步调用\r\n 7.2 异步调用\r\n 7.2.1 配置WebLogic Server\r\n 7.2.2 异步业务服务\r\n 7.3 服务类型与传输协议\r\n 7.3.1 SCIAP with WSDL\r\n 7.3.2 SOAP Without WSDL\r\n 7 3 3 XML with WSDL \r\n 7.3.4 XML Without WSDL\r\n 7.3.5 消息传递类型\r\n 7.3.6 传输类型服务:EJB\r\n 7.3.7 POJO\r\n 7.3.8 带附件的SOAP\r\n 7.4 总结\r\n第8章 报告与监控\r\n 8.1 监控\r\n 8.1.1 多变的服务\r\n 8.2 报告\r\n 8.2.1 查看报告信息\r\n 8.2.2 清除报告信息\r\n 8.2.3 报告提供者\r\n 8.3 总结\r\n第9章 安全模型与服务总线\r\n 9.1 安全范式在SOA下的挑战\r\n 9.1.1 传输级安全\r\n 9.1.2 消息级安全\r\n 9.1.3 动态、定制、基于标记的安全\r\n 9.2 ALSB安全模型\r\n 9.2.1 ALSB的入站安全性\r\n 9.2.2 ALSB中的身份传递\r\n 9.2.3 SSL认证\r\n 9.2.4 数字签名与加密\r\n 9.3 应用ALSB安全\r\n 9.4 建议\r\n 9.5 总结\r\n第1 0章 服务前景规划\r\n 10.1 SOA坐标系统\r\n 10.1.1 软件抽象尺度\r\n 10.1.2 服务域尺度\r\n 10.1.3 坐标系统\r\n lO.2 SOA地图化\r\n 10.2.1 白顶向下方式\r\n 10.2.2 自底向上方式\r\n 10.2.3 SOA映射测试1\r\n 10.2.4 SOA映射测试2\r\n 10.2.5 服务地图的尺度\r\n 10.2.6 服务加工\r\n 10.3 架构变换\r\n 10.4 通信法则与模式\r\n 10.4.1 通信法则I\r\n 10.4.2 通信法则Ⅱ\r\n 10.4.3 通信法则Ⅲ\r\n 10.4.4 通信模式I:重力流\r\n 10.4.5 通信模式Ⅱ:直接使用企业服务\r\n 10.4.6 通信模式Ⅲ:间接使用企业服务\r\n 10.4.7 通信模式Ⅳ:在一个域内的应用间通信\r\n 10.5 追求性能\r\n 10.6 总结\r\n第11章 服务版本化\r\n 11.1 什么是服务\r\n 11.2 面向服务\r\n 11.3 什么是版本化\r\n 11.4 是版本化服务还是版本化操作?\r\n 11.4.1 操作版本化\r\n 11.4.2 服务版本化\r\n 11.5 现实约束\r\n 11.6 如果没有版本问题,会如何?\r\n 11.7 IT的未来\r\n 11.8 总结\r\n第12章 管理、操作与经营\r\n 12.1 团队开发支持\r\n 12.1.1 变更中心\r\n 12.1.2 冲突管理\r\n 12.1.3 撤销和重做\r\n 12.1.4 如何解决冲突\r\n 12.2 系统管理\r\n 12.3 操作设置\r\n 12.4 配置访问控制\r\n 12.5 部署\r\n 12.5.1 自动部署基础\r\n 12.5.2 高级自动技术\r\n 12.6 ALSB集群\r\n 12.6.1 创建集群\r\n 12.6.2 节点管理器\r\n 12.6.3 控制被管理服务器\r\n 12.6.4 部署到集群\r\n 12.6.5 位置透明与ALSB\r\n 12.7 总结\r\n第13章 自定义传输\r\n 13.1 自定义传输概述\r\n 13.1.1 为什么要自定义传输?\r\n 13.1.2 自定义传输如何适合ALSB\r\n 13.1.3 自定义传输中的组件\r\n 13.2 Socket传输示例\r\n 13.2.1 Socket传输能力\r\n 13.2.2 构建与安装传输示例\r\n 13.2.3 使用Socket传输例程\r\n 13.3 构建自定义传输\r\n 13.3.1 Transport SDK接口概述\r\n 13.3.2 任务概述\r\n 13.3.3 传输提供者的配置XML文件\r\n 13.3.4 传输提供者Schema\r\n 13.3.5 实现传输提供者的用户接口类\r\n 13.3.6 使用自定义传输来部署服务端点\r\n 13.3.7 实现传输提供者运行类\r\n 13.3.8 注册传输提供者\r\n 13.4 总结\r\n第14章 如何……\r\n 14.1 安全\r\n 14.2 管理\r\n 14.3 消息与协议\r\n 14.4 XML,XQuery和XSLT\r\n 14.5 其他问题\r\n 14.6 总结\r\n附录A AquaLogic Service Bus操作
在今天,企业服务总线(Enterprise Service Bus,ESB)绝对是一个非常热门的话题。面对ESB的热潮,有些厂商重新打造全新的ESB产品,而有些厂商则将他们已有的一些产品包装一番也称为ESB。然而,ESB究竟是什么,ESB的架构或者编程范式应该是怎么样的,这些到目前为止还没有一个非常明确的定义。有人说ESB完全没有任何用处,也有人说ESB具有完整集成套件的全部功能,包括内置的BPM(Business Process Management)、数据聚合以及WSM(Web Service Management)功能等。ESB的架构可以是被嵌入到客户端和端点,到集中的服务中介之间的所有结构。而ESB的编程范式则可以是从手工编写Java代码,到全部由灵活的图形化配置驱动。
BEA并不是将一款已有的产品包装为ESB,而是从零开始构造了一个ESB产品。BEA的ESB最早推出是在2005年的夏天,这款ESB产品主要定位是作为端到端(end-to-end)SOA构架中的一个组件。它作为BPM或者数据集成服务的补充,但是提供了与之完全不同的功能。SOA中的大部分概念是关于组件化(componentization)、连通性(interconnectivity)和重用(reuse)的。作为可管理的SOA网络中的一部分,ESB的角色十分明确,它为客户端与服务提供了松耦合、健壮的结构、路由结构、连通性,以及安全执行中枢。ESB可以作为一个集中式的中介或者是一个非集中式中介网络。同时,ESB也提供了一个完全基于浏览器的图形配置界面。
在本书中,Jeff Davies介绍了ESB的主要功能,重点介绍BEA的AquaLogic® Service Bus(简称ALSB)。他在书中用了许多例子,清楚而通俗地解释了ALSB这个产品以及如何利用它来实现一系列的ESB用例。他从ESB产品目录中选择了这个领先的产品,并且从实践与实用出发,采用“展示与讲述”的方式介绍ESB,而没有对不同ESB的结构与定义进行过多理论上的讨论与争辩。本书非常具有可读性与指导性。作为ALSB第1版的构架师,我觉得本书很好地介绍了AquaLogic® Service Bus。
Jayaram Kasi
AquaLogic® Service Bus技术项目管理总监
BEA系统有限公司
JEFF DAVIES,BEA的SOA构架师与推广者,在软件领域有20多年的工作经验。Jeff有丰富的零售软件,例如Windows与Macintosh平台上的Act!,以及许多其他的商业应用程序(主要集中在电信领域)的开发经验。他还做过企业应用程序的开发、设计、构架设计等方面的工作。在加入BEA之前,Jeff是一家电信公司的首席构架师,主要负责s0A。在BEA,Jeff主要从事基于BEA的产品在一些实际项目中构建s0A解决方案的工作。
Service-Oriented Architecture(SOA)正在迅速成为当今企业的新标准。在书店,出现了很多书籍讨论SOA的方方面面。绝大部分的书籍都是围绕着一些SOA战略问题在进行讨论,而对具体的SOA战术却少有提及。作为一名软件工程师,我可以很快理解这些抽象的概念,我相信你也是一样。然而,魔鬼存在于细节之中。我知道,一旦开始实现一个新的技术,就会发现一些新的问题:那些战略性书籍中没有提到的Bug、设计问题,以及其他问题。
SOA并不是一种技术——它是架构与战略。当你准备实现你自己的SOA时,你需要学习不只一项技术,而是一系列不同的技术。在我开始沿着SOA前进之前,我觉得我对XML技术非常了解。但是没过多久,我发现许多关于XML的问题我之前从来没有思考过。因此,在开始做一些设计方面的判断时,我不得不重新开始学习XML的各种细节,XML Schema,WSDL,Xquery,以及XPath等。
在享受阅读这些新战略的乐趣时,我意识到用代码来实现这些战略也有着同样的乐趣。代码才是最直观的。许多事情在纸面上非常的好,但是一旦开始实现时,所有的不能容忍的问题都将会出现。我想,要是我读过一本关于SOA开发细节方面的书该有多好。但是,很可惜,还没有这样的书出现,因此我自己写了一本这样的书。我写这本书的初衷是假设有成千上万的软件开发人员也和我一样:喜欢写代码,喜欢将理论应用于实践中去。
本书将理论与代码示例融合在一起。很少有能指导人们为一个SOA编写实际代码的书籍出现,很重要的一个原因是很少有SOA平台能供那些普通的开发者下载并使用。许多SOA(尤其是ESB)厂商在你购买他们的产品之前是不会提供产品供你试用的。就像买车一样,如果你从来没有看见过或者试驾过这辆车,仅仅凭销售人员提供给你的一些关于这款车的描述,你会买吗?
幸运的是,BEA提供了一款企业级的ESB产品可以免费供大家下载使用。在本书中,你会通过很多详细的例子来领略ALSB如何与一些遗留系统(legacy system)相连接、展示一些Web Service通用的设计模式,这些可以增加你在SOA与ESB上开发与构架方面的经验。
什么是AquaLogic?
AquaLogic® Service Bus是AquaLogic产品系列中的一个产品。AquaLogic产品系列包括了许多不同功能的产品。更多的产品细节可以在BEA的官方网站(www.bea.com)上获得。
本书的内容安排
本书由15章组成。我们在撰写大多数章节时,尽量使它们在内容上相对独立,因此你可以单独地阅读每一章。然而,我们还是极力推荐你阅读第2章和第3章,这样你能设定好你的开发环境,并且理解企业服务总线的一些基本概念。
第1章,“为什么使用服务总线”,描述企业服务总线的功能与优势。
第2章,“软件安装与配置”,指导你安装与配置AuqaLogic® Service Bus与开发环境。安装这一章中描述的软件后,你可以运行本书中所有的示例代码。
第3章,“Hello World服务”,遵循许多传统编程书籍的习惯,我们将会实现一个Web Service,测试它,并把它集成在AquaLogic® Service Bus里去。通过这个方式,我们还快速介绍了AuqaLogic® Service Bus的管理控制台。
第4章,“消息流基础”,你将会学习什么是消息流、如何创建消息流,以及如何在ALSB里使用消息流。
第5章,“WSDL速成”,介绍Web Services Description Language(WSDL)现代Web Service的语言。创建(或阅读)WSDL需要许多在简单XML之外的技能。这一章会告诉你WSDL的一些核心知识点,省去了其他不必要的一些内容。
第6章,“消息流”,在这一章中通过示例代码介绍ALSB的所有的功能点。
第7章,“高级消息主题”,介绍一些不常见的集成问题以及ALSB的使用。
第8章,“报告与监控”,阅读这一章你可以了解到ALSB不仅仅是处理消息。ALSB可以给你提供企业的运行状态、提供自动的告警、复杂的服务状态报告,以及运行这些服务的服务器的报告等。
第9章,“安全模型与服务总线”,提出经常会被提及但是很少有人真正理解的主题。这一章介绍如何在你的服务总线里实现安全。
第10章,“服务前景规划”,讨论迁移到SOA的可行性计划。在这一章中,我们介绍一种方式可以简化这项计划过程,并提供一个分类方法,这样你可以快速地将你的服务分类。
第11章,“服务版本化”,这一章可能是本书中最有争议的一章。忘记你曾听到的关于服务版本化的问题,来拥抱一些新的概念吧。
第12章,“管理、操作与经营”,将会教你如何让你的服务总线运行得更好。服务总线并不只是开发而已,还有与运行相关的内容。
第13章,“自定义传输”,在这一章中会探索Transport SDK。虽然ALSB提供了许多有用的传输协议的支持,但是在ALSB中还是提供了一些API,允许你能创建一些自定义的传输,这样你可以方便地与一些历史遗留系统集成。
第14章,“如何…”,提供了一些现实中关于ALSB的常见问题的回答。
附录A,“AquaLogic® Service Bus操作”,是关于ALSB支持的操作(Action)的一本参考手册。
——Jeff Davies
无封面