Apache Synapse 的重要性

Synapse 是一個簡單的 XML 和 Web 服務管理與集成代理,可用於構成 SOA 和企業服務總線(ESB)的基礎。Synapse的關注點是路由,轉換,消息驗證以及基於web服務和xml標準的註冊。它支持HTTP, SOAP, SMTP, JMS,FTP ,MTOM/XOPPOP3/IMAP/SMTP 等傳輸協議,還支持多種web服務規範(WS-*)。Apache Synapse是 Web 服務項目中一項成熟的 Apache 活動,並且是非常成功的 Apache Axis2 項目的一個分支。它提供了中介、管理、以及在各種不同的應用程序之間轉換 XML 消息的能力。Apache Synapse 的重要性體現到以下幾個方面:

1、將您現有的系統轉化為 SOA 平臺

Apache Synapse 是一個簡單的、高質量開放源代碼的替代方法,為實現 SOA 提供了一種途徑,它可以公開現有的應用程序,而無需重新編寫任何代碼。重用、集成、管理和控制 與現有應用程序的交互,而無需對它們進行更改,這種能力使得 Synapse 成為一項頗具吸引力的選擇、以及實現 SOA 策略的關鍵途徑。

ESB 模型促進了與服務契約和與服務契約相關聯的元數據的基於 SOA 的集成,如 Web 服務描述語言(WSDL)、模式或策略。ESB 模型(請參見圖 1)確保進入該總線的每條消息最終都能到達正確的位置。

Apache Synapse 的重要性

SOA 模型 。Synapse 構建於 XML 和 Web 服務標準之上。從最基礎的角度而言,Synapse 建立在通過網絡傳送消息的思想之上。消息可以採用任何格式,但是 Synapse 將它們放到一個邏輯信息集中,並採用包含 Header 和正文的信封的 SOAP 方法對其進行建模。通過使用 Web 服務標準,如 WS-ReliableMessaging 和 WS-Security,您可以使用 Synapse 以確保應用程序之間安全的、可靠的連接。Synapse 可以負責這些類型的服務質量(QoS)功能,而無需修改現有的應用程序。通過在現有的 XML/HTTP 服務前面直接放置一個 Synapse 實例,您就可以添加對 WS-Security 的支持。這樣可以添加對數字簽名的支持,在 B2B 環境中是很重要的。

通用的交互模型:HTTP 和 SOAP 。隨著 Web 的出現,HTTP 已經成為通用的信息傳輸方法。由於它具有防火牆友好性、廣泛的可用性、得到廣泛的承認、以及 HTTP 在全球範圍內受到廣泛支持,大多數企業已經使用 HTTP 公開他們的服務。可以以兩種不同的方式來看待 HTTP,將其視為實際的交互協議,或視為傳輸協議。那些將 HTTP 視為交互協議的人將遵循 REST模型,並且傾向於嚴格遵守 HTTP 動詞(GET、PUT、POST、DELE)語義。還可以將 HTTP 作為防火牆友好的傳輸方式,通常的模型是發送 XML 文檔,然後再從響應中獲取 XML 文檔。

SOAP 是一種通用的、傳輸方法獨立的消息傳遞格式。因為它與平臺、傳輸方法和語言無關的本質,所以它已被許多應用程序所採用,從幫助 eBay PowerSellers 管理他們的店鋪,到跨網絡發送打印作業。它也是許多高層次規範的基礎。它可以與其他機制一起使用或者單獨使用,實際上,SOAP 和 HTTP 構成了通用的交互模型,並且可以連接企業邊界內外的異類系統。

儘管 Synapse 支持許多不同的傳輸方式,其核心仍然使用了 SOAP 模型。這意味著什麼呢?從最基礎的角度而言,這意味著有反映 SOAP 信封的內部數據結構。例如,to 和 replyTo 地址使用 WS-Addressing 規範進行建模。當消息流通過 Synapse 引擎時,可以使用標準中介將消息與各種格式之間進行轉換,包括 REST、SOAP、JavaScript Object Notation (JSON) 和 JMS。此外,可以通過編寫自定義中介對其進行擴展。

通用數據模型。目前 XML 已經成為通用數據格式,受到幾乎所有編程語言的廣泛認可和支持。這使得異類應用程序能夠使用共同的數據模型來傳遞數據,而任何語言都可以很容易理解這個數據模型。在 Synapse 中,所有的內容都是與 XML 有關的,並且其思想是在網絡中儘可能地使用 XML,從而將您的整個網絡變為一個總線。這樣做的原因之一是,網絡中所有的 XML 交互構成了 ESB,可以使用 Synapse 對這個總線進行管理。

Apache Synapse 的重要性

可以使用不同的方法來部署 Synapse。

