自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用WebSphere Adapter走出面向?qū)ο缶幊陶訚?/h1>

開發(fā) 開發(fā)工具
本文將通過一個(gè)根據(jù)實(shí)際項(xiàng)目經(jīng)驗(yàn)提煉出來的小故事,來探討在SOA業(yè)務(wù)整合項(xiàng)目中如何根據(jù)實(shí)際需求選取合適的產(chǎn)品技術(shù),實(shí)現(xiàn)WebSphere平臺與其他應(yīng)用程序的連接和集成。文章對使用WebSphere Adapter產(chǎn)品和采用面向?qū)ο缶幊踢@兩種實(shí)現(xiàn)方式的優(yōu)劣和適用范圍做了相應(yīng)的分析和比較。

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

SOA業(yè)務(wù)整合能夠讓企業(yè)充分利用其在開發(fā)人員、IT硬件、數(shù)據(jù)庫和應(yīng)用程序方面的現(xiàn)有投資,通過對現(xiàn)有資源的重組整合從而提高生產(chǎn)率,實(shí)現(xiàn)業(yè)務(wù)靈活性與創(chuàng)新。連接性是實(shí)現(xiàn)SOA業(yè)務(wù)整合的重要前提,只有首先完成對現(xiàn)有應(yīng)用系統(tǒng)的連接互通,才能進(jìn)一步考慮業(yè)務(wù)流程的整合和優(yōu)化。IBM在SOA的連接性實(shí)現(xiàn)方面提供了若干產(chǎn)品的支持,其中就包括WebSphere Adapter。

IBM WebSphere Adapter是IBM提供的SOA業(yè)務(wù)整合解決方案中用來實(shí)現(xiàn)連接性的一款非常重要的產(chǎn)品,它遵循J2EE Connector Architecture(簡稱JCA)1.5規(guī)范,為開發(fā)人員提供了一系列連接各種異構(gòu)企業(yè)信息系統(tǒng)(Enterprise Information System,EIS)及數(shù)據(jù)源的適配器套件,從而使開發(fā)人員可以輕松地實(shí)現(xiàn)WebSphere產(chǎn)品與以其它企業(yè)應(yīng)用程序及數(shù)據(jù)源的連接和集成。

WebSphere Adapter

圖1:WebSphere Adapter

開啟探索之旅

開始我們故事的之前,不妨先介紹一下故事的主人公——Peter,他是一家軟件公司的開發(fā)人員,是個(gè)java編程的高手,曾經(jīng)參與過多個(gè)重大項(xiàng)目的開發(fā)工作,有著豐富的項(xiàng)目開發(fā)經(jīng)驗(yàn)。

最近,Peter收到公司的通知去參加一個(gè)重要的客戶項(xiàng)目的實(shí)施。這是一個(gè)SOA業(yè)務(wù)整合的項(xiàng)目,客戶希望通過采用IBM的基于SOA的業(yè)務(wù)整合解決方案,對現(xiàn)有的若干應(yīng)用系統(tǒng)進(jìn)行集成,并完成對業(yè)務(wù)流程的整合和優(yōu)化。系統(tǒng)的整體架構(gòu)如下所示:

系統(tǒng)架構(gòu)

圖2:系統(tǒng)架構(gòu)

這是一個(gè)比較典型的應(yīng)用系統(tǒng)集成的解決方案。其中,Peter將負(fù)責(zé)實(shí)現(xiàn)WebSphere平臺和應(yīng)用系統(tǒng)A間的連接和通信。

使用WebSphere Adapter還是采用面向?qū)ο缶幊??是個(gè)問題!

Peter加入項(xiàng)目組后,便首先對項(xiàng)目的整體情況和自己負(fù)責(zé)的子模塊做了一些研究。他發(fā)現(xiàn)應(yīng)用系統(tǒng)A底層采用了DB2數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,因?yàn)楫?dāng)時(shí)設(shè)計(jì)時(shí)沒有考慮到將來的可擴(kuò)展性,所以系統(tǒng)并沒有提供很好的編程接口供外部程序訪問。

