新聞中心
SOA業(yè)務(wù)整合中的連接性

SOA業(yè)務(wù)整合能夠讓企業(yè)充分利用其在開發(fā)人員、IT硬件、數(shù)據(jù)庫和應(yīng)用程序方面的現(xiàn)有投資,通過對現(xiàn)有資源的重組整合從而提高生產(chǎn)率,實現(xiàn)業(yè)務(wù)靈活性與創(chuàng)新。連接性是實現(xiàn)SOA業(yè)務(wù)整合的重要前提,只有首先完成對現(xiàn)有應(yīng)用系統(tǒng)的連接互通,才能進一步考慮業(yè)務(wù)流程的整合和優(yōu)化。IBM在SOA的連接性實現(xiàn)方面提供了若干產(chǎn)品的支持,其中就包括WebSphere Adapter。
IBM WebSphere Adapter是IBM提供的SOA業(yè)務(wù)整合解決方案中用來實現(xiàn)連接性的一款非常重要的產(chǎn)品,它遵循J2EE Connector Architecture(簡稱JCA)1.5規(guī)范,為開發(fā)人員提供了一系列連接各種異構(gòu)企業(yè)信息系統(tǒng)(Enterprise Information System,EIS)及數(shù)據(jù)源的適配器套件,從而使開發(fā)人員可以輕松地實現(xiàn)WebSphere產(chǎn)品與以其它企業(yè)應(yīng)用程序及數(shù)據(jù)源的連接和集成。
圖1:WebSphere Adapter
開啟探索之旅
開始我們故事的之前,不妨先介紹一下故事的主人公——Peter,他是一家軟件公司的開發(fā)人員,是個java編程的高手,曾經(jīng)參與過多個重大項目的開發(fā)工作,有著豐富的項目開發(fā)經(jīng)驗。
最近,Peter收到公司的通知去參加一個重要的客戶項目的實施。這是一個SOA業(yè)務(wù)整合的項目,客戶希望通過采用IBM的基于SOA的業(yè)務(wù)整合解決方案,對現(xiàn)有的若干應(yīng)用系統(tǒng)進行集成,并完成對業(yè)務(wù)流程的整合和優(yōu)化。系統(tǒng)的整體架構(gòu)如下所示:
圖2:系統(tǒng)架構(gòu)
這是一個比較典型的應(yīng)用系統(tǒng)集成的解決方案。其中,Peter將負責實現(xiàn)WebSphere平臺和應(yīng)用系統(tǒng)A間的連接和通信。
使用WebSphere Adapter還是采用面向?qū)ο缶幊??是個問題!
Peter加入項目組后,便首先對項目的整體情況和自己負責的子模塊做了一些研究。他發(fā)現(xiàn)應(yīng)用系統(tǒng)A底層采用了DB2數(shù)據(jù)庫進行數(shù)據(jù)存儲,因為當時設(shè)計時沒有考慮到將來的可擴展性,所以系統(tǒng)并沒有提供很好的編程接口供外部程序訪問。
經(jīng)過仔細的分析過后,Peter發(fā)現(xiàn)實現(xiàn)WebSphere平臺對應(yīng)用系統(tǒng)A的數(shù)據(jù)庫的訪問有兩種實現(xiàn)方案可供選擇:
1) 使用WebSphere Adapter產(chǎn)品。像我們前面介紹的那樣,WebSphere Adapter可以實現(xiàn)WebSphere平臺與其它各種應(yīng)用系統(tǒng)和數(shù)據(jù)源(包括數(shù)據(jù)庫)的快速集成。采用這種實現(xiàn)技術(shù)的好處是可以避免大量的編程工作,絕大部分的配置工作都可以通過圖形化的工具來完成。而Peter對這種實現(xiàn)方式的顧慮在于,他需要花一定時間去學(xué)習(xí)和熟悉該產(chǎn)品的功能和具體用法,另外它是否能支持一些比較復(fù)雜的數(shù)據(jù)庫操作。
2) 面向?qū)ο缶幊?。通過編寫java代碼,使用JDBC接口實現(xiàn)對目標數(shù)據(jù)庫的訪問。這是Peter比較熟悉的一種實現(xiàn)方式。它的好處在于開發(fā)人員可以根據(jù)實際需求編寫任意的代碼實現(xiàn),具有很強的靈活性。而這種方式相應(yīng)的代價就在于開發(fā)人員需要進行較多的編程工作。
二種實現(xiàn)方式似乎各有利弊,到底應(yīng)該選哪個呢?這是個問題!
順利開局
經(jīng)過反復(fù)的思考之后,Peter最后決定采用面向?qū)ο缶幊踢@種實現(xiàn)方案,因為他對自己的java編程能力還是相當有信心的。于是,Peter很快設(shè)計出了下面的系統(tǒng)架構(gòu)。
圖3:實現(xiàn)方案
在接下來的幾天里,Peter埋頭苦干,很快便完成了程序的主體框架和主要功能的實現(xiàn)。單元測試進行的也很順利,實現(xiàn)的功能基本都已經(jīng)達到了預(yù)定的目標。在Peter看來,項目的進展頗為順利,他只要再對子模塊的實現(xiàn)做一些后續(xù)的完善工作,并完成整個項目的集成測試,就可以大功告成了。Peter不禁有些得意,甚至已經(jīng)開始盤算著完成這個項目后去海邊好好的度個假了,殊不知,他正在慢慢的陷入一個看不見的沼澤之中。
逐漸陷入沼澤
需求變化
這天早晨,Peter一到公司便被項目經(jīng)理叫到了辦公室。原來,項目的需求有點變化,Peter負責的那個子模塊的功能需要增加,不僅要實現(xiàn)對應(yīng)用系統(tǒng)A的若干數(shù)據(jù)庫表的數(shù)據(jù)寫入,還要能夠完成相應(yīng)的修改和刪除操作。在Peter看來,增加這些功能簡直是小菜一碟,自己以前的實現(xiàn)代碼很多地方很重用,只需稍微修改一下便可搞定。于是,他花了一個下午,在原來的代碼基礎(chǔ)上增加了幾個方法便搞定了。
在接下來的幾天里,Peter所負責的子模塊不斷地有新的功能需求加入進來,隨著功能不斷增多,其實現(xiàn)的代碼量自然也是不斷地膨脹,已經(jīng)由最初的200行左右增加到了5000行左右。
隨著代碼的日益臃腫,一些代碼的bug開始逐漸出現(xiàn)了,并且有逐漸增長的趨勢。這讓Peter開始感到有些隱隱的不安。
漸入困境
第天一大早,項目的測試人員便跑過來找Peter。原來,客戶對系統(tǒng)的整體性能做了一個初步的測試,而測試結(jié)果非常不令人滿意。測試人員經(jīng)過仔細分析后發(fā)現(xiàn),Peter負責的那個子模塊是整個系統(tǒng)性能低下的罪魁禍首。這天Peter工作到半夜,終于找到了其中的原因。原來,他在每次數(shù)據(jù)庫操作之前都要創(chuàng)建數(shù)據(jù)庫連接,操作過后再關(guān)閉該連接,頻繁的數(shù)據(jù)庫連接新建和關(guān)閉操作造成了系統(tǒng)性能的大幅下降。Peter決定把數(shù)據(jù)庫連接的管理功能抽取出來,采用連接池機制,這樣可以實現(xiàn)數(shù)據(jù)庫連接的共享,避免頻繁的新建和關(guān)閉操作,從而解決系統(tǒng)的性能問題。在Peter對代碼做了一番修改之后,性能問題是解決了,可是測試人員很快發(fā)現(xiàn)原來的一些正常功能受到了破壞。
事情似乎進入了一個惡性循環(huán),解決一個現(xiàn)有的問題時稍不小心就會引起更多新的問題。
致命打擊
就在Peter已經(jīng)忙得焦頭爛額時,一個噩耗傳來:項目需求又有變化,應(yīng)用系統(tǒng)A的數(shù)據(jù)表結(jié)構(gòu)要進行調(diào)整,而且需要增加對另外幾個數(shù)據(jù)表的訪問。這意味著Peter原來的實現(xiàn)代碼大部分需要重寫。這讓Peter幾乎絕望,項目目前已經(jīng)接近尾聲,他很清楚現(xiàn)在做這樣大規(guī)模的代碼改動不僅時間上不允許,而且風險很大。
Peter瀕臨崩潰,整個項目也將面臨失敗的危險。
使用WebSphere Adapter擺脫困境
就在Peter感到束手無策之時,忽然想起了WebSphere Adapter這種實現(xiàn)方案。當初他曾經(jīng)在兩種實現(xiàn)方案間思量過很久,并最終選擇了面向?qū)ο缶幊痰膶崿F(xiàn)方案?,F(xiàn)在看來,使用WebShere Adapter或許是一種更恰當?shù)倪x擇。
于是,Peter去WebSphere Adapter的信息中心,對其功能做了一番仔細研究。他發(fā)現(xiàn)其中有一款WebSphere JDBC Adapter可以專門用來實現(xiàn)對各類數(shù)據(jù)庫的訪問,它的底層通過JDBC編程接口實現(xiàn)和數(shù)據(jù)庫的通信,可以支持包括DB2在內(nèi)的各種主流數(shù)據(jù)庫平臺
圖4:WebSphere JDBC Adapter
Peter發(fā)現(xiàn),用戶可以通過WebSphere JDBC Adapter輕松地實現(xiàn)對目標數(shù)據(jù)庫中各類數(shù)據(jù)表、視圖、別名和存儲過程的訪問,而且它還支持用戶自定義的SQL語句的執(zhí)行。另外,它還提供了連接管理、事務(wù)支持、事件唯一性保證等各種功能來滿足用戶的不同需求。這些功能正是Peter在項目中所需要的。
圖5:WebSphere JDBC Adapter功能
另外,WebSphere Adapter的使用也是相當?shù)谋憬?,所有的配置操作都可以在IBM的集成開發(fā)環(huán)境WebSphere Integration Developer中完成,幾乎不需要任何額外的編程工作。下面就是WebSphere JDBC Adapter的一個服務(wù)配置向?qū)Ы缑妫?/p>
圖6:WebSphere Adapter服務(wù)配置向?qū)?/p>
這些發(fā)現(xiàn)讓Peter有些欣喜若狂,于是,他很快對原來的實現(xiàn)方案進行了調(diào)整,用WebSphere JDBC Adapter取代了面向?qū)ο缶幊痰姆绞絹韺崿F(xiàn)對應(yīng)用系統(tǒng)A的訪問。新的實現(xiàn)方案如下所示:
圖7:新的實現(xiàn)方案
新的實現(xiàn)方案進展的相當順利,Peter用了不到兩天時間便完成了所有的開發(fā)工作,測試的結(jié)果也非常令人滿意。
故事后的思考
我們的故事有了一個圓滿的結(jié)局,而里面的一些問題卻值得我們進一步的思考:在實施SOA業(yè)務(wù)整合解決方案時,究竟應(yīng)該選用什么樣的實現(xiàn)方案來實現(xiàn)各異構(gòu)系統(tǒng)間的連接?
我們不妨對故事中提到的兩種實現(xiàn)方案(使用WebSphere Adapter和面向?qū)ο缶幊蹋┳鲆粋€簡單的比較:
表1:兩種實現(xiàn)方案的比較
通過上面的比較,我們可以很容易的看到:
對于一些功能比較簡單、不需要考慮系統(tǒng)將來的可擴展性的項目,面向?qū)ο缶幊毯褪褂肳ebSphere Adapter兩種方案都是適用的。當然,面向?qū)ο缶幊踢@種方案要求開發(fā)人員必須熟悉目標應(yīng)用系統(tǒng)的編程接口,而使用WebSphere Adapter這種實現(xiàn)方案則沒有這種限制。
另外,對于一些功能比較復(fù)雜、項目需求可能會不斷變化、需要考慮系統(tǒng)將來的可擴展性的項目,使用WebSphere Adapter這種實現(xiàn)方案無疑是一種比較明智的選擇。
【編輯推薦】
- TechTarget調(diào)查表明SOA勢頭正勁
- 化解云計算與SOA沖突的三把利器
- IBM加大對SOA、SaaS、云計算、Web2.0投入
- 詳解為SOA而生的應(yīng)用服務(wù)建模
- 中小企業(yè)如何進行敏捷SOA治理?
標題名稱:使用WebSphere Adapter走出面向?qū)ο缶幊陶訚?
本文網(wǎng)址:http://m.fisionsoft.com.cn/article/cojoide.html


咨詢
建站咨詢
