2008 年 5 月 22 日 本文中的案例研究重點(diǎn)是與 SOA 服務(wù)創(chuàng )建和重用相關(guān)的挑戰和解決方案。在本文中,我們將介紹如何使用關(guān)鍵方法和選項來(lái)利用現有的 IT 資產(chǎn)并通過(guò) SOA 接口加以重用,還將介紹如何為新的和現有的資產(chǎn)構建服務(wù),以確保它們可以用于未來(lái)的 SOA 工作。本文描述了如何使用“面向服務(wù)的體系結構中的服務(wù)創(chuàng )建場(chǎng)景”的實(shí)現模式來(lái)解決與該案例研究相關(guān)的業(yè)務(wù)和 IT 挑戰。 案例研究簡(jiǎn)介 JKHL Enterprises (JKHLE) 正在進(jìn)行一系列的基本業(yè)務(wù)變更,期望最終能夠獲得最大收益。JKHLE 已決定采用 SOA 來(lái)解決其面臨的業(yè)務(wù)和 IT 挑戰。 JKHLE 團隊的工作重點(diǎn)是,如何在各個(gè)銷(xiāo)售渠道中以一致的方式解決因創(chuàng )建新客戶(hù)帳戶(hù)而帶來(lái)的難題。此 SOA 采用計劃被稱(chēng)為帳戶(hù)開(kāi)立項目 (Account Open Project)。使用 SOA 方法有利于在未來(lái)業(yè)務(wù)發(fā)生變化時(shí)進(jìn)行更快的實(shí)現和提供更大的靈活性。 注意:有關(guān)該案例研究的詳細信息,請參考案例研究:SOA 案例研究,第 1 部分:項目啟動(dòng)。 我們在本文中介紹的案例研究包括以下人員和角色: - Sandy Osbourne-Archer,首席技術(shù)架構師
- Edmund Smythe-Barrett,企業(yè)架構師
- Kai Buser,集成架構師
- Willy Sheng Duo Li(也叫 Willy Li),應用程序開(kāi)發(fā)員
- Ursula DeBarry,軟件架構師和服務(wù)設計主管
- Eugene Testrite,質(zhì)量工程師經(jīng)理
帳戶(hù)開(kāi)立項目的挑戰 我們在本文中定義的帳戶(hù)開(kāi)立項目挑戰與重用作為服務(wù)公開(kāi)的現有應用程序組件、創(chuàng )建新服務(wù)和使用服務(wù)相關(guān)。 Willy Li 是一位應用程序開(kāi)發(fā)員,在其職業(yè)生涯之初的前一份工作中,積累了大約兩年的 COBOL 編程經(jīng)驗。后來(lái),Willy Li 繼續著(zhù)他的事業(yè),并在 C、C++、Microsoft? C# 和 .Net 方面錘煉了自己的編程技巧。最近,他又開(kāi)始了 Java? 編程工作。他從未想到以前的 COBOL 經(jīng)驗會(huì )對他當前的工作大有幫助。 在 Willy Li 以前的工作中,他完成了對 Java Web 服務(wù)的試驗并研究過(guò) SOA 的基本原理。Willy Li 深信,在今后的幾年中,整個(gè)行業(yè)將轉向 SOA,所以他準備將職業(yè)重點(diǎn)放在 SOA 上。遺憾的是,由于政治原因,他以前雇主那里的 SOA 開(kāi)發(fā)擱淺了,因此,他又去尋找其他的機會(huì )。在了解到 JKHLE 中 SOA 的采用情況后,Willy Li 加入了 JKHLE。 Willy Li 被分配到了新組建的帳戶(hù)開(kāi)立項目中,該項目由首席技術(shù)架構師 Sandy Osbourne-Archer 領(lǐng)導。Sandy 最近派 Willy Li 主持工作,負責服務(wù)創(chuàng )建的開(kāi)發(fā)和對現有應用程序的重用。 JKHLE 有許多應用程序運行在現有的系統上,如 CICS? 和 IMS?。因此有必要利用現有系統中的這些資產(chǎn),以便縮短時(shí)間、降低成本。 Wily 當時(shí)非常擔心對他的工作要求。Willy Li 坦言,“我對 CICS 和 IMS 一竅不通,對 COBOL 的了解也是很久以前的事”。Sandy 勸他說(shuō):“別擔心,大多數情況下,我們不需要修改 COBOL。在某些情況下,當現有的代碼與業(yè)務(wù)功能不匹配時(shí),這時(shí)我們才需要重構代碼”。 在重構現有代碼方面,可以使用 IBM? WebSphere Studio Asset Analyzer 加強對現有應用程序和資產(chǎn)的理解。當進(jìn)行重構時(shí),可以像我們在以下部分中介紹的那樣,啟用應用程序的業(yè)務(wù)功能。 IBM 將為 CICS 和 IMS 同時(shí)提供適配器,并且新版本支持將現有的應用程序作為服務(wù)公開(kāi)。這些訪(fǎng)問(wèn)方法可以在一定程度上提供屏蔽,使您不受 COBOL 和后端系統的影響。Sandy 向 Willy Li 解釋說(shuō),Willy Li 對 SOA 的背景和理解對該項目非常有用。此外,企業(yè)架構師 Edmund Smythe-Barrett 和其他架構師還將提供有關(guān) SOA 采用的全局方案。 在初次會(huì )面之后,各團隊領(lǐng)導以非正式方式討論了他們新分配的任務(wù)。Edmund 將討論他針對企業(yè)服務(wù)總線(xiàn) (ESB) 和服務(wù)注冊中心的計劃,并提供對整個(gè)基礎結構中已計劃服務(wù)的訪(fǎng)問(wèn)。由于 Willy Li 曾經(jīng)在前一雇主那里做過(guò) Web 服務(wù)試驗方面的工作,因此他能夠很快看出,與直接鏈接這些服務(wù)的刻板方法相比,使用 ESB 的服務(wù)可以提高靈活性。 Ursula DeBarry 是一名軟件架構師和服務(wù)設計主管,負責設計用于訪(fǎng)問(wèn)和處理信息的服務(wù)接口。Ursula 解釋?zhuān)?wù)設計團隊需要一些時(shí)間為所需的服務(wù)定義準備規范。根據帳戶(hù)開(kāi)立項目制定的計劃,Willy Li 已經(jīng)急切希望盡快開(kāi)始工作,并能做出一些成果出來(lái)。 Willy Li 決定,他將通過(guò)為后端系統所需的每個(gè)訪(fǎng)問(wèn)方法開(kāi)發(fā)服務(wù)原型來(lái)縮短學(xué)習過(guò)程。Willy Li 知道,當服務(wù)設計團隊公布其服務(wù)設計規范時(shí),需要更改其原型服務(wù)。 帳戶(hù)開(kāi)立項目的要求 Willy Li 安排與 Edmund 會(huì )面,以審核和討論該原型實(shí)現的要求。Willy Li 盡力確保這些要求體現出公開(kāi)和使用帳戶(hù)開(kāi)立項目服務(wù)所需的訪(fǎng)問(wèn)方法。 REQ-01:使用外部服務(wù) 帳戶(hù)開(kāi)立應用包括的流程需要使用外部第三方服務(wù)(如地址驗證服務(wù))。 REQ-02:創(chuàng )建新服務(wù) 這些服務(wù)接口將以 Web 服務(wù)描述語(yǔ)言 (WSDL) 文件的形式提供。WSDL 將為所有服務(wù)提供一個(gè)通用描述形式,實(shí)質(zhì)上對服務(wù)使用者隱藏了實(shí)現細節。Willy Li 計劃根據 WSDL 文檔創(chuàng )建一些新服務(wù)。 REQ-03:將 CICS 應用直接作為服務(wù)公開(kāi) 將 CICS Transaction Server v3.1 托管的 COBOL 應用程序作為服務(wù)公開(kāi)。Willy Li 了解到 CICS v3.1 包括對 Web 服務(wù)的本機支持和工具,這簡(jiǎn)化了該要求,因此,將很少需要甚至不需要編程。 REQ-04:將 CICS 應用間接作為服務(wù)組件公開(kāi) Willy Li 了解到,一些舊的 COBOL 應用程序仍由 CICSTransaction Server v2.3 托管,它不包括直接啟用 Web 服務(wù)的本機功能。此外,JKHLE 需要通過(guò) Java 代碼、CICS 適配器和 CICS Transaction Gateway (CTG) 來(lái)公開(kāi)由 CICS Transaction Server v2.3 托管的 COBOL 應用程序還有其他一些原因。這將使 JKHLE 內部系統和外部合作伙伴能夠將該應用程序作為一項服務(wù)來(lái)使用。 REQ-05:使 WebSphere Message Broker 流支持服務(wù) 作為支持電子業(yè)務(wù)的一部分,JKHLE 在WebSphere? Message Broker上進(jìn)行了一些投資。它是一個(gè)企業(yè)應用程序集成基礎架構,用于連接 IMS、SAP? 和 Siebel? 應用程序。JKHLE 想通過(guò)使 WebSphere Message Broker流(該流提供與基礎結構相關(guān)的服務(wù))支持服務(wù)來(lái)使用和重用在 WebSphere Message Broker 中進(jìn)行的投資。 REQ-06:使 IMS 事務(wù)支持服務(wù) 使 IMS 事務(wù)支持服務(wù)可將這些事務(wù)作為服務(wù)使用。JKHLE 公司想利用他們在 WebSphere Application Server 和 WebSphere Message Broker 中的現有投資。 中間層服務(wù)將用來(lái)與 IMS 后端系統通信。
將 SOA 場(chǎng)景模式應用于案例研究 本部分描述了如何使用“面向服務(wù)的體系結構中的服務(wù)創(chuàng )建場(chǎng)景”實(shí)現模式來(lái)解決與帳戶(hù)開(kāi)立項目案例研究相關(guān)的業(yè)務(wù)和 IT 挑戰。 - 使用外部服務(wù)
- 創(chuàng )建新服務(wù)
- 將現有應用程序作為服務(wù)直接公開(kāi)
- 將現有應用程序作為服務(wù)間接公開(kāi)
- 使 WebSphere Message Broker 流支持服務(wù)
- 使 IMS 事務(wù)支持服務(wù)
使用外部服務(wù) 注意:使用外部服務(wù)非常方便,并且很少需要甚至不需要編碼,特別是當服務(wù)符合 WS-I.org 概要時(shí)。還有其他一些注意事項(如,當所選服務(wù)臨時(shí)不可用時(shí)提供備用服務(wù)),多數情況下使用 ESB 很容易解決。 還需要為其他管理域中提供的服務(wù)進(jìn)行一些計劃。 帳戶(hù)開(kāi)立流程應用程序需要對新的帳戶(hù)擁有者進(jìn)行地址驗證。JKHLE 組織確定,使用外部服務(wù)提供商來(lái)驗證地址比構建和維護內部應用程序要好得多。Willy Li 將進(jìn)行調查,并作為原型使用 AddressesInc.com 外部服務(wù)中的 VerifyAddress 服務(wù)進(jìn)行地址驗證。 建議的解決方案 Willy Li 通過(guò)將 WSDL 描述導入 IBM Rational Application Developer 中預覽了 AddressesInc.com 中的 VerifyAddress 服務(wù),他以前使用 IBM Rational Application Developer 生成了一個(gè)帶有簡(jiǎn)單用戶(hù)界面的 Web 服務(wù)客戶(hù)端應用程序,該界面不但簡(jiǎn)單好用而且比較對于用戶(hù)來(lái)說(shuō)感覺(jué)比較熟悉。 在創(chuàng )建原型時(shí),Willy Li 遇到了幾個(gè)難題。一個(gè)問(wèn)題是,VerifyAddress 的正式版本需要使用安全套接字層 (SSL)。JKHLE 還希望避免直接鏈接到任何服務(wù),以免導致不靈活的基礎結構。因此,JKHLE 將 ESB 用于與所有服務(wù)的交互,并將通過(guò)使用 IBM WebSphere Message Broker 來(lái)實(shí)現 ESB 功能。 Willy Li 與 Edmund 會(huì )面,計劃在 JKHLE 的業(yè)務(wù)流程中使用此外部服務(wù)。Edmund 說(shuō),他們需要做的就是更新 ESB 服務(wù)注冊中心(通過(guò)使用 IBM WebSphere Service Registry and Repository 來(lái)實(shí)現),將一個(gè)入口添加到此外部服務(wù),然后這項服務(wù)就可以使用了。 還需要更新服務(wù)注冊中心,以便包含該服務(wù)的元數據。 由于 JKHLE 和 AddressesInc.com 在不同的管理域中,可能需要進(jìn)行一些計劃或協(xié)商,以確保達到 JKHLE 所需的可用性和吞吐量。AddressesInc.com 是一家具有良好聲譽(yù)的可靠提供商,但是,由于此服務(wù)對于業(yè)務(wù)流程非常關(guān)鍵,所以計劃服務(wù)在不可用的時(shí)間非常重要,即使這種可能性未必存在也需要進(jìn)行計劃。 Edmund 解釋說(shuō) ESB 將有效地虛擬化該服務(wù)。當一個(gè)服務(wù)使用者向 ESB 發(fā)送請求時(shí),該服務(wù)使用者將得到一個(gè)回應。必要時(shí),ESB 可以在運行時(shí)決定是否使用備用提供商。當備用服務(wù)具有不同的消息 schema 時(shí),ESB 可以將該請求轉換為所需的 schema,代表使用者發(fā)出請求,并將該響應轉換回用戶(hù)所需的形式。整個(gè)流程對請求者應用程序(如業(yè)務(wù)流程)是透明的。Edmund 和 Willy Li 對使用外部服務(wù)的 ESB 方法非常滿(mǎn)意。 工作方式 圖 1 描述了外部服務(wù)的使用方式。JKHLE 計劃通過(guò) ESB 從業(yè)務(wù)流程中調用該服務(wù)。WSDL 是進(jìn)行該調用所需的一切要件。IBM Rational?Application Developer 可以讀取該 WSDL,生成一個(gè)服務(wù)代理對象,并測試該應用程序,從而使 Java 開(kāi)發(fā)人員將重點(diǎn)放在業(yè)務(wù)邏輯而非 XML 細節上。 ESB 接收該請求并使用 IBM WebSphere Service Registry and Repository 來(lái)查找適當的提供商。ESB 使用 HTTP 或 MQ 協(xié)議來(lái)接受該請求和執行協(xié)議轉化,以便在該提供商需要該服務(wù)時(shí)通過(guò) SSL 調用它。如果使用備用提供商,ESB 可以在需要時(shí)向使用者應用程序或業(yè)務(wù)流程透明地轉換該請求消息。 圖 1 使用外部服務(wù) AddressesInc.com 或備用提供商以期望的形式接收該請求、處理該請求并發(fā)送響應。如果需要,ESB 將轉換該響應消息并使用適當的協(xié)議將其路由到該服務(wù)使用者。 使用外部服務(wù)的注意事項 有時(shí),一些業(yè)務(wù)合作伙伴可以更好、更快、更便宜地為您完成某些工作。JKHLE 沒(méi)有地址驗證業(yè)務(wù),它發(fā)現維護自己的服務(wù)要比使用由 AddressesInc.com 提供的服務(wù)昂貴得多。 創(chuàng )建新服務(wù) 盡管 AccountEligibility 服務(wù)并沒(méi)有完全設計好,Willy Li 還是訪(fǎng)問(wèn)了記錄以前討論的文檔,這為他提供了有關(guān)所需接口的一些好的想法。該服務(wù)的基本功能是根據記帳數據(如過(guò)期未付余額日、拒付款和最終結帳日)決定是否需要信用報告。適當性決策將應用于帳戶(hù)驗證業(yè)務(wù)流程中。 雖然 JKHLE 業(yè)務(wù)要求與在 CICS 上托管的現有 COBOL 中的此功能有某些相似之處,但它已有了相當大的發(fā)展。 根據服務(wù)設計團隊提供的建議和 Willy Li 本人的經(jīng)驗,他決定,最好創(chuàng )建一個(gè)新的基于 Java 的 Web 服務(wù)。 建議的解決方案 Willy Li 從以前的經(jīng)驗中得出,IBM Rational Application Developer 中包含的工具和測試環(huán)境可以使其創(chuàng )建新服務(wù)的工作變得更加輕松。為了解這些服務(wù)設計方面的知識,Willy Li 決定使用 IBM Rational Software Architect,該體系結構包括 Rational Application Developer 功能和用于設計的建模工具。Willy Li 將從創(chuàng )建一個(gè)新的 UML 設計開(kāi)始,這包括協(xié)議、有效負載格式、非功能性需求等。 在過(guò)去,Willy Li 采取自底向上的方法,即創(chuàng )建一種 Java 方法,然后生成與該方法參數和類(lèi)型匹配的 WSDL 接口。對于原型,他決定使用自頂向下的方法,這樣,他可以先在 Rational Software Architect 中創(chuàng )建一個(gè) WSDL 文件。Willy Li 知道,服務(wù)設計團隊將在完成規范后針對實(shí)際的項目要求向他提供 WSDL 定義。 Willy Li 將使用 Rational Software Architect 中的工具從 WSDL 中生成 EJB? 代碼來(lái)創(chuàng )建新服務(wù)。還將生成映射代碼以解析 SOAP 請求消息,因此,EJB 可以看到 Java 形式的消息并在 SOAP 中生成從 Java 返回的響應消息。 開(kāi)發(fā)人員無(wú)需 XML 知識就可創(chuàng )建服務(wù)。具體的工作(如查詢(xún)記帳)是標準的 Java 編程。 可以使用 Web 服務(wù)向導來(lái)生成簡(jiǎn)單的測試應用程序來(lái)實(shí)驗該服務(wù)。當 Willy Li 在 Rational Software Architect 測試環(huán)境中通過(guò)向導生成的接口對該服務(wù)進(jìn)行單元測試后,他將代碼 Check-in 到 IBM Rational ClearCase 中,后者已與 IBM Rational ClearQuest 集成。ClearQuest 中的工作流將向質(zhì)量工程師經(jīng)理 Eugene Testrite 發(fā)出提醒,指示新服務(wù)可用于測試。此外,Willy Li 還將向 IBM WebSphere Service Registry and Repository 發(fā)布服務(wù)。 Willy Li 將與 Eugene 聯(lián)系,討論其原型設計工作和測試要求。原型設計為質(zhì)量工程師提供了在測試要求和方法體系早期提高速度的機會(huì )。Eugene 的質(zhì)量工程師團隊最終將測試 JKHLE測試環(huán)境中的服務(wù),在通過(guò)測試之后將更新該服務(wù)注冊中心的狀態(tài)。 Eugene 非常激動(dòng)動(dòng)地告訴 Willy Li,他的團隊可以通過(guò)使用 IBM Tivoli? Composite Application Manager for SOA 為 Web 服務(wù)使用者、提供商和 ESB 中介提供性能和使用標準測試。Willy Li 急于了解如何使用 IBM Tivoli Composite Application Manager 來(lái)幫助更好地了解應用程序開(kāi)發(fā)中的性能瓶頸,以及如何在生產(chǎn)環(huán)境中使用它,以確保能夠監控服務(wù)水平協(xié)議 (SLA)。 工作方式 如圖 2 中突出顯示的那樣,有幾種方法可用來(lái)創(chuàng )建新服務(wù)。該模型可以通過(guò)使用 Rational Software Architect 在 UML 中實(shí)現。Java 類(lèi)可以從 UML 中生成。接下來(lái),可以從該 Java 類(lèi)中生成 WSDL,然后進(jìn)行應用程序測試。這可以確保服務(wù)契約與 WSDL 文件精確匹配。 圖 2 創(chuàng )建新服務(wù) 此外,WSDL 文檔還可以在 WSDL 編輯器中創(chuàng )建,并且從 WSDL 中可以生成一個(gè) Java 類(lèi)框架。后一方法允許開(kāi)發(fā)人員根據需要創(chuàng )建服務(wù)契約和匹配的 WSDL。 Web 服務(wù)向導提供使類(lèi)支持服務(wù)的能力,方法是通過(guò)創(chuàng )建 SOAP 處理程序以執行對 SOAP 消息的 XML 解析,并在必要時(shí)創(chuàng )建一個(gè) WSDL 描述。 創(chuàng )建新服務(wù)的注意事項 創(chuàng )建新服務(wù)的關(guān)鍵注意事項: - 現有的應用程序不支持功能性訪(fǎng)問(wèn)要求
- 現有的應用程序不適合作為服務(wù)使用
開(kāi)發(fā)人員通常會(huì )直接得出結論,認為編寫(xiě)新代碼比重用現有資產(chǎn)更容易,特別是當現有資產(chǎn)是使用不熟悉的現有技術(shù)或第三方技術(shù)構建時(shí)更是如此。不過(guò),當有可用的適配器或連接器時(shí),或者當應用程序可以作為服務(wù)直接公開(kāi)時(shí),重用現有的資產(chǎn)實(shí)際上將非???、而且很方便。重用現有資產(chǎn)還會(huì )大量減少代碼的編寫(xiě)、測試、維護和更改。 當現有的資產(chǎn)經(jīng)過(guò)驗證而且可靠,特別是正在使用時(shí),重用現有資產(chǎn)更有實(shí)際意義。在以下部分中,我們將討論重用由 CICS Transaction Server 和 IMS 托管的現有應用程序的方法。這些概念還可應用于其他現有的應用程序和企業(yè)信息系統 (EIS)。 將現有應用程序作為服務(wù)直接公開(kāi) 注意:許多現有應用程序平臺和企業(yè)信息系統提供了將現有應用程序功能作為服務(wù)直接公開(kāi)以供重用的能力。此方法一般很少需要或根本不需要編程,這就極大地減少了開(kāi)發(fā)與測試的時(shí)間與成本。 即使那些對現有應用程序或企業(yè)信息系統(如 CICS)不太懂或者根本不懂的開(kāi)發(fā)人員也可以利用向導輕松地將現有的應用程序功能作為服務(wù)公開(kāi)。 JKHLE 有許多后端 EIS 系統,這些系統每天運行著(zhù)許多業(yè)務(wù)應用程序。特別是,記帳應用程序是使用 COBOL 編寫(xiě)的,并且運行在 CICS Transaction Server v3.1 上。記帳應用程序雖然較舊,其功能卻不錯。JKHLE 不計劃替換此系統。 帳戶(hù)開(kāi)立流程應用程序需要將 CICS 事務(wù)用于記帳系統。這需要公開(kāi)該應用程序的功能,以便讓新的帳戶(hù)開(kāi)立流程應用程序使用,以及由其他應用程序和系統重用或使用。 建議的解決方案 CICS Transaction Server V3.1 提供了 Web 服務(wù)的本機支持,其中包括用來(lái)運行該服務(wù)的運行時(shí)和輕松創(chuàng )建服務(wù)的工具。直接公開(kāi)現有的 CICS 應用程序可讓服務(wù)使用者使用 SOAP 請求和響應編程模型直接與 CICS 通信。 Willy Li 決定創(chuàng )建一項 SetupBillAccount 服務(wù),以便將 CICS 事務(wù)作為服務(wù)公開(kāi)。該服務(wù)然后可以由帳戶(hù)開(kāi)立流程應用程序使用。 雖然 Willy Li 過(guò)去曾經(jīng)做過(guò)一些 COBOL 編程,但對最新的 CICS 技術(shù)發(fā)展以及這些技術(shù)如何支持 Web 服務(wù)等情況,他感覺(jué)還是有點(diǎn)跟不上形勢。 為了獲取最新知識,Willy Li 閱讀了一篇標題為“Adapting legacy systems for SOA, Finding new business value in older applications“的文章,這篇文章可通過(guò)以下網(wǎng)址找到: http://www.ibm.com/developerworks/webservices/library/ws-soa-adaptleg/ 雖然最初的工作中并不需要,但 Willy Li 還了解到可以從 CICS 調用一些服務(wù)。 對于該原型,Willy 使用 IBM Rational Developer for System z? 導入了一個(gè)描述所需的 CICS 事務(wù)的 COBOL Copybook,并從中生成各種構件,其中包括: 該文檔用來(lái)描述該服務(wù),特別是 SOAP 請求和響應格式,以及在這些消息中數據的名稱(chēng)和類(lèi)型。此文檔將在 IBM WebSphere Service Registry and Repository 中發(fā)布,以便讓該服務(wù)的用戶(hù)知道如何調用該服務(wù)和解釋響應。 該文件中有執行轉換所需的全部元數據。此配置信息在運行時(shí)安裝在 CICS Transaction Server 上。WSBIND 文件中的信息指示 CICS 如何處理消息和調用 CICS 應用程序,以及如何從結果中創(chuàng )建響應消息。 WSDL 文檔允許透明使用由 CICS 支持的服務(wù)。該服務(wù)的請求者只知道 SOAP 請求和響應格式,不知道或不用關(guān)心它在由 CICS 處理。 工作方式 圖 3 描述了將 CICS 應用程序作為服務(wù)直接公開(kāi)。該服務(wù)的使用者可使用 HTTP 或 WebSphere MQ 將 SOAP 消息發(fā)送到 CICS Transaction Gateway。 在接到傳入 SOAP 請求后,CICS 將把 SOAP 消息中的信息轉換為 COMMAREA 中的數據并執行 CICS 事務(wù)。 當完成該事務(wù)后,CICS 將使用 COMMAREA 中的數據來(lái)創(chuàng )建 SOAP 響應,然后將其發(fā)回到該服務(wù)的使用者。 圖 3 將現有的 CICS 應用程序作為服務(wù)直接公開(kāi) 使用直接公開(kāi)模式的注意事項 使用直接公開(kāi)實(shí)現模式可以將現有的應用程序功能作為服務(wù)來(lái)公開(kāi)。在使用 CICS 的情況下,CICS v3.1 包括在本地公開(kāi)服務(wù)的支持,而 CICS v2.3 需要通過(guò)添加一個(gè) Feature Pack 來(lái)實(shí)現這個(gè)支持。 使用直接公開(kāi)模式的重要注意事項: - 方便性是將現有資產(chǎn)作為服務(wù)公開(kāi)的主要動(dòng)機。因為這樣做不需要編寫(xiě)代碼,所以節省了開(kāi)發(fā)和測試時(shí)間。
- 這些服務(wù)要求與該應用程序功能和數據密切對應。因此,不需要使用 Java 訪(fǎng)問(wèn)其他功能。
- 不需要自定義發(fā)往或來(lái)自實(shí)現資產(chǎn)的信息。
如果這些原因不適用,則間接公開(kāi)實(shí)現可以提供另外一種方法,但成本是需要增加一些工作和中間件。 將現有應用程序作為服務(wù)間接公開(kāi) 注意:適配器和連接器提供了間接訪(fǎng)問(wèn)各種平臺上的應用程序的功能,如 z/OS? 上的企業(yè)信息系統(例如,CICS、IMS 和 SAP)。該適配器或連接器提供一個(gè) Java API,從而將開(kāi)發(fā)人員屏蔽開(kāi),他們無(wú)需了解后端應用程序。 通過(guò)將該適配器或連接器的 Java 代碼作為服務(wù)包裝起來(lái),可以將該應用程序功能作為服務(wù)公開(kāi)和使用以及供重用。此實(shí)現模式稱(chēng)為間接公開(kāi)模式。 該開(kāi)發(fā)環(huán)境中有同時(shí)在 CICS Transaction Server v3.1 和 v2.3 上運行的應用程序。目前已在 CICS v2.3 上部署了應收帳款系統,并且想重用這些 CICS 功能來(lái)創(chuàng )建名為 SetupARAccount 的新服務(wù)。 Willy Li 了解到,與為其他 CICS 應用程序實(shí)現的類(lèi)型相似,在 JKHLE 環(huán)境中有一些因素制約著(zhù)對直接公開(kāi)模式的使用。CICS v2.3 不包括將應用程序作為服務(wù)公開(kāi)的本機支持。有一個(gè)可以部署的 Feature Pack,該 Feature Pack 可以為 v2.3 提供此功能;但是,JKHLE 不想升級現有的 CICS v2.3 系統。JKHLE 正在將較舊的 CICS 應用程序遷移到 CICS v3.1,CICS v3.1 提供本機服務(wù)支持和更好的工具,可以支持構建和托管服務(wù)。 Willy Li 還了解到,間接公開(kāi)模式可用于 CICS v2.3。 間接公開(kāi)模式提供了創(chuàng )建一種服務(wù)將適配器或連接器包裝起來(lái)訪(fǎng)問(wèn)該應用程序的能力。間接公開(kāi)模式提供了對數據轉換、聚合 CICS 功能,以及將所需的服務(wù)契約(在 WSDL 中)映射到基礎實(shí)現(由 COBOL Copybook 表示)的最大限度控制。 因此,Willy Li 決定使用間接公開(kāi)模式,提供將CICS v2.3 系統上的應收帳款系統作為服務(wù)公開(kāi)的能力。 建議的解決方案 Willy Li 將 IBM Rational Developer for System z 用于開(kāi)發(fā),這包括 Rational Application Developer 功能和針對 System z 應用程序的附加工具。CICS/IMS Java 數據綁定向導可用來(lái)讀取 COBOL Copybook 并生成特定于應用程序的訪(fǎng)問(wèn)類(lèi),在第 16 頁(yè)上的圖 4 中它們分別顯示為 A 和 B。這些類(lèi)了解的 CICS 功能和數據,并且它們使用 J2EE? 連接體系結構 (JCA) 處理與 CICS 的會(huì )話(huà)。CICS ECI 資源適配器在部署了該服務(wù)的 IBM WebSphere Application Server 運行時(shí)中使用。 由于初步服務(wù)契約是針對 SetupARAccount 定義的,Willy Li 決定為該服務(wù)導入 WSDL。接下來(lái),他使用工具從 WSDL 中生成一個(gè)類(lèi)架構和一個(gè)處理傳入 SOAP 請求的 SOAP 處理器類(lèi),SOAP 處理器類(lèi)是通過(guò)處理代碼來(lái)處理的。 接著(zhù),Willy 使用 Java 編寫(xiě)處理代碼,但這不需要太多的編程或代碼。該處理代碼將傳入方法調用映射到訪(fǎng)問(wèn)類(lèi)、聚合功能,并根據需要轉換數據。Willy Li 使用的是第 8 頁(yè)上“創(chuàng )建新服務(wù)”中描述的相同步驟,其中包括根據需要調用生成類(lèi)上的方法來(lái)生成框架代碼和完成代碼。 從理論上講,Willy Li 除了要知道如何使用 Copybook 和向導之外,不需要了解有關(guān) JCA 或 CICS 適配器甚至 COBOL 的任何知識。他只需調用 Java 類(lèi)上的方法來(lái)完成工作就可以了。盡管此工作的重點(diǎn)是作為服務(wù)重用 CICS 應用程序、通過(guò)使用 Java 來(lái)創(chuàng )建服務(wù),但該資產(chǎn)仍可從 Java API 訪(fǎng)問(wèn)。 工作方式 圖 4 顯示了使用 JCA 基本服務(wù)組件的方式間接地公開(kāi)CICS 應用程序 圖 4 將現有的 CICS 應用程序作為服務(wù)組件間接公開(kāi) 在此案例中,我們將通過(guò)創(chuàng )建中間層 Web 服務(wù)來(lái)訪(fǎng)問(wèn) CICS,以間接的方式公開(kāi)由 CICS Transaction Server 托管的現有 COBOL COMMAREA 應用程序。中間層 Web 服務(wù)包裝會(huì )話(huà) EJB,后者使用 CICS ECI 資源適配器與 CICS Transaction Gateway (CTG) 通信來(lái)訪(fǎng)問(wèn) CICS Transaction Server。CICS ECI 資源適配器是一個(gè)用于與 CTG 一起打包的 WebSphere Application Server 的 JCA 適配器。 使用間接公開(kāi)模式的注意事項 直接公開(kāi)實(shí)現模式具有不必編碼和測試代碼的顯著(zhù)優(yōu)勢,并且在許多情況下,這種模式是最佳選擇。但在某些情況下,為間接公開(kāi)模式編寫(xiě)所需的代碼仍然更好一些。 使用間接公開(kāi)模式的重要注意事項: - 該服務(wù)實(shí)現需要將 CICS 功能和后端代碼中沒(méi)有的其它功能混合使用。
- 您可以輕松地將該服務(wù)接口與后端實(shí)現的接口分開(kāi),這使您能夠創(chuàng )建一個(gè)更易使用、更易替換為以后的新實(shí)現的服務(wù)。當已經(jīng)存在服務(wù)規范并且該服務(wù)規范不同于您通過(guò)直接方法獲得的服務(wù)規范時(shí),這種方法也比較合適。
- 雖然主要在 CICS 上運行該服務(wù)有一些性能優(yōu)勢,但可能需要更好地控制性能影響。
使 WebSphere Message Broker 流支持服務(wù) 帳戶(hù)開(kāi)立流程應用程序與許多后端系統交互。 Willy Li 了解到,該 IT 組織已經(jīng)實(shí)現了 IBM WebSphere Message Broker,以提供到后端系統(如 IMS、SAP 和 CICS)的連接性。JKHLE 之所以選擇 WebSphere Message Broker 方法,是因為它能夠整合數據、轉換消息和傳輸協(xié)議。 目前訪(fǎng)問(wèn) WebSphere Message Broker 流的方法需要使用 WebSphere MQ。雖然此方法可以用于 JKHLE,但它只能支持使用MQ,并且不容易被各種 JKHLE 應用程序和系統重用。 Edmund 邀請集成架構師 Kai Buses 參加關(guān)于使 WebSphere Message Broker 流支持服務(wù)的討論,因為 Kai 非常精通 WebSphere Message Broker 和后端集成知識。Kai 解釋說(shuō),WebSphere Message Broker 是 JKHLE ESB 體系結構的一個(gè)關(guān)鍵組件。 Kai 建議 Willy Li 開(kāi)發(fā)一個(gè)支持服務(wù)的 WebSphere Message Broker 流原型,以更加方便地重用這些流。Edmund 建議 Willy Li 使現有的 WebSphere Message Broker 流支持服務(wù),以便訪(fǎng)問(wèn)使用 COBOL 編碼并在 IMS 上托管的分類(lèi)帳應用程序。 Willy Li 了解到,帳戶(hù)開(kāi)立流程應用程序需要檢查新客戶(hù)是否與現有的關(guān)鍵帳戶(hù)擁有者有關(guān)聯(lián),如果有,要確保他們獲得了最高級別的服務(wù)。Edmund 解釋說(shuō),分類(lèi)帳應用程序包含客戶(hù)進(jìn)行關(guān)聯(lián)檢查所需的數據。分類(lèi)帳應用程序可用來(lái)維護每個(gè)客戶(hù)的銷(xiāo)售收入數據,其目的在于了解哪些客戶(hù)為 JKHLE 帶來(lái)了最大收入。 Willy Li 決定,他將為支持服務(wù)的 WebSphereMessage Broker 流創(chuàng )建一個(gè)原型,以便訪(fǎng)問(wèn)在 IMS 上托管的分類(lèi)帳應用程序。 建議的解決方案 從理論上講,Willy Li 不需要知道 WebSphere Message Broker 流的技術(shù)細節。Web 服務(wù)將包裝現有的 WebSphere Message Broker 流,以允許該流作為服務(wù)使用。 工作方式 圖 5 描述了到后端企業(yè)信息系統的支持服務(wù)的 WebSphere Message Broker 流。 圖 5 使 WebSphere Message Broker 流支持服務(wù) IBM WebSphere Message Broker 工具包可用來(lái)讀取 WebSphere Message Broker 流并生成 Web 服務(wù)以公開(kāi)該流。該服務(wù)將部署到安裝了 WebSphere Message Broker 的節點(diǎn)上?;?SOAP 的 Web 服務(wù)支持 HTTP 或 HTTPS、JMS 和 WebSphere MQ 傳輸。 WSDL 將發(fā)布到 IBM WebSphere Service Registry and Repository 上,并提供給服務(wù)使用者使用。該服務(wù)將部署到安裝了 WebSphere Message Broker 的節點(diǎn)上。 使用支持服務(wù)的 WebSphere Message Broker 流的重要注意事項 使用支持服務(wù)的 WebSphere Message Broker 流的重要注意事項包括: - WebSphere Message Broker 流已經(jīng)存在,支持服務(wù)是作為服務(wù)重用的快速、直接的方法。
- 當需要轉換消息和傳輸協(xié)議以及需要整合消息數據時(shí),應考慮使新的 WebSphere Message Broker 流支持服務(wù)。
- WebSphere Message Broker 流提供了可供業(yè)務(wù)服務(wù)組合使用的諸如安全性和審核之類(lèi)的基礎結構服務(wù)。
- WebSphere Message Broker 使用的 JMS 和 WebSphere MQ 是進(jìn)行可靠消息傳遞的綜合性行業(yè)標準,同時(shí)還是一種廣泛采用的、包括 IMS 連接性在內的業(yè)務(wù)到業(yè)務(wù)的集成技術(shù)。
- 提供一個(gè)耦合了中介的服務(wù)實(shí)現。
- 利用 WebSphere MQ 進(jìn)行基本的消息傳遞和 Web 服務(wù)流動(dòng)。
使 IMS 事務(wù)支持服務(wù) 如 “使 WebSphere Message Broker 流支持服務(wù)”中所述,Willy Li 了解到需要將后端 IMS 應用程序作為服務(wù)公開(kāi)。 Edmund 和 Kai explain 向 Willy Li 解釋說(shuō),有幾種解決方案模式可用于使 IMS 事務(wù)支持服務(wù),其中包括: - 使用 IMS TM 適配器使 IMS 事務(wù)支持服務(wù)
- 使用 IMS SOAP Gateway 使 IMS 事務(wù)支持服務(wù)
- 使用 MQ IMS Bridge 使 IMS 事務(wù)支持服務(wù)
針對構建原型這一目的,Willy Li 將使用與 Edmund 和 Kai 討論的每種方法將分類(lèi)帳 IMS 應用程序作為服務(wù)公開(kāi)。Willy Li 計劃使用分類(lèi)帳應用程序,該應用程序是使用 COBOL 編碼,并且由 IMS Transaction Manager 托管。 使用 IMS TM 適配器使 IMS 事務(wù)支持服務(wù) 為了通過(guò) IMS TM 適配器使 IMS 事務(wù)支持服務(wù),Willy Li 將使用服務(wù)組件間接地公開(kāi)現有的應用程序功能。 業(yè)務(wù)一致性通常是通過(guò)自頂向下的方式或結合使用自頂向下和中間相遇方法定義服務(wù)接口 (WSDL) 來(lái)實(shí)現的。 通過(guò)創(chuàng )建中間層 Web 服務(wù)來(lái)訪(fǎng)問(wèn) IMS,可將 IMS 應用程序作為服務(wù)間接公開(kāi)。中間層 Web 服務(wù)包裝會(huì )話(huà) EJB,后者使用 IMS TM 資源適配器與 IMS 連接通信,以訪(fǎng)問(wèn)在其上托管該應用程序的 IMS Transaction Manager。 Willy Li 了解到,通過(guò) IMS TM 適配器使 IMS 事務(wù)支持服務(wù)將提供最強健的全局事務(wù)支持。IMS TM 資源適配器兼容 JCA XA 并支持兩階段提交。 工作方式 圖 6 描述了使用 IMS TM 資源適配器組裝和部署支持服務(wù)的IMS 事務(wù)的環(huán)境。 圖 6 使用 IMS TM 適配器使 IMS 事務(wù)支持服務(wù) 對于存在 COBOL Copybook 的情形,Willy Li 將該 Copybook 導入到 IBM Rational Application Developer 中。如果不存在 COBOL Copybook,可先使用 IBM Rational Application Developer 來(lái)創(chuàng )建該 Copybook,然后將該 Copybook 導入到 Rational Application Developer。 接下來(lái),Willy Li 將使用該工具生成輸入和輸出轉換程序、J2C Bean、服務(wù) WSDL 和服務(wù)應用程序。然后將該服務(wù)部署到中間層 WebSphere Application Server,并且將 WSDL 發(fā)布給 IBM WebSphere Service Registry and Repository。 重要注意事項 使用 IMS TM 適配器使 IMS 事務(wù)支持服務(wù)的重要注意事項包括: - IMS TM 資源適配器使用 J2EE Connector Architecture (JCA)標準進(jìn)行消息傳遞,使此選項成為最廣泛采用的 IMS 連接選項,且具有當今最高的服務(wù)質(zhì)量。
- 提供一個(gè)耦合了中介的服務(wù)實(shí)現。
- 如果客戶(hù)使用 WebSphere Application Server 創(chuàng )建中間層組件,則最佳集成選項一般是使用 IMS TM 資源適配器的 J2C。
使用 IMS SOAP Gateway 使 IMS 事務(wù)支持服務(wù) Willy Li 了解到,他可以使用 IMS SOAP Gateway 讓 IMS 應用程序成為可供帳戶(hù)開(kāi)立流程應用程序使用或其他應用程序重用的 Web 服務(wù)。 使用 IMS SOAP Gateway,可以在處理數據的方式方面獲得更好的靈活性。例如,您可以讓該數據將客戶(hù)端中的 XML 數據發(fā)送到能夠由新的或增強的 IMS 應用程序處理的 IMS 環(huán)境。通過(guò)使用 IMS XML DB 功能可以將該數據直接存儲在 XML 中,也可以將 XML 數據轉換為數據字節。 Willy Li 還了解到,IMS SOAP Gateway 包括兩個(gè)主要組件: - IMS SOAP Gateway 部署實(shí)用工具
這一端到端部署實(shí)用工具使您能夠設置屬性和創(chuàng )建 IMS SOAP Gateway 用來(lái)將 IMS 應用程序作為 Web 服務(wù)的運行時(shí)代碼。 該服務(wù)器用來(lái)處理 SOAP 消息。它可以從客戶(hù)端應用程序中接收 SOAP 消息,將其轉換為 IMS 輸入消息,并通過(guò) IMS 連接將其發(fā)送給 IMS。然后從 IMS 接收輸出消息,將其轉換為 SOAP,并將其發(fā)回到該客戶(hù)端。 工作方式 圖 7 描述了使用 IMS SOAP Gateway 組裝和部署支持服務(wù)的 IMS 事務(wù)的環(huán)境。 圖 7 使用 IMS SOAP Gateway 使 IMS 事務(wù)支持服務(wù) Willy Li 開(kāi)始從 SCM 檢索分類(lèi)帳應用程序構件,包括 COBOL 程序和 Copybook。這些構件被導入到 IBM Rational Developer for System z 中。Willy Li 使用該工具來(lái)生成輸入和輸出 XML 轉換程序、驅動(dòng)程序和服務(wù) WSDL。 接下來(lái),Willy Li 將生成的 COBOL 源復制到 z/OS,以便為 XML 數據轉換和作為 Web 服務(wù)調用的 IMS 應用程序編譯和準備生成的源代碼。生成的 WSDL 將被部署到 IMS SOAP Gateway,并發(fā)布給 IBM WebSphere Service Registry and Repository。 重要注意事項 使用 IMS SOAP Gateway 使 IMS 事務(wù)支持服務(wù)的重要注意事項包括: - 通過(guò)對訪(fǎng)問(wèn) IMS 事務(wù)提供基本的 SOAP 支持,為通過(guò) Web 的消息傳遞提供輕量級標準。
- 提供一個(gè)松散耦合的服務(wù)實(shí)現。
- 如果客戶(hù)不想編寫(xiě) Web 服務(wù)包裝程序(例如,為 EJB 編寫(xiě)包裝程序),則 IMS Gateway 通常是最佳選項。
使用 MQ IMS Bridge 使 IMS 事務(wù)支持服務(wù) 如 “使 WebSphere Message Broker 流支持服務(wù)”中所述,Willy Li 將通過(guò)使 WebSphere Message Broker 流支持服務(wù)來(lái)訪(fǎng)問(wèn)后端 IMS 分類(lèi)帳應用程序。 通過(guò)使用 WebSphere MQ 和 MQ IMS Bridge,支持服務(wù)的 WebSphere Message Broker 流可用來(lái)與 IMS 后端系統通信 (請參見(jiàn)圖 8)。MQ IMS Bridge 使用特別定義的隊列與 IMS 通信,并使用 IMS OTMA 接口從該隊列中獲取消息并將這些消息發(fā)送到 IMS,同時(shí)通過(guò) OTMA 接口接收輸出消息。 圖 8 使用 WebSphere Message Broker 和 MQ IMS Bridge 使 IMS 事務(wù)支持服務(wù) 使 IMS 事務(wù)支持服務(wù)的注意事項 表 1 概述了前面部分中介紹的使 IMS 事務(wù)支持服務(wù)的各種方法的體系結構注意事項。 表 1 使 ISM 事務(wù)支持服務(wù)的注意事項 | 基準點(diǎn) | IMS SOAP Gateway | IMS TM 資源適配器 | JMS / MQ (WebSphere Message Broker) | | 體系結構限制 | - 32 K 限制(同步/異步入站、異步出站)
- 僅限于非會(huì )話(huà)型事務(wù)
| - >32 K 帶 IMS 多片段(同步/異步入站,異步出站)
- 使用 TCP/IP 的出站
| >32 K 帶 IMS 多片段(異步入站和出站) | | 事務(wù)性 | 無(wú)全局事務(wù)支持 | JCA XA 支持(最強健的全局支持) | 無(wú)全局事務(wù)支持 | | 安全性 | - 尚無(wú)本機 WS 安全性
- 針對 SSL 的第三方安全選項,提供用戶(hù) ID 和密碼
| - WS-Security(由 WebSphere Application Server 提供)。
- 托管的容器或組件
- 信任模式(IBM 連接中的 SSL 或用戶(hù) ID 和密碼驗證,IMS 中基于用戶(hù) ID 的 SAF)
| - MQ 消息中的傳播標識
- 信任(SSL 或通道)或隊列保護
- MQ IMS Bridge 中的 SAF 用戶(hù) ID 和密碼驗證
| | 可靠性/可用性 | - 基于使用的操作系統
- 推薦在 System z 上部署的 IMS SOAP Gateway_ 向 WAS 和 IMS 連接提供高可用配置選項(特別是 z/OS TCP/IP Sysplex Distributor)
| 向 WAS 和 IMS 連接提供高可用配置選項(特別是 z/OS TCP/IP Sysplex Distributor)
| 基于 IMSplex 和 MQ 工作負載管理的高可用性配置(群集或共享隊列) 性能/可擴展性 | | 性能/可擴展性 | | 目前考慮的最佳選項 | |
總結 在短時(shí)間內(包括利用工具熟悉解決方案模式和試驗的時(shí)間),Willy Li 已經(jīng)準備好創(chuàng )建帳戶(hù)開(kāi)立項目所需的那些典型服務(wù)。重用由 CICS 和 IMS 托管的現有應用程序比 Willy Li 當初預期的更加容易,并且需要編寫(xiě)的代碼很少。Willy Li 發(fā)現,用來(lái)創(chuàng )建 UML 的 Rational Software Architect 工具、生成 WSDL 和服務(wù)的向導、測試以及與 Rational ClearCase 和 ClearQuest 集成非常容易使用。Willy Li 還發(fā)現 Rational Developer for System z 和 WebSphere Message Broker Toolkit 也可以使他的開(kāi)發(fā)工作變得更加便捷。 總之,在本案例研究中使用以下軟件進(jìn)行了服務(wù)的創(chuàng )建和重用: - 模型:
- IBM Rational Software Architect
- 組裝:
- 部署:
- IBM WebSphere Application Server
- IBM WebSphere Enterprise Service Bus
- IBM WebSphere Message Broker
- 管理:
- IBM Tivoli Composite Application Manager for SOA
- 治理:
- IBM WebSphere Service Registry and Repository
|