在企業(yè)級 SOA 中使用 Web 服務(wù),第 4 部分: 使用 Rational 開發(fā)工具構(gòu)建 SOA 中間件應(yīng)用程序
對構(gòu)建企業(yè)面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)中間件應(yīng)用程序感興趣嗎?Judith Myerson 將向您提供四種可能的方法:自頂向下 (top-down)、自底向上 (bottom-up)、旁路 (sideway) 和嵌入式 (embedding),同時幫助您探究每種方法的各種利弊。您還會了解到如何確定中間件應(yīng)用程序可以支持的共享 SOA 的最大數(shù)目。
在我的關(guān)于企業(yè)級 SOA 系列的第一篇文章“在企業(yè)級 SOA 中使用 Web 服務(wù),第 1 部分: 使用多重 SOA 來消除企業(yè)系統(tǒng)之間的差異”中,我曾談及使用 SOA 消除企業(yè)系統(tǒng)差異的場景,展示了如何重用來自一個或多個 SOA 的 Web 服務(wù)(以數(shù)據(jù)為中心且具有業(yè)務(wù)邏輯),以及如何將它們組合到組織控制之下的一個復(fù)合應(yīng)用程序中。
在第二篇文章“在企業(yè)級 SOA 中使用 Web 服務(wù),第 2 部分: 使外部 Web 服務(wù)互操作性最優(yōu)”中,我給出了不引起多重 SOA 過載的服務(wù)互操作性實例,從簡單的協(xié)議共存到復(fù)雜的多平臺互操作性。并且您了解了如何更改每個 Web 服務(wù)的服務(wù)類型、位置和平臺來實現(xiàn)原始應(yīng)用程序的業(yè)務(wù)流程。
本系列的第三部分“在企業(yè)級 SOA 中使用 Web 服務(wù),第 3 部分: 將您的 SOA 合并成三維的整合中心以提高速度和可靠性”中,我解釋了您可以如何將 Web 服務(wù)和非 Web 服務(wù)的多重 SOA 合并成單個三維的集成中心來連接到各種后端企業(yè)大型機系統(tǒng)。在本文中,我將解釋您可以如何使用來自 IBM? Rational? 軟件的開發(fā)工具在三維空間中開發(fā)企業(yè) SOA 中間件應(yīng)用程序。同時您還將了解到如何將 Web 服務(wù)組件組合成跨多重 SOA 的中間件應(yīng)用程序,以及如何使用下面四種不同的方法來開發(fā)它們:
- 自頂向下
- 自底向上
- 旁路
- 嵌入式
讓我們首先從物理和邏輯的角度研究每種方法。
![]() ![]() |
![]()
|
物理 Web 服務(wù)即在存儲庫中所發(fā)布和找到的 Web 服務(wù)。創(chuàng)建一個邏輯 Web 服務(wù)后,可以繼續(xù)將一個邏輯 Web 服務(wù)與另一個物理 Web 服務(wù)組合起來,創(chuàng)建一個新的邏輯 Web 服務(wù)以供使用。之后,您可以將最后得到的邏輯 Web 服務(wù)與另一個物理或邏輯 Web 服務(wù)組合起來。您也可以將邏輯 Web 服務(wù)轉(zhuǎn)換成物理 Web 服務(wù)組件,以在存儲庫中發(fā)布和發(fā)現(xiàn)它們。
通過定義中間件應(yīng)用程序的業(yè)務(wù)模型和物理 Web 服務(wù)組件的業(yè)務(wù)模型之間的關(guān)系,您可以創(chuàng)建邏輯 Web 服務(wù)的 SOA 中間件應(yīng)用程序。為此,您可以使用 Rational Software Architect 和 Rational Software Modeler 中的一個或同時使用它們來支持使用統(tǒng)一建模語言(Unified Modeling Language,UML)的模型驅(qū)動 (model-driven) 開發(fā),以及支持分別記錄系統(tǒng)的不同視圖的 UML 可視化建模設(shè)計。
![]() ![]() |
![]()
|
自頂向下方法從 Web 服務(wù)或非 Web 服務(wù)中間件應(yīng)用程序金字塔(請參見圖 1)的頂端開始。您需要將其劃分成更小的 Web 服務(wù)或組件,在金字塔的每個低層繼續(xù)這個過程,直到最小的部分或組件到達金字塔的底部為止。系統(tǒng)的所有部分都將順利地集成在一起并進行互操作。
圖 1. 自頂向下方法

