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