一個ESB集成框架CodeHaus Mule

Mule 是一個基於ESB架構理念的消息平臺。Mule 的核心是一個基於SEDA的服務容器,該容器管理被稱爲通用消息對象(Universal Message Objects /UMO)的服務對象,而這些對象都是POJO。所有UMO和其他應用之間的通信都是通過消息端點(message endpoint)來進行的。這些端點爲衆多的分立的技術,比如Jms, Smtp, Jdbc, Tcp, Http, Xmpp, file等等,提供了簡單和一致的接口。

Mule 應用通常是由網絡中的許多Mule 實例組成。每一個實例都是一個駐留一個或者多個UMO組件的輕量級容器。每一個UMO 組件都有一個或者多個通過它(們)發送和接收事件的端點。


clip_image001_0013.gif

容器通過UMO組件提供各種各樣的服務,比如事務管理、事件轉換,路由,事件關聯、日誌、審計和管理等等。Mule將對象構造從管理手段中分離出來,通常流行框架和IoC/DI 容器,如Spring, PicoContainer 或者 Plexus 可用這種管理手段來構建你的UMO 組件。

很多人認爲, "Mule是一個Jms 實現"。實際上,Mule 不是一個Jms server,但是可以配置來使用任何你覺得非常漂亮的Jms server。Mule 的理念是,如果已經有了穩定和廣泛接受的實現,就不會直接實現任何傳輸。例如,Mule 就重用了Axis 和 GLUE 的SOAP棧而不是重新實現一個。Mule 提供了一個一致的服務集來管理任何類型的連接的事件流、關聯、事務、安全和審計。

 

下面是Mule Server 組件的簡單圖示:

clip_image002_0002.gif 

spacer.gif

Mule Manager

Mule Manager是Mule server 實例的中心(也稱爲一個節點戶或者Mule Node)。其主要的角色是管理各種對象,比如Mule實例的連接器、端點和轉換器。這些對象然後被用來控制進出你的服務組件的消息流,並且爲Model 和它所管理的組件提供服務。

Model

model 是管理和執行組件的容器。它控制進出組件的消息流,管理線程、生命週期和緩充池。默認的MuleModel是基於SEDA的,它使用一個有效的基於事件的隊列模型來獲取的最大的性能和直通性。

UMO Components

UMO代表Universal Message Object;它是一個可以接收來自於任何地方的消息的對象。UMO 組件就是你的業務對象。它們是執行引入的事件之上的具體業務邏輯的組件。這些組件是標準的JavaBean,組件中並沒有任何Mule特定的代碼。 Mule 基於你的組件的配置處理所有進出組件的事件的路由和轉換。

Endpoints

Endpoint是Mule的通信能力的基礎。一個Endpoint定義了兩個或者多個組建應用或者存儲庫之間的通信渠道。並且提供了一個強大的機制來允許你的對象在一個統一的方式上再多種協議之上進行交談。端點可以通過消息過濾器、安全攔截器和事務信息進行配置來控制什麼消息,在何時,以及怎樣通過端點進行發送和接收。

External Applications

外部應用可以使任何應用,從應用服務器到遺留的傳統應用,主機程序,或者C/S系統。基本上是任何可以產生和操縱數據的應用。因爲Mule通過endpoints執行所有通信,UMO 組件並不打算在其中包含應用產生數據,以及應用主流,以及使用傳輸協議的部分。

 

關鍵特性

  • 基於J2EE 1.4的企業消息總線( Enterprise Service Bus (ESB))和消息代理(broker)

  • 可插入性連接,比如Jms (1.0.2b 和 1.1), vm (嵌入), jdbc, tcp, udp, multicast, http, servlet, smtp, pop3, file, xmpp等

  • 支持任何傳輸之上的異步,同步和請求響應事件處理機制

  • 支持Axis或者Glue的Web Service.

  • 靈活的部署結構[Topologies]包括Client/Server, P2P, ESB 和Enterprise Service Network.

  • 支持聲明性和編程性事務,包括XA 支持

  • 對事件的路由、傳輸和轉換的斷到端支持

  • Spring 框架集成。可用作ESB 容器,而Mule c也可以很容易的嵌入到Spring 應用中。

  • 使用基於SEDA處理模型的高度可伸縮的企業服務器

  • 支持REST API 來提供技術獨立和語言中立的基於web的對Mule 事件的訪問

  • 強大的基於EIP模式的事件路由機制

  • 動態、聲明性的,基於內容和基於規則的路由選項

  • 非***式的方式。任何對象都可以通過ESB 容器管理

  • 強大的應用集成框架

  • 完整的可擴展的開發模式

何時使用

一般在這些情形下使用Mule -

  • 集成兩個或者多個需要互相通信的或者多個現有的系統.

  • 需要完全和周圍環境去耦合的應用,或者需要在系統中伸縮不止一個組件的系統

  • 開發人員不知道未來是否會將其應用分發或者伸縮需求的單VM 應用。

項目地址:http://mule.codehaus.org/
轉載。

現在流行webservice框架主要是Apache Axis2和Apache CXF。
Apache CXF是Codehaus XFire 的第二代產品,目前在不同框架中性能最佳,應該是開發者不錯的選擇,這與它本身的架構設計不無關係。相比其他框架,CXF具有幾個突出的特性:支持JAX-WS、Spring集成、Aegi數據綁定、支持RESTful services、支持WS-*、Apache協議、代碼實現簡潔。Apache Axis2是Apache Axis1的第二代產品,架構上也非常不錯,關鍵特性:支持各種規範、可插拔模塊化設計、支持熱部署等。與CXF相比性能也非常優異。
在服務端框架確定的場景下,最好是採用該框架生成客戶端代碼,這樣配合性能可達到更佳。在實際的項目中,開發者在選擇具體那個框架時,仍還需綜合評估框架的開發組織、產品路線圖、文檔化程度、應用廣泛度、與優異框架的集成度、靈活和擴展性等因素。
在具體項目的實現中,以前項目中用Axis2覺得不錯,但是在不同的項目中CXF又支持的比較好,所以這個還要看項目了。各有優點吧!(找到適合自己的,纔是最好的)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章