使用 IBM? 面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)基礎(chǔ)生命周期在軟件開發(fā)上下文中討論 SOA。體系結(jié)構(gòu)實踐 專欄的本部分將重點討論 SOA 場景中的第一個場景,服務(wù)創(chuàng)建場景。探究 SOA 中的三個主要服務(wù)來源,以及為恰當使用相關(guān)服務(wù)提供指導的體系結(jié)構(gòu)模式。熟悉各個模式及 SOA 生命周期中的各種活動,并了解用于實現(xiàn)和實例化這些模式的 IBM 產(chǎn)品的常用建議。 引言 體系結(jié)構(gòu)實踐 專欄文章的第 1 部分“理解面向服務(wù)的體系結(jié)構(gòu)”討論了 IBM 的面向服務(wù)的體系結(jié)構(gòu) (SOA) 基礎(chǔ)生命周期(或 SOA 生命周期),以及其如何允許 IBM 客戶從軟件開發(fā)生命周期的角度來看待 SOA。其中詳細討論了 IBM SOA 生命周期的四個階段——建模、組裝、部署和管理。 | 本專欄討論各種廣泛的主題。有關(guān) IBM SOA 場景的更多信息,請閱讀第 2 部分“SOA 解決方案場景介紹”,其中介紹了典型的基于 SOA 的 IT 項目中的八個最常見場景。第 2 部分對各個場景進行了說明,解釋了其背后的理念以及能夠?qū)ζ浼右詰玫膹V泛上下文。第 2 部分還討論了用于將特定 SOA 場景應用到啟用服務(wù)的典型遺留項目。 | | 本文(第 4 部分)重點討論八個場景中的第一個場景:服務(wù)創(chuàng)建場景,可幫助您了解 SOA 如何幫助解決典型的業(yè)務(wù)挑戰(zhàn)。本文將討論不同的服務(wù)創(chuàng)建選項背后的基本原理,并將給出各個選項最相關(guān)和最適用的情況。 對于每個服務(wù)創(chuàng)建選項,文章中會將其與 SOA 生命周期中各個階段的高級活動對應起來。另外還將包括有關(guān)可用于實現(xiàn)生命周期每個階段的活動的一個或多個 IBM 產(chǎn)品和工具的建議。 處理業(yè)務(wù)挑戰(zhàn) 快速而有效地實現(xiàn)業(yè)務(wù)計劃是大部分組織都必須處理的一項主要業(yè)務(wù)挑戰(zhàn)。企業(yè)必須能夠認識各種市場情況并快速地調(diào)整其戰(zhàn)略,以反映變化。為了獲得這種靈活的業(yè)務(wù)模型,需要有同樣靈活的 IT 基礎(chǔ)設(shè)施作為支持。SOA 中的服務(wù) 定義為自包含的可重用軟件模塊,用于執(zhí)行特定業(yè)務(wù)任務(wù)?,F(xiàn)在將這些服務(wù)作為基礎(chǔ)軟件構(gòu)建塊使用,以提供靈活的 IT 解決方案。服務(wù)具有定義良好的接口,獨立于其運行的應用程序和計算平臺。在現(xiàn)在的環(huán)境中,必須了解您的業(yè)務(wù)及流程(作為一組相互聯(lián)系的可重復業(yè)務(wù)任務(wù)執(zhí)行,可以將這些業(yè)務(wù)任務(wù)方便地進行重新排列)。 您的組織需要一種機制來為增值投資(提供獨有功能的任務(wù))分配資源。您需要將資源集中在能給業(yè)務(wù)帶來突出優(yōu)勢和價值的投資上,而不用擔心經(jīng)常出現(xiàn)的低價值瑣事級的任務(wù)。 您還會希望業(yè)務(wù)能夠穩(wěn)定地增長。您需要確保自己了解和信任的業(yè)務(wù)系統(tǒng)具有良好的性能和可靠性,同時與值得信賴的業(yè)務(wù)合作伙伴和服務(wù)提供商合作,以便獲得您所需要的服務(wù)。而且,如果選擇收購某個企業(yè),則必須能夠?qū)⑵錁I(yè)務(wù)系統(tǒng)與您的系統(tǒng)集成,以確??焖傩纬山y(tǒng)一體。 | 所建議工具或技術(shù)的詳細說明不在本文的討論范疇內(nèi)。有關(guān)更多信息,請參見參考資料部分。 | | 一個不錯的著手點是將業(yè)務(wù)已有的東西 與業(yè)務(wù)所需的東西 進行比較。建?,F(xiàn)有業(yè)務(wù)流程和未來業(yè)務(wù)模型,并模擬其功能和效果,從而提供關(guān)于業(yè)務(wù)應該如何運行的參考框架。然后考慮組成業(yè)務(wù)流程的各個任務(wù)應該如何完成的問題。每個任務(wù)都需要由服務(wù)提供支持。通過 SOA 可以將這些服務(wù)連接為靈活的模塊化系統(tǒng),從而為靈活業(yè)務(wù)模型提供支持。確定服務(wù)來自何處是實現(xiàn)優(yōu)化業(yè)務(wù)流程遠景的第一步。
服務(wù)創(chuàng)建場景的訪問模式 IBM 確定了 SOA 中服務(wù)的三個主要來源,如圖 1 中所示。 圖 1. 三個服務(wù)來源 四個常用體系結(jié)構(gòu)模式提供了相關(guān)指南,說明了關(guān)于如何恰當?shù)厥褂萌齻€主要來源提供的服務(wù)創(chuàng)建基于服務(wù)的 IT 解決方案。建議的方法是將需要的東西與已有的東西進行比較。可以自己從頭創(chuàng)建服務(wù)、購買服務(wù)或使用現(xiàn)有的支持服務(wù)的打包軟件或自定義軟件??梢酝ㄟ^以下方式利用所有三個類別的服務(wù): 本部分剩下的內(nèi)容將對服務(wù)方面和使用方面的不同體系結(jié)構(gòu)模式進行概述。 啟用服務(wù)的現(xiàn)有資產(chǎn) SOA 并不是“拆除和替換”。最好的做法是在現(xiàn)有應用程序、系統(tǒng)和資產(chǎn)中確定可重用的高價值業(yè)務(wù)任務(wù),并采用 SOA 的原則和技術(shù)來公開服務(wù)。重用已有的應用程序和系統(tǒng)是一項非常明智的業(yè)務(wù)決策??梢詼p少新技術(shù)方面的投資,而使用現(xiàn)有業(yè)務(wù)邏輯(這是公司擁有的最寶貴且經(jīng)過驗證和時間考驗的資產(chǎn))。當前應用程序的服務(wù)啟用工作可以大幅度加速 SOA 項目的采用進度,并能降低其風險。研究表明,這樣的開銷比從頭構(gòu)建方法少五倍。由于常用功能的代碼已經(jīng)過了嚴格的生產(chǎn)使用的檢驗,因此其維護開銷也會減少。 圖 2. 啟用服務(wù)的現(xiàn)有資產(chǎn) 在此技術(shù)中,單個服務(wù)可以利用一個打包或自定義應用程序或者多個系統(tǒng)來提供其預期功能。例如,SAP 客戶關(guān)系管理系統(tǒng)中的地址記錄可以與基于大型機的遺留財務(wù)系統(tǒng)進行組合,以創(chuàng)建支持開設(shè)新客戶帳戶的服務(wù)。此組合服務(wù)可以為涉及配送和開單的訂單輸入業(yè)務(wù)流程提供部分支持。這樣減少了服務(wù)大幅度增加的風險,不會在不管粒度如何的情況下將任何現(xiàn)有 IT 功能都視為服務(wù)并加以公開。通過應用恰當?shù)?SOA 方法,如 IBM 提供的面向服務(wù)的建模和體系結(jié)構(gòu)(Service-Oriented Modeling and Architecture,SOMA)(請參見參考資料),可以解決服務(wù)粒度問題。 用于處理啟用服務(wù)的現(xiàn)有資產(chǎn)的兩個最流行的體系結(jié)構(gòu)模式如下: - 直接將現(xiàn)有應用程序功能作為服務(wù)公開。
- 將功能作為服務(wù)組件間接公開。
- 直接將現(xiàn)有應用程序功能作為服務(wù)公開
- 當必須將現(xiàn)有應用程序功能作為服務(wù)公開,以供其他系統(tǒng)和應用程序使用,或提供更多的訪問渠道時,則使用此方法。對于此模式(如圖 3 中所示),其中假定您采用非常簡單的場景,其中的現(xiàn)有功能并不復雜,只是使用 Web 服務(wù)技術(shù)將其作為服務(wù)提供者部署。這個簡單的拓撲并不需要任何新基礎(chǔ)設(shè)施,因為此服務(wù)使用支持服務(wù)的現(xiàn)有應用程序(通常為遺留應用程序)的工具和技術(shù)實現(xiàn)。
例如,可以使用 IBM CICS? Transaction Server V3.1 Web 服務(wù)技術(shù)將 COMMAREA 應用程序直接作為 Web 服務(wù)公開。最低要求是所公開的服務(wù)符合 WS-I Basic Profile 的要求。(有關(guān)技術(shù)模式以及現(xiàn)有遺留功能如何作為服務(wù)公開的更多信息,請參見參考資料。) 對于此方法,一個好處是服務(wù)接口由所公開的遺留資產(chǎn)定義,因此不需要進行分析來設(shè)計接口規(guī)范。而且,由于新服務(wù)可以在與包裝的現(xiàn)有資產(chǎn)相同的平臺上運行,因此沒有必要添加新基礎(chǔ)設(shè)施。能省略接口定義和分析,而且要處理的平臺更少,這樣部署周期就會更短。 采用此體系結(jié)構(gòu)模式來提供服務(wù)器支持時,需要考慮以下主要體系結(jié)構(gòu)注意事項: - 服務(wù)使用者與遺留資產(chǎn)的定義建立聯(lián)系,而后者在很多情況下的最初設(shè)計都比較糟糕。
- 此模式假定現(xiàn)有應用程序平臺提供了對服務(wù)調(diào)用的最新技術(shù)的支持。
- 實現(xiàn)模式經(jīng)常給系統(tǒng)帶來高服務(wù)消息處理負擔,而這些系統(tǒng)經(jīng)常針對無內(nèi)部互鎖管道級的微處理器(Microprocessor without Interlocked Pipeline Stages,MIPS)使用進行了優(yōu)化。
圖 3. 直接將現(xiàn)有功能作為服務(wù)公開
 - 將功能作為服務(wù)組件間接公開
