2011-07-04 36 views
12

下列术语之间的关系和差异是什么?EMS,ESB和MOM,JMS

  • 企业发消息系统(EMS)
  • 企业服务总线(ESB)
  • 面向消息的中间件(MOM)
  • Java消息服务(JMS)
+1

ESB在我们公司的“管理/执行”级别总是存在混淆。我们购买了Tibco产品,他们将其称为“ESB”,他们将其定义为EMS服务器和所有像Business这样的应用程序,可以与它们一起运行。我认为,通过这个定义.net可以被分类。所以ESB--意味着一个消息系统,但是“ESB”的市场营销意味着所有与之相关的工具根据Tibco,我不同意这一点,但为了清晰起见,与管理人员沟通时应遵循他们所知道的内容。 – Brian

回答

4

EMS:任何溶液,其让多个应用程序通过面向消息的协议而不是RPC协议所以基本上交互的应用程序更多地绑定到消息数据而不是传输。

妈妈:我再次相信它可以被视为与EMS相同。

ESB:这是设计企业消息传递系统的一种方式。其他方式是中心和辐射模式。基本上,一个典型的消息传递系统涉及转换,调解,审计,路由和安全等.ESB与hub-spoke指定哪个组件负责哪个部分。

JMS:它是由Java平台提供的统一API,它使开发人员能够直接使用JMS API工作,无需担心底层消息传递框架。消息传递实现必须符合JMS标准,才能由JMS API进行处理。

4

尽管@ ag112的回答将“EMS”扩展为“企业消息传递系统”,但缩写有些模棱两可,可能是最常见的“EMS”扩展指的是TIBCO特有的专有平台, Java Messaging Service (JMS)Specification并且还添加了一些专有扩展。 Enterprise Service Bus (ESB)是一个软件中间件抽象层,它通过事件驱动和通常开放的基于标准的企业“消息传递引擎”将软件组件集成到大型系统中。这些“message oriented middleware (MOM)”结构通常用于软件集成,并可能在Service Oriented Architecture (SOA)的实现中看到。

11

好问题 - 服务总线和邮件系统之间的关键区别在于邮件系统上的数据约定。一个消息系统通常可以让你发送一切:二进制blob,XML,逗号分隔的列表等等。因此,应用程序A可以发送一个逗号分隔的字符串给应用程序B,B将一些XML发送给应用程序C,C发送一些其他的XML到应用程序D. 这是消息传递,但不是'服务总线'。你可以说一个消息系统是'无类型'(动态结构),而ESB是'输入'(静态结构)。

在'服务总线'中,您有一个常用该总线上所有应用程序和适配器的数据定义(可以是带有共享XSD的XML)。通用数据对象(CDO)。任何连接必须发送它的信息坚持这个数据定义。 ESB应该支持加载,共享和版本化这个通用数据定义。最大的好处是你可以连接一个组件(例如Message Broker),而且它不需要知道哪个应用程序发送了这个数据以及这个数据将要发往哪里。

Messaging与ESB的权衡与其他无类型/类型的选择类似:REST与SOAP,未验证的XML与带XSD的XML,Groovy与Java,...有些人会喜欢这种额外的结构(在纸上看起来不错 - 管理者喜欢它) - 有些人会讨厌它(当版本改变时会有东西被打破,另外一点你必须更新所有东西 - 黑客不喜欢这么多; - )

再回到你的问题(重新排序)

  • 面向消息的中间件(MOM):各种语言的软件库与经纪人(或没有)应用程序之间的通信“消​​息”。从TCP/IP通信升级一步。 '消息'是结构化对象或文本字符串或二进制数据。通常你可以通过TCP/IP或UDP获得更多的可靠性。一些例子:TIBCO RV和EMS,IBM MQ,ActiveMQ的阿帕奇,ZeroMQ,...

  • Java消息服务(JMS):常见API对于MOM的定义 - 人抱怨说,当你的应用程序切换MOM'X'给MOM'Y'你需要重写消息代码。如果您对JMS的代码,你可以切换是使用TIBCO EMS工作突然和ActiveMQ(反之亦然)

  • 企业信息系统(EMS)的作品库和相同的应用程序:TIBCO的实现JMS(产品名:TIBCO EMS)

  • 企业服务总线(ESB):一个ESB 使用面向消息的中间件来集成应用程序,数据库,经纪人等ESB是与增加的数据结构和结构定义管理MOM。将新组件连接到ESB时,与将其连接到MOM相比,您可以期望获得更多的“兼容性”。在ESB中,有关组件必须做什么来连接的更高标准。我认为TIBCO的ESB被称为ActiveMatrix。