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