經(jīng)過仔細(xì)的分析過后,Peter發(fā)現(xiàn)實(shí)現(xiàn)WebSphere平臺對應(yīng)用系統(tǒng)A的數(shù)據(jù)庫的訪問有兩種實(shí)現(xiàn)方案可供選擇:

1) 使用WebSphere Adapter產(chǎn)品。像我們前面介紹的那樣,WebSphere Adapter可以實(shí)現(xiàn)WebSphere平臺與其它各種應(yīng)用系統(tǒng)和數(shù)據(jù)源(包括數(shù)據(jù)庫)的快速集成。采用這種實(shí)現(xiàn)技術(shù)的好處是可以避免大量的編程工作,絕大部分的配置工作都可以通過圖形化的工具來完成。而Peter對這種實(shí)現(xiàn)方式的顧慮在于,他需要花一定時(shí)間去學(xué)習(xí)和熟悉該產(chǎn)品的功能和具體用法,另外它是否能支持一些比較復(fù)雜的數(shù)據(jù)庫操作。

2) 面向?qū)ο缶幊?。通過編寫java代碼,使用JDBC接口實(shí)現(xiàn)對目標(biāo)數(shù)據(jù)庫的訪問。這是Peter比較熟悉的一種實(shí)現(xiàn)方式。它的好處在于開發(fā)人員可以根據(jù)實(shí)際需求編寫任意的代碼實(shí)現(xiàn),具有很強(qiáng)的靈活性。而這種方式相應(yīng)的代價(jià)就在于開發(fā)人員需要進(jìn)行較多的編程工作。

二種實(shí)現(xiàn)方式似乎各有利弊,到底應(yīng)該選哪個(gè)呢?這是個(gè)問題!

順利開局

經(jīng)過反復(fù)的思考之后,Peter最后決定采用面向?qū)ο缶幊踢@種實(shí)現(xiàn)方案,因?yàn)樗麑ψ约旱膉ava編程能力還是相當(dāng)有信心的。于是,Peter很快設(shè)計(jì)出了下面的系統(tǒng)架構(gòu)。

實(shí)現(xiàn)方案

圖3:實(shí)現(xiàn)方案

在接下來的幾天里,Peter埋頭苦干,很快便完成了程序的主體框架和主要功能的實(shí)現(xiàn)。單元測試進(jìn)行的也很順利,實(shí)現(xiàn)的功能基本都已經(jīng)達(dá)到了預(yù)定的目標(biāo)。在Peter看來,項(xiàng)目的進(jìn)展頗為順利,他只要再對子模塊的實(shí)現(xiàn)做一些后續(xù)的完善工作,并完成整個(gè)項(xiàng)目的集成測試,就可以大功告成了。Peter不禁有些得意,甚至已經(jīng)開始盤算著完成這個(gè)項(xiàng)目后去海邊好好的度個(gè)假了,殊不知,他正在慢慢的陷入一個(gè)看不見的沼澤之中。

逐漸陷入沼澤

需求變化

這天早晨,Peter一到公司便被項(xiàng)目經(jīng)理叫到了辦公室。原來,項(xiàng)目的需求有點(diǎn)變化,Peter負(fù)責(zé)的那個(gè)子模塊的功能需要增加,不僅要實(shí)現(xiàn)對應(yīng)用系統(tǒng)A的若干數(shù)據(jù)庫表的數(shù)據(jù)寫入,還要能夠完成相應(yīng)的修改和刪除操作。在Peter看來,增加這些功能簡直是小菜一碟,自己以前的實(shí)現(xiàn)代碼很多地方很重用,只需稍微修改一下便可搞定。于是,他花了一個(gè)下午,在原來的代碼基礎(chǔ)上增加了幾個(gè)方法便搞定了。

在接下來的幾天里,Peter所負(fù)責(zé)的子模塊不斷地有新的功能需求加入進(jìn)來,隨著功能不斷增多,其實(shí)現(xiàn)的代碼量自然也是不斷地膨脹,已經(jīng)由最初的200行左右增加到了5000行左右。

隨著代碼的日益臃腫,一些代碼的bug開始逐漸出現(xiàn)了,并且有逐漸增長的趨勢。這讓Peter開始感到有些隱隱的不安。

漸入困境

