企业集成模式:设计、构建及部署消息传递解决方案
基本信息
编辑推荐
这是一本有关使用消息传递进行企业集成的书。这本书并不只是介绍某种特别的技术或产品,而是为使用各种消息传递产品和技术的开发人员以及集成人员准备的。
推荐阅读
内容简介回到顶部↑
本书不会为企业应用集成建立商业案例,而是把重点放在如何实现应用的集成上。读者通过本书可以学会如何集成企业应用。.
异步消息传递已证明是成功实现企业集成的最佳方案。但是,为了构建和部署消息传递解决方案,开发人员要面对大量的问题。本书提供了意义非凡的65种模式,并用真实的解决方案演示了消息传递的强大功能,可以帮助你为自己的企业设计出高效的消息传递解决方案。..
本书还是一本有关各种消息传递或中间件技术的指南。在书中你可以找到采用不同技术(如jms、msmq、tibco、biztalk和xsl)的例子,这些例子能为读者演示如何把模式转换成真正的实现。...
异步消息传递已证明是成功实现企业集成的最佳方案。但是,为了构建和部署消息传递解决方案,开发人员要面对大量的问题。本书提供了意义非凡的65种模式,并用真实的解决方案演示了消息传递的强大功能,可以帮助你为自己的企业设计出高效的消息传递解决方案。..
本书还是一本有关各种消息传递或中间件技术的指南。在书中你可以找到采用不同技术(如jms、msmq、tibco、biztalk和xsl)的例子,这些例子能为读者演示如何把模式转换成真正的实现。...
作译者回到顶部↑
本书提供作译者介绍
负责Thought Works公司的企业集成实践,该公司是应用开发和集成服务的专业提供商。根据为企业客户设计和实现集成解决方案的丰富经验,Gregor已经在企业集成、Web服务和面向服务的体系结构方面发表了大量的论文。他经常在世界各地的学术会议上发表演说。Bobby Woolf是《The Design Patterns Smalltalk Companion》一书(1998年由Addison-Wesley出版)的作者之一,也是《IBM DeveloperWorks》杂志、《Java Developer’S Joumal》和其他杂志的撰稿人。他还在其他学术会议上做OOPSLA、JavaEdge和Smalltalk Sol.. << 查看详细
目录回到顶部↑
序.
前言
致谢
引言
第1章 运用模式解决集成问题 1
1.1 集成的需要 1
1.2 集成面临的挑战 2
1.3 集成模式的有何帮肋 3
1.4 集成世界 4
1.5 松耦合 6
1.6 eai简介 7
1.7 一个松耦合的集成解决方案 10
1.8 widget & gadgets’r us公司:示例 11
1.9 小结 26
第2章 集成方式 27
2.1 引言 27
2.2 文件传输 29
2.3 共享数据库 31
2.4 远程过程调用 33
2.5 消息传递 35
前言
致谢
引言
第1章 运用模式解决集成问题 1
1.1 集成的需要 1
1.2 集成面临的挑战 2
1.3 集成模式的有何帮肋 3
1.4 集成世界 4
1.5 松耦合 6
1.6 eai简介 7
1.7 一个松耦合的集成解决方案 10
1.8 widget & gadgets’r us公司:示例 11
1.9 小结 26
第2章 集成方式 27
2.1 引言 27
2.2 文件传输 29
2.3 共享数据库 31
2.4 远程过程调用 33
2.5 消息传递 35
前言回到顶部↑
这是一本有关使用消息传递进行企业集成的书。这本书并不只是介绍某种特别的技术或产品,而是为使用各种消息传递产品和技术的开发人员以及集成人员准备的,这些消息传递产品和技术包括:.
由IBM(WebSphere MQ系列)、Microsoft(BizTalk)、TIBCO、WebMethods、SeeBeyond、Vitria以及其他一些开发商提供的面向消息的中间件(Message-Oriented Middleware,MOM)和EAI套件。 合并到商业和开放源代码J2EE应用服务器中的Java消息服务(Java Message Service,JMS)实现及独立产品。 Microsoft的消息排队(Microsoft’s Message Queuing,MSMQ),可以通过多个API(包括Microsoft .NET中的System.Messaging库)进行访问。
新兴的支持异步Web服务的Web服务标准(例如WS-ReliableMessaging)以及有关的API,如Sun的用于XML消息传递的Java API(Java API for XML Messaging,JAXM),或Microsoft的Web服务扩展(Web Services Extensions,WSE)。
企业集成不仅仅能创建一个分布式n层应用结构,还能使一个应用分布到多台计算机上。在分布式应用中,单个的一层是无法自己运行的,而集成应用中的每一个应用都能独自运行,它们彼此之间通过松耦合完成功能。采用“发送并忽略(send and forget)”的方式进行消息传递能够帮助数据或指令通过网络传递,调用者发送完信息后可以继续完成其他操作,信息由消息传递系统负责传递。另外,通过回调函数,调用者事后能得到处理结果的通知。异步调用和回调比同步调用增加了设计的复杂度,但是异步调用可以反复执行直至调用成功,这使得通信更加可靠。异步消息传递还有其他一些优点,如节流请求、平衡负载等。读者对象本书适合以下应用开发人员和系统集成人员,可以帮助他们使用面向消息的集成工具来完成应用互连:
在设计和构建复杂的企业应用时,需要集成其他应用的应用架构师和开发人员。假设你正在使用现代企业应用平台(如Java 2平台企业版或Microsoft .NET框架)来开发你的应用,本书能帮助你把应用连接到消息传递层,通过消息传递层与其他应用交换信息。本书的重点在于应用的集成方面,而不是如何构建应用;如果你想了解如何构建应用,请参考Martin Fowler所著《Patterns of Enterprise Application Architecture》一书。
为了连接已经封装或定制的应用,设计和构建集成解决方案的集成架构师和开发人员。属于这个群体的大多数读者已经有使用某种商业集成工具(如IBM WebSphere MQ、TIBCO、 WebMethods、SeeBeyond和Vitria等)的经验。这些工具中,大多数都提供了本书介绍的模式。因此本书能帮助读者理解这些模式的内涵,帮助他们作出独立于产品提供商的设计决策。 ..
保持企业中软件和硬件资产“大局观”的企业架构师。本书提供了一种统一的语言,可以帮助架构师描述大规模的集成解决方案,即使这些方案是由许多不同的技术和局部解决方案构成的。采用这种语言能帮助企业架构师、集成与应用架构师和开发人员实现更有效的沟通。本书内容本书不会为企业应用集成建立商业案例,而是把重点放在如何实现应用的集成上。读者通过掌握以下知识可以学会如何集成企业应用:
与其他集成技术相比较,异步消息传递有哪些优点与局限性。 如何规划应用所需的消息通道,如何控制多个消费者能否得到相同的消息,如何处理非法消息。
发送一个消息时,消息中应该包含哪些内容,如何使用特殊的消息属性。 如何路由消息使之到达最终的目标,即便发送者不知道目标在哪里。
当消息的发送者与接收者不能使用共同的消息格式时,如何转换消息。 如何设计连接应用与消息传递系统的代码。
当消息传递系统作为企业应用的组成部分运行时,如何管理和监控。本书未涉及的内容
任何在标题中冠以“企业”一词的书籍不外乎以下三类。其一是试图概括整个主题,但缺少如何实现具体解决方案的详细指南;其二是为开发具体解决方案提供详细的手册,但是却无法涵盖整个主题;其三是试图提供既完备又详尽的解决方案,但这样的书籍要么还未出版,要么就是出版得太晚。因此我们倾向于选择第二种方式,希望能编写一本书帮助人们设计更好的集成解决方案,即使书的内容会因此而受限。有一些主题我们本想介绍,但是为了避免陷入第三类情况,因此书中没有涉及,这包括安全性、复杂数据映射、工作流、规则引擎、可扩展性、健壮性和分布式事务处理(诸如XA、Tuxedo等)。我们选择异步消息传递作为本书的重点,这是因为存在着大量与之相关的设计问题和折衷方案,而且可以从各种集成应用提供商那里获得许多案例。
本书还是一本有关各种消息传递或中间件技术的指南。在书中你可以找到采用不同技术(如JMS、MSMQ、TIBCO、BizTalk和XSL)的例子,这些例子能为读者演示如何把模式转换成真正的实现。如果你还想获得这些技术的更详细的说明,请阅读本书的参考文献或从在线帮助中获得相关的资源。本书的组织结构 顾名思义,本书主要收集了各种模式。人们已经普遍认为,模式能把专家在不同领域中缺乏固定答案的知识捕获下来,这些领域包括应用体系结构、面向对象的设计或基于异步消息传递体系结构的集成解决方案。
每种模式都引出一个特殊的设计问题,通过介绍与问题相关的具体环境,提出一种能平衡各种矛盾或动因的解决方案。在大多数情况下,解决方案并不是一下就能想到的,而要经过多次实践不断提炼。因此,每种模式都融合了高级集成开发人员和架构师从反复构建的解决方案和挫折中总结出的经验。也就是说,本书并没有“发明”什么模式;模式是无法发明的,而是从相关领域的实践中发现和观察到的。
由于模式来源于实践者的实际应用,因此,如果你有机会接触过企业集成工具和异步消息传递体系结构,那么你对本书所介绍的许多模式就不会陌生。即便如此,这本书还是值得阅读的。它能帮助你确认一些晦涩的理解是否正确,这包括设计详细的解决方案时如何使用消息传递,以及你可能还没有注意到的各种模式之间的关系。本书还能帮助你将自己的知识更方便地传授给缺乏经验的同事。最后,这本书确定了模式的名称,这为同事之间更好地讨论各种集成设计方案提供了通用的术语。
书中的模式可以应用于各种编程语言和开发平台。因此模式并不是一段可粘贴复制的代码,你必须在自己的实践环境中实现模式。为了使这种转换更加容易,书中列举了各种各样的例子,并采用常用的技术(如JMS、MSMQ、TIBCO、BizTalk、XSL等)来演示模式的各种实现。另外还提供了几个大型示例,展示如何将多个模式结合起来形成一个整体解决方案。
使用异步消息传递体系结构来集成多个应用是一个富有挑战而又有趣味的研究领域。希望你能像作者一样喜爱阅读这本书。 Gregor Hohpe San Francisco, California Bobby Woolf Raleigh, North Carolina 2003年9月
www.enterpriseintegrationpatterns.com ...
由IBM(WebSphere MQ系列)、Microsoft(BizTalk)、TIBCO、WebMethods、SeeBeyond、Vitria以及其他一些开发商提供的面向消息的中间件(Message-Oriented Middleware,MOM)和EAI套件。 合并到商业和开放源代码J2EE应用服务器中的Java消息服务(Java Message Service,JMS)实现及独立产品。 Microsoft的消息排队(Microsoft’s Message Queuing,MSMQ),可以通过多个API(包括Microsoft .NET中的System.Messaging库)进行访问。
新兴的支持异步Web服务的Web服务标准(例如WS-ReliableMessaging)以及有关的API,如Sun的用于XML消息传递的Java API(Java API for XML Messaging,JAXM),或Microsoft的Web服务扩展(Web Services Extensions,WSE)。
企业集成不仅仅能创建一个分布式n层应用结构,还能使一个应用分布到多台计算机上。在分布式应用中,单个的一层是无法自己运行的,而集成应用中的每一个应用都能独自运行,它们彼此之间通过松耦合完成功能。采用“发送并忽略(send and forget)”的方式进行消息传递能够帮助数据或指令通过网络传递,调用者发送完信息后可以继续完成其他操作,信息由消息传递系统负责传递。另外,通过回调函数,调用者事后能得到处理结果的通知。异步调用和回调比同步调用增加了设计的复杂度,但是异步调用可以反复执行直至调用成功,这使得通信更加可靠。异步消息传递还有其他一些优点,如节流请求、平衡负载等。读者对象本书适合以下应用开发人员和系统集成人员,可以帮助他们使用面向消息的集成工具来完成应用互连:
在设计和构建复杂的企业应用时,需要集成其他应用的应用架构师和开发人员。假设你正在使用现代企业应用平台(如Java 2平台企业版或Microsoft .NET框架)来开发你的应用,本书能帮助你把应用连接到消息传递层,通过消息传递层与其他应用交换信息。本书的重点在于应用的集成方面,而不是如何构建应用;如果你想了解如何构建应用,请参考Martin Fowler所著《Patterns of Enterprise Application Architecture》一书。
为了连接已经封装或定制的应用,设计和构建集成解决方案的集成架构师和开发人员。属于这个群体的大多数读者已经有使用某种商业集成工具(如IBM WebSphere MQ、TIBCO、 WebMethods、SeeBeyond和Vitria等)的经验。这些工具中,大多数都提供了本书介绍的模式。因此本书能帮助读者理解这些模式的内涵,帮助他们作出独立于产品提供商的设计决策。 ..
保持企业中软件和硬件资产“大局观”的企业架构师。本书提供了一种统一的语言,可以帮助架构师描述大规模的集成解决方案,即使这些方案是由许多不同的技术和局部解决方案构成的。采用这种语言能帮助企业架构师、集成与应用架构师和开发人员实现更有效的沟通。本书内容本书不会为企业应用集成建立商业案例,而是把重点放在如何实现应用的集成上。读者通过掌握以下知识可以学会如何集成企业应用:
与其他集成技术相比较,异步消息传递有哪些优点与局限性。 如何规划应用所需的消息通道,如何控制多个消费者能否得到相同的消息,如何处理非法消息。
发送一个消息时,消息中应该包含哪些内容,如何使用特殊的消息属性。 如何路由消息使之到达最终的目标,即便发送者不知道目标在哪里。
当消息的发送者与接收者不能使用共同的消息格式时,如何转换消息。 如何设计连接应用与消息传递系统的代码。
当消息传递系统作为企业应用的组成部分运行时,如何管理和监控。本书未涉及的内容
任何在标题中冠以“企业”一词的书籍不外乎以下三类。其一是试图概括整个主题,但缺少如何实现具体解决方案的详细指南;其二是为开发具体解决方案提供详细的手册,但是却无法涵盖整个主题;其三是试图提供既完备又详尽的解决方案,但这样的书籍要么还未出版,要么就是出版得太晚。因此我们倾向于选择第二种方式,希望能编写一本书帮助人们设计更好的集成解决方案,即使书的内容会因此而受限。有一些主题我们本想介绍,但是为了避免陷入第三类情况,因此书中没有涉及,这包括安全性、复杂数据映射、工作流、规则引擎、可扩展性、健壮性和分布式事务处理(诸如XA、Tuxedo等)。我们选择异步消息传递作为本书的重点,这是因为存在着大量与之相关的设计问题和折衷方案,而且可以从各种集成应用提供商那里获得许多案例。
本书还是一本有关各种消息传递或中间件技术的指南。在书中你可以找到采用不同技术(如JMS、MSMQ、TIBCO、BizTalk和XSL)的例子,这些例子能为读者演示如何把模式转换成真正的实现。如果你还想获得这些技术的更详细的说明,请阅读本书的参考文献或从在线帮助中获得相关的资源。本书的组织结构 顾名思义,本书主要收集了各种模式。人们已经普遍认为,模式能把专家在不同领域中缺乏固定答案的知识捕获下来,这些领域包括应用体系结构、面向对象的设计或基于异步消息传递体系结构的集成解决方案。
每种模式都引出一个特殊的设计问题,通过介绍与问题相关的具体环境,提出一种能平衡各种矛盾或动因的解决方案。在大多数情况下,解决方案并不是一下就能想到的,而要经过多次实践不断提炼。因此,每种模式都融合了高级集成开发人员和架构师从反复构建的解决方案和挫折中总结出的经验。也就是说,本书并没有“发明”什么模式;模式是无法发明的,而是从相关领域的实践中发现和观察到的。
由于模式来源于实践者的实际应用,因此,如果你有机会接触过企业集成工具和异步消息传递体系结构,那么你对本书所介绍的许多模式就不会陌生。即便如此,这本书还是值得阅读的。它能帮助你确认一些晦涩的理解是否正确,这包括设计详细的解决方案时如何使用消息传递,以及你可能还没有注意到的各种模式之间的关系。本书还能帮助你将自己的知识更方便地传授给缺乏经验的同事。最后,这本书确定了模式的名称,这为同事之间更好地讨论各种集成设计方案提供了通用的术语。
书中的模式可以应用于各种编程语言和开发平台。因此模式并不是一段可粘贴复制的代码,你必须在自己的实践环境中实现模式。为了使这种转换更加容易,书中列举了各种各样的例子,并采用常用的技术(如JMS、MSMQ、TIBCO、BizTalk、XSL等)来演示模式的各种实现。另外还提供了几个大型示例,展示如何将多个模式结合起来形成一个整体解决方案。
使用异步消息传递体系结构来集成多个应用是一个富有挑战而又有趣味的研究领域。希望你能像作者一样喜爱阅读这本书。 Gregor Hohpe San Francisco, California Bobby Woolf Raleigh, North Carolina 2003年9月
www.enterpriseintegrationpatterns.com ...
序言回到顶部↑
JOhn Crupi
当新的技术到来时,你会如何面对它?对我来说,就是尽快掌握这门技术。我研究过J2EE(由Sun Microsystems公司提出,它对我非常有用)。由于当时缺乏相关书籍,我只能阅读J2EE的规范,并把注意力集中在EJB技术方面。然而,掌握技术只是第一步,真正的目的应该是学会如何有效地应用技术。平台技术的优点在于它们能帮助你完成指定的任务。就技术本身而言,你可以随心所欲地用它做任何事情,可是一旦应用不当,就会带来很多麻烦。.
在过去的15年里,我发现编程和设计这两个领域——确切地说,是有效的编程和设计这两个领域——一直困扰着软件开发人员。已经出版的大量书籍介绍了如何采用Java和C#实现最有效率的编程,但是介绍如何进行更有效设计的书籍却很少,这也是创作这本书的初衷。我和Deepak Alur、Dan Malks编写《Core J2EE Patterns》的目的,就是为了帮助J2EE的开发人员设计更好的代码。我们的理想是让这些设计模式成为开发者最好的选择。正如Sun公司杰出的工程师James Baty指出的:“模式就好比设计的甜点”。对此我十分赞同,幸运的是,Gregor和Bobby也这么认为。..
这本书集中讨论了一个热门的话题:消息传递的集成。这不仅是因为消息传递是集成的关键, 同时也因为它在即将兴起的Web服务中也将占据支配地位。当前针对Web服务存在着太多的争议,仅仅为了确定关键的规范和技术就需要做出细致、艰辛的努力。然而,“软件帮助你解决问题”这一目标并未改变。正像刚刚推出J2EE和.NET技术时一样, 目前为Web服务提供的设计帮助也不多。很多人认为Web服务只是一种能解决现有集成问题的新的、开放的方法。尽管我也同意这种观点,但是我们并不知道如何设计Web服务,而这也正是《企业集成模式》这本书的精华所在。相信这本书能为你提供设计Web服务和其他集成系统时所需的许多模式。由于Web服务规范仍在修改过程中,所以Bobby和Gregor没有必要提供太多有关Web服务规范的例子。不过,当Web服务规范成为标准时,完全可以使用这本书介绍的模式来设计由这些标准实现的解决方案。甚至还能实现下一个集成目标:设计面向服务的体系结构。
请阅读这本书,并随时把它放在身边,它将使你的软件职业生涯不断提升。...
John Crupi
Bethesda,MD
2003年8月
当新的技术到来时,你会如何面对它?对我来说,就是尽快掌握这门技术。我研究过J2EE(由Sun Microsystems公司提出,它对我非常有用)。由于当时缺乏相关书籍,我只能阅读J2EE的规范,并把注意力集中在EJB技术方面。然而,掌握技术只是第一步,真正的目的应该是学会如何有效地应用技术。平台技术的优点在于它们能帮助你完成指定的任务。就技术本身而言,你可以随心所欲地用它做任何事情,可是一旦应用不当,就会带来很多麻烦。.
在过去的15年里,我发现编程和设计这两个领域——确切地说,是有效的编程和设计这两个领域——一直困扰着软件开发人员。已经出版的大量书籍介绍了如何采用Java和C#实现最有效率的编程,但是介绍如何进行更有效设计的书籍却很少,这也是创作这本书的初衷。我和Deepak Alur、Dan Malks编写《Core J2EE Patterns》的目的,就是为了帮助J2EE的开发人员设计更好的代码。我们的理想是让这些设计模式成为开发者最好的选择。正如Sun公司杰出的工程师James Baty指出的:“模式就好比设计的甜点”。对此我十分赞同,幸运的是,Gregor和Bobby也这么认为。..
这本书集中讨论了一个热门的话题:消息传递的集成。这不仅是因为消息传递是集成的关键, 同时也因为它在即将兴起的Web服务中也将占据支配地位。当前针对Web服务存在着太多的争议,仅仅为了确定关键的规范和技术就需要做出细致、艰辛的努力。然而,“软件帮助你解决问题”这一目标并未改变。正像刚刚推出J2EE和.NET技术时一样, 目前为Web服务提供的设计帮助也不多。很多人认为Web服务只是一种能解决现有集成问题的新的、开放的方法。尽管我也同意这种观点,但是我们并不知道如何设计Web服务,而这也正是《企业集成模式》这本书的精华所在。相信这本书能为你提供设计Web服务和其他集成系统时所需的许多模式。由于Web服务规范仍在修改过程中,所以Bobby和Gregor没有必要提供太多有关Web服务规范的例子。不过,当Web服务规范成为标准时,完全可以使用这本书介绍的模式来设计由这些标准实现的解决方案。甚至还能实现下一个集成目标:设计面向服务的体系结构。
请阅读这本书,并随时把它放在身边,它将使你的软件职业生涯不断提升。...
John Crupi
Bethesda,MD
2003年8月








点击看大图






加载中...

