TechTarget中国网站推荐

在ESB中选择路由还是编配?(二)

2008-8-27  选择字号:  | |
打印本文章
正在加载数据...

  基于DSL的方法:轻量级编配器

  模式的终点即是轻量级编配器的起点

  企业集成模式是帮助构架路由和编配解决方案的重要概念,而且EIP组件是能够切实设计这些问题的解决方案的绝妙工具。然而,在复杂的集成环境下,组合结构的方法极易导致过于分散和过度设计的配置。而且和许多模式一样,EI模式个数有限,而现实世界充满了需要更灵活解决方案的意外情况。

  答案是使用轻量级、编配相关的DSL(领域特定语言),它就是PEtALS中提供的“轻量级编配器”或“企业集成编配”组件。

  什么时候适合使用这种组件?这依赖于很多方面,包括开发实践,但是这里有些提示:

  ·就像我们刚刚说的,在仅仅使用正统、“常规”模式很难预见到一个解决方案的情况下,
  ·在经常需要前面描述的“路由”和多路模式(这也可能是一个需要使用规则引擎组件的信号)的情况下,
  ·当基于EIP的系统内部有很多内嵌的“单元”层次的时候,
  ·在一个编配子系统得到了很好地理解且在一个单一位置而不是分散在几个(虽然简单)EIP“单元”进行维护的时候,
  ·当需要一种罕见的EI模式且这个模式不被EIP组件支持的时候(全动态路由、返回地址、内容丰富器、规范化器……)

  EIOrchestration用例:复杂动态路由

  为了显出EIOrchestration组件的优点,让我们关注一下我们系统的扩展性。

  我们已经知道了如何给一个最初只能处理锤子的系统增加一个监测锯子相关项目的特性。我们可以按同样的方式增加其他工具相关的功能。但是,这要求每当我们想要增加另一个工具类型时都对系统进行重新配置。那么,如果我们想让我们的总线使用者能够增加他们自己的工具类型和相关的监测功能呢?

  例子:我们的客户想能动态增加针对螺丝起子类工具的ScrewdriverMonitorService,以及针对转孔机的DrillerMonitorService等等。

  我们可以告诉他们:在每条消息中都给出它必须被发送给的工具相关的监测服务名,然后给系统增加动态路由功能。

  例子:我们对ItemManagement进行了增强,它向ItemManagementListenerService提供以下消息体:

  <items><item type="Screwdriver"   name="screwdriver1"customMonitorService="ScrewdriverMonitorService"/></item>其中增加了customMonitorService数据字段,它可能是客户通过ItemManagement应用提供的。

  在ESB中,可以通过根据“customMonitorService”属性动态选择消息的接收者路由这种消息。例如,在PEtALS内,可以利用EI编配组件,使用它的“get-calls-by-xpath”特性办到:

  <eip:get-calls-by-xpath base="/items/item" service="@customMonitorService"peration="’display’"/>在我们的例子中,它会使用前面的消息调用ScrewdriverMonitorService消息。

  一个完整的PEtALS的EIOrchestration样例

  在一开始,我们就已经说过PEtALS EIOrchestration组件可以很好地处理流程复杂性。那么,这儿有个例子说明了这一点。它在单个配置中收集了我们目前在文中已经看到的全部内容:管道(“eip:chain”元素)和转换,简单的基于内容的路由(“eip:choose”元素)和最后的动态路由(“eip:get- calls-by-xpath”元素),同时兼具良好的可读性

  <eip:eip><eip:chain><eip:choose><eip:when test="/items/item[0]/@type =   ’Hammer’"><eip:call service="ItemToHammerService"   peration="transform"/><eip:call service="HammerMonitorService"   peration="display"/></eip:when><eip:when test="/items/item[0]/@type =   ’Saw’"><eip:call service="ItemToSawService"   peration="transform"/><eip:call service="SawMonitorService"   peration="display"/></eip:when><eip:otherwise><eip:get-calls-by-xpath   base="/items/item"service="@customMonitorService"   peration="’display’"/></eip:otherwise></eip:choose></eip:chain></eip:eip>

  向上搭建沟通业务流程管理概念的桥梁

  那功能齐全、业务级别的编配怎样?

  另一种设计集成的方法是自顶向下的方式,其中会定义企业业务流程。在这种方法中,业务流程驱动了业务服务的定义。因而,在现有应用提供的服务和业务流程期望定义的编配之间需要建立桥梁。这种桥梁表现为企业信息系统内部所有受管理的业务级别服务集合,即它的SOA(面向服务架构),对于低级别、总线上的技术服务和实际业务流程来说,它都扮演了一个保护层的角色。

  在SOA的世界中,执行流程的标准方式是使用一个BPEL引擎[2]。它可以调用几个服务并能在流程和XML文档中完成一些业务逻辑,同时还能够处理数据映射问题。在这种方式中,业务服务定义是编配的关键:哪怕缺少一个服务的定义(一般是WSDL)都会导致BPEL编配无法完成,因而你应该确保更清晰的(然而也是更贵的)服务组合。

  假如要在ESB中使用BPEL,可以参考Adrien LOUIS书写的文章《使用现有服务构建SOA应用》,它提供了关于编配装置的一般性介绍[4]。

  业务流程中的人类干预:工作流

  现在,在我们的工具监测例子中,如果我们想要实现在管理员批准后方能在监测应用中实际显示信息,怎么办?这可能需要专门设置一个操作员来负责进行人工干预。这是业务流程管理的另一面:工作流,它是允许手工、人类操作干预的业务流程,要么因为手工业务任务,要么因为人工监督,通过业务门户或更技术性的管理界面提供的图形用户界面完成。

  关键点在于,与象BPEL编配这样的基于流程的方法不同,工作流遵循的是相反的范式,基于状态的方法。这使得它们更适合长生命周期的流程,没有建构在编配服务之上的限制。因而,“正统的”编配是对工作流服务器的有益补充,通过部署两套面向业务流程的服务器的方法——部分地通过一些有趣的新项目得到了解决,如jBoss & Bull的“过程虚拟机”和Eclipse Java工作流工具项目[5]。

  总结

  在这篇文章中,我们已经了解了几种将业务服务彼此互联的方法,从使用如自定义路由这样的低级别方式,到使用如工作流和编配这样的面向业务的高级别方式。更为重要的是,我们已经展示了ESB集成器对组合本地、技术服务的中间级需求有多么普遍,以及一组“胶水”、“瑞士军刀” 式的特性是如何令它们简单地“把事情搞定”的。

  总而言之:

  ·对于一些简单的集成场景来说(如两个异构应用间的互联),通过ESB相关特性来自定义路由,如通过在应用链接的连接器内增加一个XSL转换来改编数据格式,实际是最简单的方法(拦截器方式)。

  ·当需要某种策略来决定将消息发送给正确的接收者和链接消息操作的时候,我们一般可以使用装配简单、面向模式的集成单元来完成静态路由、链结转换(EIP方式)。

  ·要想解决复杂的路由策略,包括动态路由或复杂的鳞状结构,可使用一种轻量级编配组件来将路由逻辑集中起来(轻量级编配方式)。

  ·在全局,业务级别、良好管理、定义一致的面向业务的服务是值得使用编配进行组装的成果,如基于WSDL的BPEL。要和人类进行交互,可以使用工作流解决方案。

  作者简介

  Adrien Louis是EBM WebSourcing的PEtALS ESB首席架构师和SOA顾问,他拥有8年从事Java EE技术和信息系统集成经验。

  Marc Dutoo是Open Wide的开源解决方案架构师,该公司是法国领先的开源门户集成商。他的兴趣包括SOA、BPM和内容管理。Marc还是Eclipse Java工作流工具项目的联合组长。