Apache Synapse 的重要性

  • Proxy 模型 在代理模型(如上圖 )中,您明確地定義一個新的端點(代理),Synapse 在該端點上進行偵聽。實際上,這就像一個新的服務,除了服務邏輯是通過遠程服務來實現之外。在這個模型的最簡單的實例化過程中,您可以直接將代理偵聽器連接到遠程端點。然而,即使在這種簡單的情況下,您也可以完成一些有價值的事情。例如,您可以在 XML/HTTP、SOAP 以及 JMS 之間進行切換。您可以打開或者關閉某些協議,如 WS-Addressing、WS-ReliableMessaging 和 WS-Security。並且在 Synapse 1.0 發行版中,您可以在這些協議之間定義一組相同的服務並平衡負載。

  • 基於策略的部署 在這一方法中,您可以對客戶端進行配置,以便將所有的消息發送到 Synapse。例如,Synapse 可以作為一個 HTTP 代理。這是非常方便的,因為幾乎每個 Web 客戶端都可以配置 HTTP 代理,而無需改變應用程序代碼。通常只需要對通過 Synapse 的消息進行重定向即可。Synapse 有一個缺省的活動序列,應用於按這種方式到達的任何消息。然後,可以使用諸如基於內容的篩選(XPath 或者 Regex)之類的技術,以便有選擇地將這些策略應用於特定的消息。

2、中介引擎

Apache Synapse 實現了通用的中介框架。您可以指定一個對消息進行操作(基於它所到達的端點、或基於某種篩選)的中介序列。Synapse 的目標是支持一組有價值的、即時可用的中介。這類內置中介包括:

  • 記錄日誌到 log4j。

  • 修改 Header,包括 WS-Addressing Header。

  • 運行腳本,包括 JavaScript、Groovy、Ruby 和 Bean Scripting Framework (BSF) 所支持的其他腳本。E4X 支持允許 JavaScript 直接操縱 XML 消息,而不需要使用像 DOM 這樣的 API。在 Ruby 中也存在類似的支持。

  • 啟用和終止 WS-Security 與 WS-ReliableMessaging。

  • 在 SOAP 版本和 XML/HTTP 之間進行切換。

  • XML 模式驗證。

  • 發現消息中的錯誤或者丟棄它們。

  • Apache Synapse 的重要性

3、連接、管理和轉換您的企業服務

Synapse 可以連接和管理您的服務,併為您的服務提供中介。

例如可以使用 Synapse 將簡單的 GET HTTP 請求映射為與後端連接的 XML/JMS。使用這種方法,可以對更大範圍的客戶端公開遺留的資源,包括 Asynchronous JavaScript + XML (Ajax) 應用程序和移動設備。

管理 Synapse 為管理策略和服務的其他方面提供了一致的模型。通過將 Synapse 作為中間層,您可以控制諸如身份驗證、審核、日誌之類的方面,或者諸如故障轉移和負載平衡之類的 QoS 方面。這使得您的組織可以更高效且更有效地管理資源。可以通過配置一個簡單的 XML 文件來啟用所有這些特性,而無需編寫任何代碼。

下面提供了一些示例:

  • 可以將 http://stockquote.com?symbol=RHAT 映射為一個服務,並作為一個基於負載平衡策略(如 Round Robin)的集群進行部署。如果是主服務器加後備服務器的情況,當主服務器關閉時,故障轉移中介可以將它映射到後備服務器。

  • 可以為所有的對 http://abcbank.com/personal 的請求進行身份驗證、日誌記錄、以及隨機地進行日誌記錄和審核標註。

  • 可以對 http://abcbooks.com/suppliers?category=XXXX 應用中介,以便根據供應商類別添加不同的策略。例如,如果 category=silver,那麼供應商的信用額度是 5000;如果 category=gold,那麼供應商的信用額度可以是 10000。

轉換 Synapse 可以將您的遺留應用程序轉換為先進的 Web 服務。Synapse 可以用作代理,並且可以通過完成下面的一項或者多項工作實現服務和應用程序的虛擬化:

  • 對 SOAP 消息(Header 或正文)執行 XSL 轉換(XSLT)

  • 使用 JavaScript/E4X 轉換程序直接將 XML 映射為 JavaScript

  • 使用傳統的 Java 對象(POJO),您可以在其中編寫 Java 邏輯,以便對消息進行操作

  • 將 JSON 映射為 XML,其中可以將 JSON/HTTP 流作為 SOAP 消息發送,反之亦然

  • 執行附件中介,其中可以將帶附件的 SOAP 轉換為 Message Transmission Optimization Mechanism (MTOM)、將 Base64 轉換為 MTOM,反之亦然。

  • 執行您自己的自定義轉換

這為重用您現有的應用程序、以最少的投資對它們進行集成以提供更好的服務提供了機會。有了 Synapse,您可以將整個網絡轉換為 ESB,這個 ESB 提供了集中式和一致的方法,以便管理所提供的服務。

4、總結

Apache Synapse提供了一個簡單的、易於使用的、開放源代碼替代方法,以最少的成本和工作量,將您現有的中間件重新構造為 SOA 平臺。通過中介或者轉換現有的服務,而無需進行編碼,實現了重用的最大化,並且提供了一種優秀的模型,以便將您的服務集成到 ESB 模型。


分享到:


相關文章: