1. 程式人生 > >EnjoyingSoft之Mule ESB基礎系列第二篇:Mule ESB基本概念

EnjoyingSoft之Mule ESB基礎系列第二篇:Mule ESB基本概念

目錄

Mule ESB在眾多開源的ESB中處於領先者的地位,MuleSoft公司也作為獨角獸,2017年在紐交所上市。我們作為MuleSoft的合作伙伴也有幸參與其中,在六年多的時間裡,我們使用Mule ESB實施,包括使用Mule ESB企業版實施,或者在社群版基礎上擴充套件,使用Mule ESB社群版實施,幫助國內眾多的企業成功上線SOA專案。

使用Mule ESB的過程中,體會到其快速的開發效率,以及優秀的架構設計。同時也深感國內這塊資料非常稀少,所以計劃使用8篇文章來寫Mule ESB的基礎系列。

1. 使用Anypoint Studio開發

Anypoint Studio是 MuleSoft提供的基於 Eclipse架構的整合開發環境 (IDE) 。使用Anypoint Studio,程式設計師可以幾分種內輕鬆地創建出整合化的流程圖,並使用圖形化轉換器來完成資料的對映。這裡的對映就是指訊息轉換,訊息轉換是ESB很重要的功能。Anypoint Studio的圖形化轉換器功能非常強大,可以全方面的轉換資料,包括資料結構,資料型別,資料內容的轉換等。注意,圖形化轉換器是企業版才有的功能,社群版則需要自行開發,我們在社群版做過類似的圖形化轉換工具。

Anypoint Studio可以讓開發人員用拖拽的方式把聯結器(Connectors)、轉化器(Transformers)以及其他Processor放到開發環境的畫布上,Anypoint Studio會自動把圖形化的流程介面轉化為後臺的XML配置檔案。

Anypoint Studio預設整合Mule ESB企業版執行時,我們也可以在Anypoint Studio上整合社群版執行時,具體可參考上一篇文章

下圖是Anypoint Studio的各個區域說明。

  • 包資源瀏覽器

    和Java工程類似,管理工程專案的資源。

  • 畫布

    主要的視覺化開發環境,通過拖拽的方式組織邏輯,定義屬性。

  • 工具箱

    包括Connector,Processor等開箱即用的元件。

  • 連線探索器

    這裡可以展示全域性的聯結器配置屬性。

  • 控制檯

    和Java工程一樣,Console輸出控制檯。

在主介面上有三個Tab頁籤,其中圖形化設計器和XML編輯器是可以互相切換的。所以你可以使用圖形化的拖拽開發,熟悉Mule的工程師也可以直接使用XML編輯器來完成工具。需要注意的是,有些屬性在圖形化介面是無法設定的,這個時候你只能在XML編輯器中完成設定工作。好在XML編輯器也提供程式碼上下文語法提示,可以方便開發工程師輸入XML元素。

  • Message Flow

    圖形化設計器頁籤,在這裡可以拖拽元件,編輯元件屬性。

  • Global Elements

    全域性元素列表頁籤,所謂全域性元素,可以理解成這些元素是全域性共享,可以被其他元素所引用。

  • Configuration XML

    點選此頁籤,切換到XML編輯器。實際上,圖形化介面就是對XML程式碼的渲染。

2. Mule ESB Application Structure - Mule ESB應用程式結構

我們來看一個基於Maven專案,使用典型的archetype構建的應用程式的目錄結構,可以看到一般分成src/main/java,src/main/resources,src/test/java,src/test/resources等目錄。每個目錄的作用Java程式設計師都很清楚。

我們再來看看Mule ESB Application的結構是什麼。從圖示可以發現,Mule的應用程式和Java應用程式幾乎一致,其中有幾個新目錄著重介紹一下。

  • src/main/app

    這個目錄就是放置Mule的配置檔案,也就是Mule Configuration File。開啟Mule Configuration File就會開啟設計器介面。

  • src/main/api

    這個目錄是放置Restful API的定義檔案。

  • src/main/wsdl

    這個目錄是放置SOAP Webservice的WSDL檔案。

3. Mule ESB Application整體構造

我們在上一篇文章已經對Mule ESB Application有了一個初步的認識,總結起來,Mule的應用程式就是由一個或者多個Mule Configuration File組成,每個Mule Configuration File裡面可以放置一個或者多個Flow。每一個FLow又是由Connector和Processor等組成。

而Flow是Mule的核心概念,下圖展示了Flow的結構。

4. Mule ESB構造元素 - Flow

Mule ESB的應用程式通常是設計用來接收和處理訊息。接收訊息我們通常使用Connector Source來做,而處理訊息通常使用一個或者多個Processor來做。Flow就是用來組織Connector和Processor的組。在一個Flow中,你可以將多個單獨的Mule元素連結起來,用來實現接收,處理,過濾,路由訊息等功能。

Flow實際就是上圖的邊框。實際還有Sub Flow的概念,主要用於Flow的公用,這些不展開講述。

5. Mule ESB構造元素 - Connector

Mule的Connector是其非常優秀的功能,數百個開箱即用Connector可以幫助開發者連線不同的應用。從常見的HTTP,TCP,FTP,LDAP等協議,Hadoop大資料,到大型的商用系統SAP,Oracle,Salesforce,Mule都提供了相應的Connector。

Connector又分成Source Connector(又稱為Inbound Connector)和Target Connector(又稱為Outbound Connector)。

Source Connector用來接收訊息,可以理解成監聽器,而Target Connector是用來發送訊息的元件。

6. Mule ESB構造元素 - Processor

Mule的Processor包含的內容更廣泛,從Studio右側的工具箱可以看到很多的控制元件元素,除去上文講述的Connector,餘下的基本都可以歸納到Processor。

Processor大概可以分成幾類。

  • Transformers

    可以稱作轉換器,用來轉換訊息的型別,結構和內容,比如將XML換成JSON。

  • Components

    元件,可以使用Java或者指令碼語言元件,比如JavaScript等。這些元件使用程式語言來描述商業邏輯。

  • Flow Control

    控制訊息的流向,比如訊息的路由,訊息的分割聚合等。

  • Scopes

    通過Scope,我們可以改變內部Processor的行為特徵。

  • Filters

    過濾訊息,我們可以定義規則過濾非法的訊息。

下圖總結了本文所講述的內容,該Flow包含了上述所說的幾類Processor。

本文已經講述了Mule的基本概念,包括Mule ESB Application,Flow,Connector,Processor等。貫穿其中的就是訊息,也就是Mule Message。Mule Message是Mule開發中非常重要的概念,下篇文章將著重講解Mule Message。

本文同步發文於EnjoyingSoft之Mule ESB基礎系列第二篇:Mule ESB基本概念

訪問EnjoyingSoft 網站,獲取更多Mule ESB實施,Mule ESB社群版實施,Mule ESB 實施,Mule ESB 社群版 實施幫助。

歡迎轉載,但必須保留原文和此段宣告,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利。