然而,互操作性可能具有不同的含義,這取決于應(yīng)用程序的預(yù)定用途。例如,如果應(yīng)用程序是以數(shù)據(jù)為中心,那么互操作性就是以數(shù)據(jù)為中心的。但是如果應(yīng)用程序的主要目標(biāo)是實現(xiàn)業(yè)務(wù)流程,那么互操作性就是基于流程的。
現(xiàn)在,讓我們從邏輯的角度來研究自頂向下方法。自頂向下方法考慮由企業(yè) SOA 中間件應(yīng)用程序組成的應(yīng)用程序的目標(biāo)。這個目標(biāo)又分成子目標(biāo),每個子目標(biāo)更進一步分成更小的單元。這個過程一直繼續(xù)下去,直到達到 SOA 中間件應(yīng)用程序的金字塔的底部為止。
顯然,確保所有子目標(biāo)都順利地進行互操作非常重要。如果目標(biāo)針對的是提供一個服務(wù)或一組服務(wù),那么服務(wù)互操作性就成為首要關(guān)注的事情。然而,如果目標(biāo)針對的是實現(xiàn)策略和規(guī)則,那么我們就需要將重點放在策略的互操作性上。
在現(xiàn)實世界中,并不存在單純的以數(shù)據(jù)為中心、基于流程或策略互操作性。相反,我們通常碰到的都是數(shù)據(jù)、流程、服務(wù)和策略互操作性混合在一起。每種互操作性類型所占的比例可以動態(tài)地變化,這取決于每個 Web 服務(wù)如何模塊化、設(shè)置優(yōu)先級、最優(yōu)化,以及如何通過松耦合的方式使彼此的交互達到最大程序。同樣,它也依賴于 Web 服務(wù)所運行的平臺(例如開放的 Eclipse 體系結(jié)構(gòu))。
![]() ![]() |
![]()
|
從物理的角度來說,自底向上方法將基本的 Web 服務(wù)組件定義為最小的基礎(chǔ)部分。這使您可以將它與上一層更大的元素組合在一起,繼續(xù)這個過程,直到所有部分都在金字塔頂點處集成為一個完整的復(fù)雜 Web 服務(wù)和關(guān)系的中間件應(yīng)用程序為止,如圖 2 所示。
圖 2. 自底向上方法

這個物理角度假定系統(tǒng)的所有部分都可以順利地進行互操作?;ゲ僮餍缘暮x依賴于 Web 服務(wù)交互的類型:以數(shù)據(jù)為中心、業(yè)務(wù)流程或組合。應(yīng)用程序之間互操作性的每種類型所占的比例可以動態(tài)地變化。
從邏輯的角度來說,自底向上方法從作為 SOA 企業(yè)目標(biāo)的基礎(chǔ)構(gòu)件的子目標(biāo)(例如服務(wù)組件)開始。作為一名開發(fā)人員,您可以與分析人員一起,將它們組合成上一層的更大目標(biāo)。繼續(xù)這個過程,直到所有的子目標(biāo)都在金字塔的頂點處集成為一個 SOA 中間件的企業(yè)目標(biāo)為止。
確保所有的子目標(biāo)都將順利地進行交互非常重要。如果子目標(biāo)針對的是提供一個服務(wù)或一組服務(wù),我們首要關(guān)注的事情就是子目標(biāo)之間的服務(wù)互操作性。然而,如果子目標(biāo)針對的是實現(xiàn)策略和規(guī)則,那么我們關(guān)心的事情就變成子目標(biāo)之間的策略互操作性。
![]() ![]() |
![]()
|
從物理的角度來說,旁路方法(如圖 3 所示)允許您在自頂向下或自底向上方法的旁路添加或刪除 Web 服務(wù)組件。這使您能夠在保持現(xiàn)有中間件完整的同時,更好地響應(yīng)變更的設(shè)計和開發(fā)需求。旁路角度假定要添加的組件將可以與現(xiàn)有的組件順利地交互。同樣,它也假定要刪除的組件將不會破壞剩余組件之間的互操作性。
圖 3. 旁路方法