企业服务总线的实施策略与总线集成
 企业服务总线的实施策略与总线集成(一)
 企业服务总线的实施策略与总线集成(二)
 在ESB中选择路由还是编配?(一)
 在ESB中选择路由还是编配?(二)

原文出处:http://space.itpub.net/?uid-14780828-action-viewspace-itemid-434648
来源:IT168    作者:Adrien Louis,Marc Dutoo    
随着SOA概念的应声落地,ESB蜂拥而入,虽然它不是一个新的名词但它给人的感觉是既时髦又迷糊,它似乎正在被赋予许多自己不应承载的内容。究竟什么才是ESB……
近日,全球技术领先的企业基础架构软件公司金蝶中间件有限公司(以下简称金蝶中间件)再传捷报,成功中标全国政协办公业务资源信息系统工程……
中国经济的飞速发展和竞争的日趋激烈使很多企业不得不通过不断的变化和业务创新保持持续的竞争力,业务和流程的变化会非常频繁。实际上,由于业务需求的不断变更……
由金蝶中间件有限公司主办的“您的基础架构专家——金蝶Apusic Platform全国巡展”针对SOA的本质怎样落地,软件开发商对开发过程最关注的效率和成本问题……
10月28日,由金蝶中间件有限公司(以下简称金蝶中间件)主办,英特尔公司协办的“您的基础架构专家——金蝶Apusic Platform全国巡展”在北京长富宫酒店成功举办……
面向服务的架构(SOA)是一种基于可以重用的服务的,新的开发应用的架构体系. 近年来, 企业界对于SOA的需求越来越急切. 为了满足这样的需求, 一系列的SOA基础架构产品被推出. 主要的厂商如Oracle, BEA System, IBM都提供了SOA平台产品. 在一个包含各类应用的复杂的IT系统中, 要使用适配器并且在一个符合业务需求的流程中将各类应用串连在一起是一个非常困难的事情, 但是现在的SOA平台将困难转变成了容易。
Web 2.0是2003年之后互联网的热门概念之一,不过对什么是Web2.0并没有很严格的定义。一般来说Web 2.0是相对Web1.0的新的一类互联网应用的统称。
Ruby on Rails, 也称RoR或简称Rails, 是一个使用Ruby语言写的开源网络应用框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。
最新更新
专家答疑
技巧
Jason Bloomberg
企业是否应该意识到,云计算有许多积极因素,是否也有负面影响呢?重要的是要记住,云计算仍然非常新,而且在许多方面比vaporware更现实……
Ron Schmelzer,Jason Bloomberg
我们正在进入多元化的银行和金融服务,我们处理客户关系管理CRM,BI,遗产系统,产品J2EE和.NET和其他异构平台。如果我们想要转移到一个共同的平台,为什么要选择SOA……
Ed Tittel
在您最近的博客中提到,在XML.com中有你喜欢的XML内容。关于XML的信息还可通过什么途径可以得到?请与我们分享更多的来源……