第天一大早,項(xiàng)目的測試人員便跑過來找Peter。原來,客戶對系統(tǒng)的整體性能做了一個(gè)初步的測試,而測試結(jié)果非常不令人滿意。測試人員經(jīng)過仔細(xì)分析后發(fā)現(xiàn),Peter負(fù)責(zé)的那個(gè)子模塊是整個(gè)系統(tǒng)性能低下的罪魁禍?zhǔn)住_@天Peter工作到半夜,終于找到了其中的原因。原來,他在每次數(shù)據(jù)庫操作之前都要?jiǎng)?chuàng)建數(shù)據(jù)庫連接,操作過后再關(guān)閉該連接,頻繁的數(shù)據(jù)庫連接新建和關(guān)閉操作造成了系統(tǒng)性能的大幅下降。Peter決定把數(shù)據(jù)庫連接的管理功能抽取出來,采用連接池機(jī)制,這樣可以實(shí)現(xiàn)數(shù)據(jù)庫連接的共享,避免頻繁的新建和關(guān)閉操作,從而解決系統(tǒng)的性能問題。在Peter對代碼做了一番修改之后,性能問題是解決了,可是測試人員很快發(fā)現(xiàn)原來的一些正常功能受到了破壞。

事情似乎進(jìn)入了一個(gè)惡性循環(huán),解決一個(gè)現(xiàn)有的問題時(shí)稍不小心就會引起更多新的問題。

致命打擊

就在Peter已經(jīng)忙得焦頭爛額時(shí),一個(gè)噩耗傳來:項(xiàng)目需求又有變化,應(yīng)用系統(tǒng)A的數(shù)據(jù)表結(jié)構(gòu)要進(jìn)行調(diào)整,而且需要增加對另外幾個(gè)數(shù)據(jù)表的訪問。這意味著Peter原來的實(shí)現(xiàn)代碼大部分需要重寫。這讓Peter幾乎絕望,項(xiàng)目目前已經(jīng)接近尾聲,他很清楚現(xiàn)在做這樣大規(guī)模的代碼改動不僅時(shí)間上不允許,而且風(fēng)險(xiǎn)很大。

Peter瀕臨崩潰,整個(gè)項(xiàng)目也將面臨失敗的危險(xiǎn)。

使用WebSphere Adapter擺脫困境

就在Peter感到束手無策之時(shí),忽然想起了WebSphere Adapter這種實(shí)現(xiàn)方案。當(dāng)初他曾經(jīng)在兩種實(shí)現(xiàn)方案間思量過很久,并最終選擇了面向?qū)ο缶幊痰膶?shí)現(xiàn)方案。現(xiàn)在看來,使用WebShere Adapter或許是一種更恰當(dāng)?shù)倪x擇。

于是,Peter去WebSphere Adapter的信息中心,對其功能做了一番仔細(xì)研究。他發(fā)現(xiàn)其中有一款WebSphere JDBC Adapter可以專門用來實(shí)現(xiàn)對各類數(shù)據(jù)庫的訪問,它的底層通過JDBC編程接口實(shí)現(xiàn)和數(shù)據(jù)庫的通信,可以支持包括DB2在內(nèi)的各種主流數(shù)據(jù)庫平臺

WebSphere JDBC Adapter

圖4:WebSphere JDBC Adapter

Peter發(fā)現(xiàn),用戶可以通過WebSphere JDBC Adapter輕松地實(shí)現(xiàn)對目標(biāo)數(shù)據(jù)庫中各類數(shù)據(jù)表、視圖、別名和存儲過程的訪問,而且它還支持用戶自定義的SQL語句的執(zhí)行。另外,它還提供了連接管理、事務(wù)支持、事件唯一性保證等各種功能來滿足用戶的不同需求。這些功能正是Peter在項(xiàng)目中所需要的。

圖5:WebSphere JDBC Adapter功能

另外,WebSphere Adapter的使用也是相當(dāng)?shù)谋憬荩械呐渲貌僮鞫伎梢栽贗BM的集成開發(fā)環(huán)境WebSphere Integration Developer中完成,幾乎不需要任何額外的編程工作。下面就是WebSphere JDBC Adapter的一個(gè)服務(wù)配置向?qū)Ы缑妫?/P>

