2011-07-04 41 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。