從邏輯的角度來說,旁路方法使您能夠從在自頂向下或自底向上方法的旁路添加邏輯 Web 服務(wù)的子目標(biāo)開始。這使您可以添加諸如新的 Web 服務(wù)的服務(wù)類型和位置這樣的子目標(biāo)。您可以使用任一方法的旁路從邏輯 Web 服務(wù)中刪除子目標(biāo)。
您還可以更改 Web 服務(wù)的子目標(biāo),以便重用它來開發(fā)各種中間件應(yīng)用程序。請確保在邏輯上添加、刪除或者更改子目標(biāo)時,Web 服務(wù)之間的互操作仍然能夠在生產(chǎn)環(huán)境中順利地進行。您還需要確保在測試環(huán)境中運行的 Web 服務(wù)能夠順利地出色工作。
![]() ![]() |
![]()
|
從物理和邏輯的角度來說,嵌入式方法是上述三種方法的混合,至少要嵌入金字塔某層中的兩級或三級深。在這個嵌套、兩級嵌入式方法示例中,您可以在自底向上方法中嵌入自頂向下方法(請參見圖 4),或者反過來。您也可以在自頂向下或自底向上方法中嵌入旁路方法。
圖 4. 嵌入式方法

您可以獲得三級嵌套的嵌入式方法。例如,通過將旁路方法嵌入到自頂向下方法,接著嵌入到自底向上方法,您可以做到這一點。您也可以將自頂向下方法嵌入到第二個自頂向下方法,接著再嵌入到自底向上方法。
![]() ![]() |
![]()
|
在開放的體系結(jié)構(gòu)中開發(fā) SOA 中間件應(yīng)用程序依賴于(舉例)您想要使用哪種關(guān)系型或 WebSphere? 包。正如前面提到的,您可以使用 Rational Software Architect 和 Rational Software Modeler 來對企業(yè) SOA 中間件進行建模,將 Web 服務(wù)當(dāng)作對象、關(guān)系實體或者兩者的混合。您也可以使用 Rational Web Developer for WebSphere Software for Linux?、Windows? 2000、Windows 2003 Server 和 Windows XP 來簡化您的 Web 服務(wù)開發(fā)。
![]() ![]() |
![]()
|
開發(fā)企業(yè) SOA 中間件需要事先計劃好可以將多少 SOA 作為中間件應(yīng)用程序組合在一起。最好就使用哪些方法開發(fā)中間件的問題與業(yè)務(wù)分析人員小組進行溝通。您還將發(fā)現(xiàn),解決了這些問題使開發(fā)企業(yè) SOA 中間件更加容易。您可以為中間件應(yīng)用程序開發(fā)這樣的 SOA,它們既重用,又可以交互和集成。而且通過事先決定使用哪些方法或方法的組合,使分析人員設(shè)計和分析中間件的工作變得簡單。分析人員能夠確定使用哪種方法以及將多少個 SOA 組合在一起,因為中間件基于它們之間各種類型的互操作性,并且可能引起企業(yè) SOA 過載。
posted on 2006-04-17 03:32 wsdfsdf 閱讀(184) 評論(1) 編輯 收藏 引用 所屬分類: 技術(shù)文章