圖6:WebSphere Adapter服務(wù)配置向?qū)?/P>

這些發(fā)現(xiàn)讓Peter有些欣喜若狂,于是,他很快對原來的實(shí)現(xiàn)方案進(jìn)行了調(diào)整,用WebSphere JDBC Adapter取代了面向?qū)ο缶幊痰姆绞絹韺?shí)現(xiàn)對應(yīng)用系統(tǒng)A的訪問。新的實(shí)現(xiàn)方案如下所示:

新的實(shí)現(xiàn)方案

圖7:新的實(shí)現(xiàn)方案

新的實(shí)現(xiàn)方案進(jìn)展的相當(dāng)順利,Peter用了不到兩天時(shí)間便完成了所有的開發(fā)工作,測試的結(jié)果也非常令人滿意。

故事后的思考

我們的故事有了一個(gè)圓滿的結(jié)局,而里面的一些問題卻值得我們進(jìn)一步的思考:在實(shí)施SOA業(yè)務(wù)整合解決方案時(shí),究竟應(yīng)該選用什么樣的實(shí)現(xiàn)方案來實(shí)現(xiàn)各異構(gòu)系統(tǒng)間的連接?

我們不妨對故事中提到的兩種實(shí)現(xiàn)方案(使用WebSphere Adapter和面向?qū)ο缶幊蹋┳鲆粋€(gè)簡單的比較:

兩種實(shí)現(xiàn)方案的比較

表1:兩種實(shí)現(xiàn)方案的比較

通過上面的比較,我們可以很容易的看到:

對于一些功能比較簡單、不需要考慮系統(tǒng)將來的可擴(kuò)展性的項(xiàng)目,面向?qū)ο缶幊毯褪褂肳ebSphere Adapter兩種方案都是適用的。當(dāng)然,面向?qū)ο缶幊踢@種方案要求開發(fā)人員必須熟悉目標(biāo)應(yīng)用系統(tǒng)的編程接口,而使用WebSphere Adapter這種實(shí)現(xiàn)方案則沒有這種限制。

另外,對于一些功能比較復(fù)雜、項(xiàng)目需求可能會不斷變化、需要考慮系統(tǒng)將來的可擴(kuò)展性的項(xiàng)目,使用WebSphere Adapter這種實(shí)現(xiàn)方案無疑是一種比較明智的選擇。

【編輯推薦】

  1. TechTarget調(diào)查表明SOA勢頭正勁
  2. 化解云計(jì)算與SOA沖突的三把利器
  3. IBM加大對SOA、SaaS、云計(jì)算、Web2.0投入
  4. 詳解為SOA而生的應(yīng)用服務(wù)建模
  5. 中小企業(yè)如何進(jìn)行敏捷SOA治理?
責(zé)任編輯:彭凡 來源: ITPUB
相關(guān)推薦

2021-11-08 07:48:48

Go語言對象

2017-04-21 09:07:39

JavaScript對象編程

2012-01-17 09:34:52

JavaScript

2010-11-17 11:31:22

Scala基礎(chǔ)面向?qū)ο?/a>Scala

2022-07-30 23:41:53

面向過程面向?qū)ο?/a>面向協(xié)議編程

2012-12-13 11:01:42

IBMdW

2012-02-27 09:30:22

JavaScript

2010-07-20 09:33:14

Perl方法

2012-12-18 09:24:47

2010-07-13 17:18:29

Perl面向?qū)ο缶幊?/a>

2019-03-26 10:50:22

Python面向?qū)ο?/a>編程語言

2011-05-25 10:21:44

Javascript

2023-01-10 09:06:17

2023-12-11 15:32:30

面向?qū)ο缶幊?/a>OOPpython

2010-07-16 17:23:57

Perl面向?qū)ο缶幊?/a>

2011-06-28 11:06:16

Scala

2019-11-18 17:05:02

JavaScript面向?qū)ο蟪绦蚓幊?/a>Java

2013-06-07 10:55:10

2010-07-13 13:06:41

Perl面向?qū)ο?/a>

2011-05-25 10:59:26

Javascript繼承
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號