將您的 SOA 合并成三維空間的整合中心,以提高 Web 服務(wù)的互用性。Judith M. Myerson 給出了四個合并的實例:非共享的 SOA 的二維中心、共享的 SOA 的二維中心、共享的 SOA 的三維中心的兩種視圖。權(quán)衡各種利弊,確定三維空間中的整合中心可以承載的 SOA 的最大數(shù)目是非常重要的,使得能夠避免中心超負荷。
引言
在企業(yè)級 SOA 系列文章的第二篇——“使外部 Web 服務(wù)互操作性最優(yōu)”中,我給出了不會導(dǎo)致多個 SOA 超負荷的服務(wù)互用性的實例——從簡單的協(xié)議共存到復(fù)雜的多平臺的互用性。我談?wù)摿擞嘘P(guān)您如何使用 Visual Studio .Net 來開發(fā) Microsoft? .Net 平臺上的 Web 服務(wù)以及如何在 IBM? WebSphere? Application Server 上運行它們的相關(guān)問題。
在本文中,我將談?wù)撊绾螌?Web 服務(wù)及非 Web 服務(wù)的多重 SOA 合并成三維的整合中心來連接各種后端企業(yè)主機系統(tǒng),包括:
- 企業(yè)資源規(guī)劃(Enterprise Resource Planning,ERP)
- 客戶關(guān)系管理(Customer Relationship Management,CRM)
- 供應(yīng)鏈管理(Supply Chain Management,SCM)
- 其它企業(yè)應(yīng)用程序集成(Enterprise Application Integration,EAI)的應(yīng)用程序
- 虛擬的數(shù)據(jù)庫管理系統(tǒng)
我也將討論中心如何接受輸入數(shù)據(jù)——事件和數(shù)據(jù)——來源于各種資源。我使用 X、Y 和 Z 軸在三維空間中展示圖片。
什么是 SOA 整合中心?
SOA 整合中心是 Web 服務(wù)與非 Web 服務(wù)的合并的 SOA 與后端企業(yè)系統(tǒng)的集成。它使得 Web 服務(wù)及非 Web 服務(wù)能夠與運行在不同平臺上的服務(wù)器、主機和微機上的企業(yè)系統(tǒng)交互。
然而,SOA 整合中心不同于面向服務(wù)的整合(service-oriented integration,SOI)。SOI 將 Web 服務(wù)與運行在不同平臺上的主機系統(tǒng)相整合。它使得 Web 服務(wù)能夠通過網(wǎng)關(guān)與主機交互。您需要 ASP.Net 或其它技術(shù)獲取網(wǎng)關(guān)來執(zhí)行普通的 Web 服務(wù)。
SOA 是基于一套業(yè)務(wù)流程的 Web 服務(wù)的交互的體系結(jié)構(gòu)。您可以在第一個 SOA 中獲取 Web 服務(wù)來在第二個 SOA 中復(fù)用代表 Web 服務(wù)的服務(wù)。Web 服務(wù)可能由一些小的 Web 服務(wù)組成,它們將服務(wù)傳遞給客戶。
您使用描述語言(例如,SOAP)或其它描述交互的方法(例如,REST)來定義交互。每個交互都是獨立且松耦合的,以便每個交互都能獨立于任何其它交互。這與依賴網(wǎng)關(guān)來與 Web 服務(wù)集成的緊耦合的主機系統(tǒng)形成對照。
SOA 層
我們看一下二維空間中的 SOA 層。之后,我將向您展示為何三維的整合中心是更好的選擇。
SOA 的 IBM 版本的前五層(請見參考資料)是(從下至上):
- 操作系統(tǒng)
- 基于組件的(系統(tǒng))
- 服務(wù)
- 業(yè)務(wù)流程
- 表示層
第六層是集成體系結(jié)構(gòu)(也作為企業(yè)集成總線(Enterprise Integration Bus)),它垂直覆蓋了前五層。下一層是服務(wù)質(zhì)量、安全、管理及監(jiān)控層。
顯而易見,操作層由 EAI 打包的應(yīng)用程序、遺留、老式的面向?qū)ο蠹吧虡I(yè)智能應(yīng)用程序組成。它們都可以通過使用 SOI(在項目級或企業(yè)級)來同第二層的基于組件的系統(tǒng)相集成。然后,將組件結(jié)合或集成到復(fù)合應(yīng)用程序中來提供第三層的服務(wù)。
第四層向您展示了那些服務(wù)是如何根據(jù)一套業(yè)務(wù)流程從一個流向另一個的。更高一層通過遠程門戶網(wǎng)站 Web 服務(wù)(Web Services for Remote Portlet,WSRP)標準或其它面向人的表示層的方法來將 Web 服務(wù)應(yīng)用于應(yīng)用程序接口中。
二維靜態(tài)的 SOA 可能是有問題的。幸好,整合中心的發(fā)展意味著 SOA 將變成三維動態(tài)的。
可復(fù)用的體系結(jié)構(gòu)
我們假設(shè)該 Web 服務(wù)需要在 .Net 平臺上或隨后的 WebSphere 平臺上運行前從主機系統(tǒng)獲取信息。您需要將 Web 服務(wù)與執(zhí)行普通 Web 服務(wù)的主機網(wǎng)關(guān)相整合。
所有 Web 服務(wù)彼此以 XML 傳遞信息——多個 SOA 中的業(yè)務(wù)流程應(yīng)當如何整合及其在提供的服務(wù)中如何實現(xiàn)。雖然在多個 SOA 中 Web 服務(wù)是可復(fù)用的,但是我進一步將 SOA 處理成可復(fù)用的體系結(jié)構(gòu)。
我有多個實例,它們關(guān)于將可復(fù)用的 SOA 合并成與主機系統(tǒng)相連的整合中心,我提出如下四步來創(chuàng)建中心:
- 將作為可復(fù)用的體系結(jié)構(gòu)的 SOA 數(shù)組劃分成兩個模塊。第一模塊主要包括整合 Web 服務(wù)的機制,而第二個模塊重在服務(wù)交互。
- 為了獲得最佳的速度及可靠性,將每個 SOA 優(yōu)化成更緊湊的形式。檢查可能影響性能的磁盤碎片空間。
- 將 SOA 按照重要性及復(fù)用頻率區(qū)分優(yōu)先次序。檢查用戶對于更改 SOA 優(yōu)先權(quán)的需求。
- 將 SOA 合并成連接到一個或更多主機系統(tǒng)的整合中心,這些主機系統(tǒng)運行在不同的平臺上。檢查先前沒有被提出的互用性問題。
模塊化的 SOA 庫
您可以開發(fā)模塊化的和優(yōu)化的 SOA 庫,這些 SOA 被分成了不同類別的層次。每個類別可以通過層次最低級別的 Web 服務(wù)被進一步劃分成 SOA 的子組。
您可以將庫用作到 Web 服務(wù)應(yīng)用程序的動態(tài)鏈接。當應(yīng)用程序需要訪問模塊化的 SOA 時,它將自己鏈接到庫中。當它不再需要檢索到的 SOA 時,將從庫中釋放自己,當提高速度及性能時節(jié)省磁盤空間。
下列是庫中模塊化的 SOA 的一些實例:
- 衛(wèi)生保健 SOA
- 零售管理 SOA
- 物流 SOA
- 無線射頻識別(Radio Frequency Identification,RFID)SOA
庫用例
假設(shè)您使用在庫中使用最后三個 SOA(零售管理、物流和 RFID)來開發(fā)整合中心并將它們連接到主機網(wǎng)關(guān)中。今后,用戶的需求改變了——取消零售管理 SOA 并以衛(wèi)生保健 SOA 代替它。
同時,用新版本更新物流 SOA 使其迎合用戶的需求。在 RFID SOA 中包含新的子組之后,將所有子組區(qū)分優(yōu)先次序并將它們優(yōu)化。
二維非共享的 SOA
我們看一下 Blue Repository 中的三個模塊化的 SOA(零售管理、物流和 RFID)的二維中心(請見圖 1)。所有都連接到主機網(wǎng)關(guān)中。例如,如果您使用 ASP.Net,那么您可以通過網(wǎng)關(guān)來執(zhí)行普通的 Web 服務(wù)。
圖 1. 非共享的 SOA 的二維中心
如您所見,SOA 不是共享的。您可以將這三者結(jié)合成復(fù)合應(yīng)用程序以減少到主機網(wǎng)關(guān)的連接器的數(shù)目。
二維共享的 SOA
如圖 2 所示,RFID SOA 與物流 SOA 在一邊相交疊。交疊區(qū)域用黃色帶黑色斜線來顯示。它包含 SOA 用于生成一個或兩個服務(wù)的資源。
圖 2. 共享的 SOA 的二維中心
代表三維空間中的中心
您怎樣在二維計算機屏幕上設(shè)想三維的中心?處理該問題的一種方法是在二維平面中畫出整合中心的 X、Y 和 Z 軸。另一種方法是使用軟件簡單地將 2D 圖片轉(zhuǎn)換成 3D 的版本。
在三維的中心,您可以在不改變 SOA 的情況下將現(xiàn)有的主機替換成新樣式或另一供應(yīng)商的樣式。另外,您可以重新配置或更改 SOA 的優(yōu)先權(quán)以適合新的或已更新的主機系統(tǒng)對于更改用戶及組織的需求的響應(yīng)。
第一個三維中心
考慮如圖 3 所示的三維空間中的整合中心。如您所見,RFID SOA 中部分位于物流 SOA 之后。RFID SOA 的隱藏部分用到物流 SOA 的藍色線畫出。
圖 3. 第一個共享的 SOA 的三維中心
如您所見,連接器從 RFID SOA 通過(而不是環(huán)繞)物流 SOA 到主機網(wǎng)關(guān)。這意味著從 RFID SOA 而來的連接器與物流 SOA 共享了一些資源。
第二個三維中心
設(shè)想 RFID SOA 的重疊部分在物流 SOA 的前面,但是不是從任一側(cè),如圖 4 所示。這給了 RFID SOA 更多的選擇來共享物流 SOA 中的大量資源。
圖 4. 第二個共享的 SOA 的三維中心
如您所見,連接器從 RFID SOA 通過物流 SOA。
有多少共享的 SOA?
在三維中心中您可以共享的 SOA 的數(shù)目依賴于項目復(fù)雜性、合并問題及業(yè)務(wù)流程中的利弊。向您避免 SOA 的過量開銷一樣,您需要確保在開發(fā)的整個生命周期中不會在三維空間中發(fā)生中心超負荷的問題。您應(yīng)當在周期的每個時刻都測試超負荷。
結(jié)束語
在三維中心中合并 SOA 需要預(yù)先規(guī)劃來設(shè)置開發(fā)和共享的 SOA 的數(shù)目限制。您應(yīng)當同業(yè)務(wù)分析師開發(fā)組交流有關(guān)各種合并問題的信息。您將發(fā)現(xiàn)解決合并問題會使您開發(fā)三維中心的工作變得非常容易。您可以開發(fā)在中心可復(fù)用和共享的 SOA。分析師將發(fā)現(xiàn)解決該問題會使他們的設(shè)計和分析三維空間的中心的工作變得非常容易。他們可以確定在不會導(dǎo)致中心超負荷的前提下哪個主機系統(tǒng)可以連接到中心。