因為項目需要,對一些開源的ESB產品做些分析和比較,NServiceBus vs MassTransit vs PEServiceBus
在今后的blog中我會把這幾種產品做一個詳細的分析和實例比較,可以提供大家參考
NServiceBus說明
對比Web服務
這幾乎不值得的努力,也需要輸入。一旦你把“紅色葯丸”你永遠不會看到的世界一樣了。對我來說,這是要烏迪的類。去上他的課之前我已經做了十年的使用SOAP和REST的Web服務,我一直運行到同一類型的問題,一遍又一遍。我讀過的所有的供應商的最佳實踐等等,但一直困擾我的事情是如何與這些“最佳實踐”(如果它甚至適當給他們打電話),總是指出我們回到購買更多的許可證,如的數據庫許可證,OS許可證,如果你想大開眼界和樣品的烏迪帶來的表,看看他的可靠性,可用性和可擴展性網絡直播。最大的問題是與Web服務它們運行相抵觸的幾乎所有的謬誤。
那么,在哪里Web服務適應嗎?作為第三方連接在網絡上的集成點。他們已經在這一領域的工作很好,在可預見的未來將繼續正常工作。此外,“網絡服務”AJAX調用從瀏覽器到服務也可能是適當的。
對比WCF
從本質上講,WCF只是一種包裝微軟的無數的集成和通信技術的下一個API。問題是,所有這些技術,除MSMQ,是建立在RPC遠程過程調用的范式。從本質上講,它是所有關於阻止通信。你能想象的世界里,你叫別人在手機上,等待擱置,直到您獲得您所需要的信息嗎?RPC是就這樣。你的服務器是在0%的CPU,但你有沒有服務的線程,因為他們都阻塞,等待遠程服務,以應對。MSMQ綁定有幫助,但如果你使用它在一個同步阻塞方式的RPC類型的相互作用。
對比微軟的BizTalk
這一個幾乎是相同的Web服務,但我們正在朝着正確的方向前進。現在,至少我們要去的道路上朝着消息。唯一的問題是,我們所有的業務邏輯集中。別急,我想我們要集中業務邏輯,對嗎?這是錯誤的。是的,我們要集中我們的業務邏輯,但我們要做到這一點,在“商業服務”的水平,而不是在基礎設施和技術水平。此外,經紀一輛公交車經紀是一個單點的如果你是使用它作為一個集成點之間的多個業務服務失敗,並在您的系統中的一個瓶頸。然后,是不好的。盡管微軟嘗試重新命名的BizTalk為“公共汽車”,它肯定是不。它是基於一個根本不同的范式后。不要上當,購買更多的許可證是絕對必要的。
另一方面,這並不是說,你不能利用的BizTalk如果你已經已經分叉的現金牌照。烏迪有一個很好的文章,關於如何利用的BizTalk。
對比MassTransit Rhino服務總線
讓我先說,我非常高興,這兩輛公交車出現在現場。德魯賣方,克里斯·帕特森和Oren Eini取得了顯着的開源社區的貢獻和努力的結果,每個人都受益。事實上,當我第一次開始做發布/訂閱,我去MassTransit,因為API是清晰,簡潔,代碼驅動。NServiceBus在1.x階段,但仍XML驅動線(唉!)仍然在很大程度上利用Spring.NET做注射。作為的結果MassTransit,界面和“主機”的環境中使用NSB已經顯著增強。NET社區中一般有一個更好的了解的消息。
好了,現在的投訴。說實話,我沒有什么可抱怨的。目前,我們的幾個地方實際使用MassTransit的生產和這些地方一直表現和行為,我已經感到非常高興。同時,開始了作為一個項目,幫助其學習通訊MassTransit。DRU和克里斯說,這多次。實際上,它已經為他們的學習經驗。我將是第一個說我已經寫了一個軟件,每一次我學到了很多東西,通過編寫軟件。關鍵的一點,我試圖把車開回家的是,NSB來的,因為有一個非常具體的需要烏迪與他的客戶,他能夠填補這個空白后等待(等待,等待)微軟發布的東西在發布/訂閱的空間。相反,DRU和克里斯,誰也有需要,實施作為工作的進展情況,了解有關信息。
盡管這一切,我也將是第一個說,即使你選擇MassTransit,你是一個聰明的舉動,我前面提到的所有其他選項相比。
這樣做的另一個方面也值得關注,那就是社會。而這正是NServiceBus真正開始閃耀。在NET世界中,有相當多的這三種實現方式。Java有幾個,我不知道存在的動態語言一邊的圍欄。但在。NET土地,,NServiceBus需要的蛋糕就一個活躍的社區。它有大量的文件和繁榮的雅虎集團。有傳聞說,建立一個多層次的授權結構NSB一個支付選項,要求這些公司的支持合同,同時還免費為他人。這是一個重大的一步一個開放源碼庫的成熟度,幾乎可以保證烏迪超越庫的可行性。有效地庫現在是“做大”他是,他是一個高大的家伙。
可插入性
另外一個關鍵的拼圖是NServiceBus的可擴展性。幾乎在任何可能的方式,你能適應它的工作在你的基礎設施的要求。例如,你可以插入自己的消息隊列基礎設施,如果MSMQ是不是為你工作,或者你決定的ActiveMQ等,是更適合於您的組織。如果你需要一個不同的序列化,只需將其插入。如果您需要使用別的東西,除了一個關系型數據庫的認購存儲或你的傳奇存儲,只需插上電源線。
結論
NServiceBus作為其基礎的分布式計算和理解,烏迪大漢的謬誤。在一個點,它可以被看作是一種簡單而有趣的,單開發項目的。但沒有更長的時間。它早已跨越的鴻溝,威脅的obsolesce及折舊的鴻溝是否穿越過幾個開源庫。如今,它已成為一個嚴重的應用程序框架。讓NServiceBus引導你的應用程序的開發走向成熟的概念,如發布/訂閱,它有能力徹底改變你的組織內的開發方法,並大大降低成本,積極開發,集成和維護您的企業系統與。