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