- 此服務(wù)支持體系結(jié)構(gòu)模式代表了在現(xiàn)有應用程序功能和服務(wù)之間引入中間軟件組件(稱為服務(wù)組件)的情況。下面的圖 4 顯示了一個示例。
服務(wù)組件也稱為企業(yè)組件(請參見參考資料),是提供服務(wù)和實際實現(xiàn)之間的抽象層的 IT 組件。服務(wù)組件可以通過以下方式之一發(fā)揮作用: - 從頭創(chuàng)建業(yè)務(wù)邏輯和功能時,服務(wù)組件可以對內(nèi)聚業(yè)務(wù)邏輯從邏輯和功能方面進行封裝。
- 當必須對一個或多個現(xiàn)有操作系統(tǒng)的業(yè)務(wù)邏輯集成和重用,從而為服務(wù)提供集成業(yè)務(wù)邏輯實現(xiàn)時,服務(wù)組件可以封裝對外圍操作系統(tǒng)(可能為異類系統(tǒng))的訪問機制。
使用中間服務(wù)組件有一些好處: - 可以在不影響服務(wù)使用者的情況下更改現(xiàn)有操作系統(tǒng)中的業(yè)務(wù)邏輯實現(xiàn)。服務(wù)組件可以方便地進行擴展,以封裝數(shù)據(jù)和信息,并為數(shù)據(jù)或信息服務(wù)提供外觀層。
- 可以在操作系統(tǒng)層進行系統(tǒng)和功能的 IT 合并或遷移,而對服務(wù)使用者的影響很小或者沒有影響。
- 可以將服務(wù)部署在與現(xiàn)有應用程序不同的基礎(chǔ)設(shè)施上,而現(xiàn)有應用程序的基礎(chǔ)設(shè)施通常針對服務(wù)的特定處理要求進行了硬編碼。
對于直接將應用程序功能作為服務(wù)公開的情況,此模式還有一些主要體系結(jié)構(gòu)注意事項。首先,它允許與業(yè)務(wù)保持緊密一致但并不一定直接映射到現(xiàn)有應用程序接口的服務(wù)接口定義??梢允褂?SOA 的原則和最佳實踐來以正確的粒度級別設(shè)計服務(wù)和接口。不過,這會增加恰當定義服務(wù)的設(shè)計時間,而且開發(fā)周期更長。其次,其設(shè)計經(jīng)常比直接公開更為復雜,因為可能會涉及到使用適配器或連接器技術(shù)來與操作系統(tǒng)進行連接。 圖 4. 服務(wù)組件作為操作系統(tǒng)功能與應用程序?qū)拥姆?wù)間的中間層 使用外部提供的服務(wù) 在此場景中,服務(wù)的來源為一個或多個第三方服務(wù)提供商。應用程序利用第三方服務(wù)來實現(xiàn)其所需的功能。圖 5 顯示了服務(wù)如何依賴第三方實現(xiàn)提供者進行實現(xiàn)。 圖 5. 依賴第三方提供商 此模式的主要優(yōu)勢在于,并不需要花時間為服務(wù)定義開發(fā)實現(xiàn)構(gòu)件,將由外部服務(wù)提供者提供這些構(gòu)件。這可以大幅度減少開發(fā)時間。還有個值得注意的優(yōu)勢是,客戶機能夠根據(jù)各種技術(shù)、財務(wù)和政策注意事項在服務(wù)提供者之間進行切換。 有一些主要體系結(jié)構(gòu)注意事項需要加以處理: - 必須恰當?shù)囟x服務(wù)的服務(wù)級別協(xié)議(Service-Level Agreement,SLA)。在尋找最佳的第三方提供商時,滿足 SLA 的能力是一項重要考慮事項。
- 由于服務(wù)實現(xiàn)位于企業(yè)防火墻之外,所以必須為服務(wù)及其調(diào)用配備恰當?shù)陌踩源胧?
- 應該非常強調(diào)服務(wù)治理,以建立用于選擇最合適的服務(wù)提供者的標準。對行業(yè)及開放標準的遵從,以及作為服務(wù)提供者的第三方的成熟度之類的因素,應該由治理組織加以確定。
從頭構(gòu)建服務(wù) 在此場景中,必須從頭設(shè)計、定義和開發(fā)服務(wù)?,F(xiàn)有應用程序或任何第三方提供商都不能提供功能或服務(wù)來滿足您的需求。此場景依賴于 Java? 2 Platform Enterprise Edition (J2EE) 應用服務(wù)器支持服務(wù)實現(xiàn)。核心業(yè)務(wù)功能通常使用標準 J2EE 開發(fā),而且通常采用 Enterprise JavaBeans (EJB) 或簡單的傳統(tǒng) Java 對象(Plain Old Java Object,POJO)的形式。采用了標準 J2EE 集成開發(fā)環(huán)境(Integrated Development Environment,IDE)功能和技術(shù)來將 EJB 或 POJO 轉(zhuǎn)換為標準 Web 服務(wù)。 此方法的優(yōu)勢在于,可通過其根據(jù)現(xiàn)有業(yè)務(wù)需求建模服務(wù),并對其進行恰當?shù)脑O(shè)計來滿足將來的業(yè)務(wù)需求。服務(wù)并不受現(xiàn)有操作系統(tǒng)或第三方提供商的約束。 體系結(jié)構(gòu)方面的一個重要注意事項是,需要在整個服務(wù)開發(fā)流程中(從表示到規(guī)范再到實現(xiàn))應用完整的 SOA 方法(例如 SOMA)。
服務(wù)定義和實現(xiàn)“菜譜” 前一部分所討論的體系結(jié)構(gòu)模式可幫助標識和設(shè)計服務(wù),需要對其進行實例化,以實現(xiàn)端到端 SOA 解決方案。您需要將模式步驟應用到 SOA 生命周期中,并提供正確的工具和產(chǎn)品來創(chuàng)建特定的 SOA 構(gòu)件。 IBM 使用和遵循 SOA 生命周期(建模、組裝、部署和管理)、治理和流程;我們確定了可應用于 SOA 生命周期的每個階段的每個體系結(jié)構(gòu)的活動(請參見參考資料)。IBM 還提供了大量的相關(guān)產(chǎn)品,可幫助實現(xiàn)任何工業(yè)強度 SOA 解決方案。 此部分將以下體系結(jié)構(gòu)模式及其較高級別的活動放入 SOA 生命周期的上下文中進行討論: 另外,還提供了經(jīng)常建議使用的 IBM 產(chǎn)品的概述,可通過使用這些產(chǎn)品來在真實的合作項目中幫助實現(xiàn)和實例化模式。 實現(xiàn)現(xiàn)有功能的公開 和所有 SOA 項目一樣,最好從生命周期的角度來看待現(xiàn)有功能的直接公開(也稱為現(xiàn)有 IT 資產(chǎn)的服務(wù)支持)。此處我們將利用得到廣泛認可的 IBM SOA Foundation 所定義的服務(wù)生命周期。圖 6 顯示了可以如何應用 SOA 生命周期來為現(xiàn)有資產(chǎn)啟用服務(wù)。 圖 6. 在現(xiàn)有資產(chǎn)的服務(wù)支持中應用 SOA 生命周期 SOA 生命周期的每個階段都可以應用到服務(wù)支持工作中。建議的較高級別的活動包括: - 建模
- 開始從當前 IT 應用程序和系統(tǒng)投資組合中形成候選資產(chǎn)目錄,以啟動建模階段。在此階段,最需要關(guān)注的是服務(wù)建模方法。IBM 的 SOMA 方法是用于面向服務(wù)的建模的可靠且經(jīng)過嚴格驗證的方法。Rational? Unified Process (RUP) 也擴展為可處理面向服務(wù)的方法 (RUP for SOA)。RUP for SOA 基于 SOMA 方法。IBM 的 Rational Software Architect (RSA) 提供了建??蚣軐Ψ?wù)模型進行建模和設(shè)計。
- 組裝
- 使用各項技術(shù)在不更改其提供的基本功能的情況下將資產(chǎn)轉(zhuǎn)換為可重用服務(wù)。轉(zhuǎn)換流程實際上將涉及使用定義良好的接口包裝現(xiàn)有功能。
在此階段,通常為在 IBM System z? 系統(tǒng)(之前的 IBM eServer?zSeries? 系統(tǒng))上運行的 CICS 應用程序提供服務(wù)支持的工具是名為 IBM WebSphere? Developer for zSeries (WDz) 的 IDE。將需要啟用服務(wù)支持的現(xiàn)有代碼庫導入到 WDz 的工作區(qū)中??梢岳霉ぞ吖δ軄黹_發(fā) Web 服務(wù)描述語言(Web Services Description Language,WSDL)定義。在此過程中,現(xiàn)有應用程序的數(shù)據(jù)和語言結(jié)構(gòu)可能需要一些映射和轉(zhuǎn)換??梢詮拇?IDE 生成 WSDL 和特定應用程序綁定。 組裝階段也包括對所開發(fā)代碼的單元測試。WDz 提供了用于 CICS Transaction Server (TS) 的測試環(huán)境,提供了所有基本功能,以便測試在實際工業(yè)強度 CICS TS 上運行的 WSDL??梢栽?CICS TS 測試環(huán)境中作為組裝階段的一部分對生成的 WSDL 進行測試。 - 部署
- 使用 SOA 基礎(chǔ)設(shè)施和中間件產(chǎn)品來部署服務(wù),從而將訪問擴展到其他涉及到更多系統(tǒng)和用戶的功能。
在此階段,要將經(jīng)過單元測試的 WSDL 和所生成的 COBOL 源代碼(進行了可能的數(shù)據(jù)和語言轉(zhuǎn)換后)部署到 CTS 上。隨 CTS 3.1 提供了很多 Web 服務(wù)功能(如 WS-Security),可以在部署過程中對其進行配置。 - 管理
- 以實時方式仔細管理和監(jiān)視所部署的服務(wù),以了解更新后的資產(chǎn)的性能和安全性。對于此階段,主要的焦點轉(zhuǎn)移到了管理和監(jiān)視所部署的服務(wù)上。必須仔細地監(jiān)視服務(wù),以確保遵從已發(fā)布的功能和非功能需求。
IBM 的 Tivoli? 品牌產(chǎn)品針對一般系統(tǒng)管理和監(jiān)視進行了優(yōu)化,包含用于滿足監(jiān)視和管理服務(wù)的大量產(chǎn)品。Tivoli Omegamon-XE for CICS 3.1 常用于在 IBM z/OS? 上管理和監(jiān)視 CICS TS。Tivoli 還提供了一套產(chǎn)品,專門針對服務(wù)調(diào)用和安全性的特定領(lǐng)域,如: - IBM Tivoli Federated Identity Manager (ITFIM),提供松散耦合聯(lián)合標識模型來跨企業(yè)邊界管理標識。
- IBM Tivoli Identity Manager (ITIM),提供企業(yè)內(nèi)的集中標識管理系統(tǒng)。
- IBM Tivoli Access Manager (ITAM),提供單點登錄和授權(quán)功能。
- 治理和流程
- 確保遵循服務(wù)生命周期及其有效控制和管理方面的策略、標準和最佳實踐。
對于此階段,WebSphere Service Registry and Repository (WSRR) 是支持整個 SOA 生命周期的 IBM 產(chǎn)品。WSRR 允許服務(wù)提供者安全地注冊業(yè)務(wù)服務(wù),以供服務(wù)使用者進行查找和綁定。另外還提供了發(fā)布在 SOA 中管理服務(wù)的生命周期所需的元數(shù)據(jù)的功能。 總而言之,在實現(xiàn)直接訪問現(xiàn)有應用程序的模式時,可以遵循標準 IBM SOA 生命周期的階段,并在各個階段中使用以下產(chǎn)品: - RSA,用于服務(wù)的建模和設(shè)計。
- WebSphere Developer for zSeries,用于將現(xiàn)有功能組合為服務(wù),并從 CICS TS Test Environment 對其進行單元測試。
- 在 CICS TS 3.1 上部署服務(wù)定義以及所生成的遺留代碼。
- 使用一系列 Tivoli 管理與監(jiān)視產(chǎn)品,如主要用于管理和監(jiān)視服務(wù) SLA 的 Tivoli Omegamon-XE、ITFIM、ITAM 等。
- WebSphere Service Registry and Repository,用于在 SOA 中在服務(wù)的整個生命周期中對其進行管理。
實現(xiàn)現(xiàn)有功能的間接公開 服務(wù)創(chuàng)建的每個機制都具有一組規(guī)程,即給定場景下最常遵循的步驟。前面所述的這些步驟可以與 SOA 生命周期的五個階段建立聯(lián)系。此場景的主要步驟與實現(xiàn)現(xiàn)有功能的公開非常相似,因此將不在此進行重復說明了。 正如服務(wù)創(chuàng)建場景的訪問模式中所述,間接公開和直接公開的區(qū)別在于其中包含了服務(wù)組件層。服務(wù)組件提供與業(yè)務(wù)保持一致的服務(wù)接口——自頂向下方法。通過分析現(xiàn)有資產(chǎn),可以確定可以使用哪些系統(tǒng)中的哪些應用程序功能來實現(xiàn)服務(wù)組件定義的服務(wù)接口。服務(wù)組件充當業(yè)務(wù)中心視圖和現(xiàn)有應用程序之間的中間層。因此,這個新的外觀組件在組裝階段需要執(zhí)行額外的步驟。 在建模階段,可以使用 SOMA 方法及其抽象規(guī)范進行服務(wù)定義。這與第一個訪問模式并沒有太大的區(qū)別。在這兩者中,都將執(zhí)行 SOMA 的服務(wù)標識階段。不過,其區(qū)別在于階段中的活動重點。在直接公開期間,其重點在現(xiàn)有資產(chǎn)分析上。在非直接公開場景中,重點在使用自頂向下方法標識與業(yè)務(wù)一致的服務(wù)。此處建議使用的 IBM 產(chǎn)品是 Rational Software Architect。 在組裝階段,最常用的工具是 Rational Application Developer (RAD)。如果在此階段將 RAD 作為 IDE 使用,請遵循以下步驟: 盡管在組裝階段使用 RAD 是一種很常見的做法,但很多 IT 企業(yè)僅在使用遺留系統(tǒng)方面非常專業(yè)。在這樣的客戶機環(huán)境中,建議使用 WebSphere Developer for z (WDz)。WDz V6.0.1 提供了內(nèi)置的 CICS TS 測試環(huán)境,可與 CICS Transaction Gateway V6.0.2 組合使用,從而提供一個非常強大的用于從遺留系統(tǒng)公開服務(wù)的環(huán)境。 如前面所提到的,WebSphere Service Registry and Repository 是用于服務(wù)生命周期治理的標準 IBM 產(chǎn)品,同時我們也建議使用此產(chǎn)品。 實現(xiàn)第三方提供的服務(wù) 當現(xiàn)有遺留系統(tǒng)和應用程序過于晦澀難解而難以替換,或業(yè)務(wù)需求要求提供現(xiàn)有系統(tǒng)中沒有的功能時,則下一個選項就是第三方服務(wù)提供商。行業(yè)中經(jīng)常出現(xiàn)第三方程序包提供的功能影響企業(yè)的業(yè)務(wù)需求的情況。很多企業(yè)都出現(xiàn)了這樣的情況,但后來卻發(fā)現(xiàn)由于所感興趣的第三方程序包的特性或功能影響,就開始改變自己的業(yè)務(wù)需求。這是 SOA 采用中的一個反模式,應該加以避免。 在此場景中,功能需求可由第三方服務(wù)提供商完全或幾乎完全滿足。在業(yè)務(wù)需求強制要求的可接受限制范圍內(nèi),必須滿足功能需求和 SLA 需求。 此場景的高級活動也可以映射到 SOA 生命周期的各個階段,如圖 7 中所示。 圖 7. 將第三方服務(wù)包含到企業(yè) SOA 中 SOA 生命周期的每個階段都可以應用到服務(wù)支持工作中。建議的高級活動總結(jié)如下: - 建模
- 首先運行轉(zhuǎn)換范圍內(nèi)的業(yè)務(wù)流程的模擬,并決定哪些服務(wù)適合自己創(chuàng)建,哪些服務(wù)適合從外部獲取。
在建模階段,重點是分析使用第三方服務(wù)提供商而不自行構(gòu)建服務(wù)的理由。將執(zhí)行各種業(yè)務(wù)分析和模擬,并評估成本、時間、資源和 IT 可行性。 - 組裝
- 訪問外部服務(wù),并將其與自有服務(wù)編排在一起,從而支持端到端業(yè)務(wù)流程。組裝將對第三方服務(wù)和企業(yè)自有服務(wù)進行編排。
在組裝階段,將執(zhí)行主要工作。所建議的 IBM 產(chǎn)品為 RAD。相關(guān)步驟包括: - 從服務(wù)提供者獲取 WSDL。
- 驗證 WSDL,并與提供者進行合作,以成功地通過完整的驗證。
- 在 RAD 中創(chuàng)建新企業(yè)應用程序。
- 將 WSDL 導入項目工作區(qū)。
- 從 WSDL 生成客戶端存根。這時請仔細分析哪種 XML 綁定類型是恰當?shù)模↗AX-RPC、JAXB 等)。
- 根據(jù)客戶端存根開發(fā)客戶機應用程序,以調(diào)用服務(wù)。
- 將項目打包為可部署 EAR 文件。
- 部署
- 可以對經(jīng)過編排的服務(wù)進行部署,而不用擔心每個服務(wù)的出處。
在此階段,可部署 EAR 文件安裝在 Web 服務(wù)兼容中間件服務(wù)器上。此處建議的 IBM 產(chǎn)品是 WebSphere Application Server。所安裝的 EAR 文件提供了客戶端 API,以使用第三方服務(wù)。 - 管理
- 如果第三方服務(wù)提供商進行實現(xiàn)工作,則務(wù)必監(jiān)視服務(wù),以確定是否符合和滿足業(yè)務(wù)強制要求的 SLA 和合同規(guī)定的關(guān)鍵性能指標(Key Performance Indicator,KPI)。IBM Tivoli Composite Application Management (ITCAM) for SOA 是用于監(jiān)視運行時服務(wù)器來確定遵從性的最為全面的 Tivoli 產(chǎn)品。
- 治理和流程
- 在注冊中心創(chuàng)建和維護外部服務(wù)目錄,以方便訪問和管理。
在此階段,將提供外部服務(wù)的 WSDL 定義此階段建議的 IBM 產(chǎn)品是 WebSphere Service Registry and Repository (WSRR)。任何采用服務(wù)增強形式出現(xiàn)的更改都在管理服務(wù)的生命周期的 WSRR 中進行管理。 實現(xiàn)從頭創(chuàng)建的服務(wù) 此場景通常是最后的選擇。當沒有現(xiàn)有應用程序功能可以直接或間接地作為服務(wù)公開,而且沒有第三方服務(wù)提供商提供所需的業(yè)務(wù)功能時,就會采用此方法。服務(wù)定義和所有實現(xiàn)構(gòu)件都需要從頭構(gòu)建。這可能看起來很簡單,沒有需要作為基礎(chǔ)的現(xiàn)有遺留系統(tǒng),沒有要集成的遺留代碼,沒有要掛接的第三方提供商服務(wù),也沒有部署時要考慮的復雜拓撲。但要確定服務(wù)標識和深入規(guī)范,可能會有不少的工作要做。圖 8 顯示了 SOA 生命周期的不同階段的主要活動。 圖 8. 應用于從頭創(chuàng)建服務(wù)時的 SOA 生命周期 從 SOA 生命周期的角度而言,從頭創(chuàng)建服務(wù)所涉及的活動如下: - 建模
- 其重點在于設(shè)計與服務(wù)一致的服務(wù),同時涵蓋當前需求和將來的需求。建議的方法是應用 SOMA 的服務(wù)標識技術(shù),并同時使用 Rational Software Architect 進行服務(wù)建模,以創(chuàng)建實際的建模構(gòu)件。
- 組裝
- 用于服務(wù)開發(fā)的建議 IBM 產(chǎn)品是 Rational Application Developer (RAD);RAD 是一個可靠且功能豐富的 J2EE 應用程序開發(fā) IDE,它還提供了用于服務(wù)開發(fā)和實現(xiàn)的各種簡單功能和高級功能。它提供了基本服務(wù)實現(xiàn)的簡單功能,并將其作為 WSDL 文件公開。Rational Application Developer 還可以添加有關(guān) Web 服務(wù)實現(xiàn)的高級功能,從 WS-I 遵從性開始,以增量方式逐漸添加 WS-Addressing、WS-Transactions 等實現(xiàn)。使用 Rational Application Developer 進行服務(wù)開發(fā)的一般步驟(與實現(xiàn)第三方提供的服務(wù)類似)如下:
- 在 Rational Application Developer 中的新工作區(qū)創(chuàng)建 J2EE 企業(yè)應用程序項目。
- 基于服務(wù)的設(shè)計規(guī)范創(chuàng)建 WSDL 定義。或者,如果存在 WSDL,則將其導入工作區(qū)。
- 從 WSDL 生成會話 EJB 服務(wù)框架。
- 為服務(wù)框架中的所有已定義操作完成業(yè)務(wù)邏輯實現(xiàn)。
- 或者,創(chuàng)建用于調(diào)用服務(wù)的 Web 服務(wù)客戶機代碼。對于調(diào)用服務(wù)的 J2EE 應用程序客戶機,此客戶機代碼已經(jīng)足夠了。對于非 J2EE 客戶機,需要提供技術(shù)特定的客戶機代碼來進行服務(wù)調(diào)用。
- 將實現(xiàn)構(gòu)件打包為部署時使用的 EAR 文件。
對于將企業(yè)業(yè)務(wù)流程作為服務(wù)編排實現(xiàn)的端到端解決方案,可以將此場景作為服務(wù)設(shè)計和開發(fā)工作進行構(gòu)造;組裝是這些服務(wù)在業(yè)務(wù)流程上下文中的編排。 建議使用的 IBM 工具為 WebSphere Integration Developer (Integration Developer),此工具提供了業(yè)務(wù)流程執(zhí)行語言(Business Process Execution Language,BPEL)開發(fā)環(huán)境。除了其他功能外,還提供了將現(xiàn)有服務(wù)編排為業(yè)務(wù)流程流的功能。所得到的流程可以隨后部署到 BPEL 運行時引擎中,從而提供編排功能來執(zhí)行企業(yè)級業(yè)務(wù)流程。 - 部署
- 經(jīng)過打包的 EAR 部署模塊安裝到 WebSphere Application Server 運行時上。對于分布式環(huán)境,建議使用 WebSphere Application Server Network Deployment Edition V6 作為運行服務(wù)的中間件。要部署所提到的業(yè)務(wù)流程,建議使用的 IBM 產(chǎn)品是 WebSphere Process Server V6(屬于 IBM WebSphere Business Service Fabric 中間件)。
- 管理
- 需要對所部署的服務(wù)進行監(jiān)視和管理。監(jiān)視通常是保證遵從服務(wù)的 SLA 的典型強制要求,并在達到不遵從閾值時引發(fā)警報或事件。在企業(yè)范圍外公開服務(wù)時,最低要求是,要保證非授權(quán)訪問無法訪問服務(wù)。前面提到的 Tivoli 產(chǎn)品均適用于此場景。簡要總結(jié)如下:
- IBM Tivoli Composite Application Management (ITCAM) for SOA,用于監(jiān)視服務(wù)以確保 SLA 遵從性。
- IBM Tivoli Federated Identity Manager (ITFIM),用于在整個企業(yè)范圍內(nèi)進行聯(lián)合標識管理。
- IBM Tivoli Identity Manager (ITIM),用于跨企業(yè)系統(tǒng)提供集中標識。
- IBM Tivoli Access Manager (ITAM),用于單點登錄和在服務(wù)調(diào)用前進行授權(quán)。
- 治理和流程
- 服務(wù)生命周期管理的建議 IBM 產(chǎn)品是 WebSphere Service Registry and Repository,此產(chǎn)品具有可靠的高級功能,能以模塊化的方式進行使用。
總結(jié) IBM 確定了典型的基于 SOA 的 IT 項目的八個不同的常見 SOA 場景。IBM 還提供了全面的指導信息,說明應該如何使用面向 SOA 的 IBM 工具、產(chǎn)品及方法對每個場景進行建模、設(shè)計和實現(xiàn)。 在本文中,我們討論了第一個 SOA 場景,服務(wù)創(chuàng)建。我們還對基于以下三個主要服務(wù)來源進行良好服務(wù)支持的四個最常用的體系結(jié)構(gòu)模式進行了概述:現(xiàn)有應用程序、第三方服務(wù)提供商以及從頭創(chuàng)建服務(wù)。另外,我們還了解了如何將 SOA 生命周期應用到四個體系結(jié)構(gòu)訪問模式,以及 IBM 產(chǎn)品套件可以如何處理服務(wù)支持的特定設(shè)計、開發(fā)和運行時需求。 |