Enterprise Service Bus、.NET Service Bus、NServiceBus 和匯流排上的輪子
企業服務匯流排(ESB)、.NET 服務匯流排(Windows Azure AppFabric 服務匯流排)、NServiceBus、RhinoServiceBus、MassTransit 等。
我試圖了解這些技術的共同點或不共同點。
我今天早些時候參加了 Juval Löwy 關於 .NET 服務匯流排的演講,他說 .NET 服務匯流排可以用作 ESB 的窮人版本,所以我認為這意味著 .NET 服務匯流排不是ESB,其他任何一個都是真正的 ESB 嗎?
如果其他任何一個是真正的 ESB,與 .NET 服務匯流排相比,什麼會使它們成為真正的 ESB?
我同意另一張海報:ESB 有點像 SOA,這是一個一般定義,主要用作營銷賣點,而不是您必須滿足的嚴格標準。
來自維基百科:
對於是否將企業服務匯流排 (ESB) 定義為一種架構風格、一個軟體產品或一組軟體產品,評論者意見不一。雖然使用 ESB 肯定意味著遵循特定的架構,但術語“企業服務匯流排”幾乎總是指支持這種架構的軟體基礎架構,本質上,ESB 被認為是實現面向服務架構的平台。
ESB 將轉換和路由等與流相關的概念引入了面向服務的體系結構。ESB 還可以為端點提供抽象。
作為一個術語,ESB 似乎是由 Dave Chappel 創造的,他是(曾經是?) Sonic Software 的技術佈道者(以及作者“企業服務匯流排” - O’Reilly:2004 年 6 月,ISBN 0-596-00675-6)。我已經閱讀了這本書並參加了 Chappell 的幾次研討會,恐怕這本書本身並不能幫助您確定產品 X 是否是“真正的”ESB。
一般來說,您應該尋找基於消息的東西(顯然,這是最初的意圖,即使其他一些公司,如 webMethods,使用該術語來表示他們的產品,這更面向 Web 服務)。
這個想法是讓您的 IT 基礎架構中的所有“服務”能夠相互接收和發送消息。ESB 提供路由,並具有介面端點,因此如果您的原始應用程序工作 - 例如 - 通過通過 HTTP post 呼叫 JSP 頁面,您有一個可以接收消息的小程序,使用其有效負載通過 HTTP 發布消息,解釋結果並使用這些建構消息響應。
基本上,想像一下,不是對所有事情都使用 Web 服務,而是使用消息隊列、建構路由站以及消息隊列和其他系統之間的介面。這是一個 ESB。
這很長,但很有啟發性:https ://gist.github.com/chitchcock/1281611
(Steve Yegge 的一篇關於亞馬遜如何轉向“API for Everything”政策的文章)。