楊家微
一、重用C/S應(yīng)用主要原則
由于歷史的原因,一些信息化不夠充分的企業(yè)往往建設(shè)了不少業(yè)務(wù)系統(tǒng),這些業(yè)務(wù)系統(tǒng)基本上都是C/S應(yīng)用。在新的SOA技術(shù)架構(gòu)中重用這些業(yè)務(wù)系統(tǒng)是一個(gè)比較重大的工作,需要根據(jù)實(shí)際情況,設(shè)計(jì)出復(fù)用、集成這些原有系統(tǒng)的方法。需要滿足如下原則:
1.著重規(guī)劃。對于舊有業(yè)務(wù)系統(tǒng)的復(fù)用、集成需要有整體的規(guī)劃,是合理、有效復(fù)用、集成舊有業(yè)務(wù)系統(tǒng)的前提,也是實(shí)施SOA最為基礎(chǔ)的一步。有了規(guī)劃,才能去選擇現(xiàn)有條件下最適合的技術(shù)和工具,最后用這些技術(shù)和工具實(shí)現(xiàn)這些業(yè)務(wù)系統(tǒng)的復(fù)用。
2.從局部到整體。SOA讓企業(yè)可以搭建一個(gè)松藕合的平臺,但是SOA不可能一蹴而就,在企業(yè)內(nèi)部規(guī)劃、實(shí)施SOA是一個(gè)長期的過程。在企業(yè)內(nèi)部實(shí)施SOA時(shí)總是先從部門級開始,從最關(guān)鍵的業(yè)務(wù)開始,然后慢慢擴(kuò)充到其他業(yè)務(wù)、其他部門,到最后實(shí)現(xiàn)整個(gè)企業(yè)的SOA。設(shè)計(jì)出來的復(fù)用集成方式必須滿足這種小步快跑式的SOA實(shí)施方式。
3.有破有立。由于已經(jīng)建設(shè)的業(yè)務(wù)系統(tǒng)比較多,采用不同的技術(shù)架構(gòu)開發(fā),在實(shí)施SOA時(shí),需要考慮到復(fù)用集成時(shí)的各種情況,提供符合條件的復(fù)用集成方式。一些太落后的系統(tǒng)可以考慮推倒重來,對于那些還能繼續(xù)應(yīng)用的系統(tǒng),需要提供包裝、升級到新的技術(shù)架構(gòu)的解決方案;對于那些太過于封閉的舊有技術(shù)架構(gòu),要考慮如何用最新的集成手段來將它開放成服務(wù),加入到新的SOA體系中來。
二、重用遺留C/S應(yīng)用的幾種方式
在一個(gè)企業(yè)內(nèi)部實(shí)施SOA 并是簡單的把原來的業(yè)務(wù)系統(tǒng)全部拆掉后重建,理想的做法是在一個(gè)企業(yè)目前正在使用的應(yīng)用、系統(tǒng)和資產(chǎn)中確定可重用的、高價(jià)值的業(yè)務(wù)系統(tǒng),采用 SOA 的理念、原則、方法和技術(shù)來標(biāo)準(zhǔn)化這些任務(wù),使他們可以在企業(yè)內(nèi)部得到重用。重用已有的應(yīng)用程序和系統(tǒng)是非常明智的決策,可以減少企業(yè)在實(shí)施SOA時(shí)的資金投入,且重用現(xiàn)有業(yè)務(wù)系統(tǒng)不會對現(xiàn)有業(yè)務(wù)造成太大的沖擊,可以顯著降低企業(yè)實(shí)施SOA時(shí)的風(fēng)險(xiǎn)。
這些現(xiàn)有業(yè)務(wù)都已經(jīng)經(jīng)過了長時(shí)間的運(yùn)營,是公司擁有的最寶貴且經(jīng)過驗(yàn)證和時(shí)間考驗(yàn)的資產(chǎn),重用原有的業(yè)務(wù)系統(tǒng)還可以大幅度加速 SOA 項(xiàng)目的實(shí)施進(jìn)度。相應(yīng)的研究結(jié)果顯示:重用原有業(yè)務(wù)系統(tǒng)的開銷比從頭構(gòu)建這些業(yè)務(wù)系統(tǒng)需要的費(fèi)用少五倍。由于這些遺留系統(tǒng)已經(jīng)過了嚴(yán)格的實(shí)踐的檢驗(yàn),其維護(hù)開銷也會減少。根據(jù)實(shí)施SOA時(shí)企業(yè)內(nèi)部IT項(xiàng)目建設(shè)的階段和原有遺留系統(tǒng)的實(shí)際狀況,我們需要采取不同的策略來集成原有代碼:
1.系統(tǒng)服務(wù)化。這種方式是指直接將原有系統(tǒng)的源代碼通過SOA技術(shù)架構(gòu)發(fā)布為服務(wù),在新的體系結(jié)構(gòu)中直接復(fù)用。
2.系統(tǒng)架構(gòu)升級。這種方式是指采用新的體系架構(gòu)升級原有C/S業(yè)務(wù)系統(tǒng),或者是將該系統(tǒng)中需要新增加的功能基于新的體系架構(gòu)重建,或者在該系統(tǒng)使用壽命達(dá)到標(biāo)準(zhǔn)后重新創(chuàng)建該系統(tǒng)。
3.系統(tǒng)集成。這種方式是指通過系統(tǒng)集成的方式使用原有代碼,達(dá)到業(yè)務(wù)重用的目標(biāo),如實(shí)施SOA時(shí)直接采用采用EAI、ESB等技術(shù)集成那些遺留下來的C/S應(yīng)用。
4.遺留系統(tǒng)拆分。這種方式是指在SOA實(shí)施過程中,直接利用原有C/S應(yīng)用,達(dá)到業(yè)務(wù)系統(tǒng)重用的目標(biāo),只是需要將遺留系統(tǒng)拆分成更小的系統(tǒng),以滿足服務(wù)拆分的需要。如在實(shí)施SOA過程中直接采用業(yè)務(wù)系統(tǒng)調(diào)用的方式,直接啟動原來的C/S應(yīng)用,讓用戶使用。
5.其他方式。根據(jù)實(shí)際情況,我們可能還需要提供其他的重用方案,如直接使用那些還具備使用價(jià)值的、比較獨(dú)立的業(yè)務(wù)系統(tǒng),或者是采用以上三種方式的混合形式來達(dá)到系統(tǒng)復(fù)用集成的目標(biāo)。
三、代碼服務(wù)化
采用代碼服務(wù)化的好處是服務(wù)接口由所公開的遺留資產(chǎn)定義,不需要進(jìn)行分析來設(shè)計(jì)接口規(guī)范。由于新服務(wù)可以在與包裝的現(xiàn)有資產(chǎn)相同的平臺上運(yùn)行,沒有必要添加新基礎(chǔ)設(shè)施。能省略接口定義和分析,要處理的平臺更少,這樣部署周期就會更短,風(fēng)險(xiǎn)也更小。采用代碼服務(wù)化方法時(shí)需要重點(diǎn)考慮如下事項(xiàng):
(1)服務(wù)使用者需要與舊有系統(tǒng)的服務(wù)定義建立聯(lián)系,而舊有系統(tǒng)在很多情況下的最初設(shè)計(jì)都不是按照面向服務(wù)的方式來設(shè)計(jì)的。
(2)這種重用方式假定現(xiàn)有應(yīng)用程序平臺提供了對服務(wù)調(diào)用的最新技術(shù)的支持。
(3)這種實(shí)現(xiàn)模式會給系統(tǒng)帶來服務(wù)消息處理的壓力。
四、系統(tǒng)架構(gòu)升級
采用系統(tǒng)架構(gòu)升級的方案中,我們在現(xiàn)有應(yīng)用程序功能和服務(wù)之間引入構(gòu)件層,所有需要被服務(wù)化的原有系統(tǒng),都遵循先被構(gòu)件化,然后被服務(wù)化的過程。構(gòu)件可以提供服務(wù)和實(shí)際實(shí)現(xiàn)之間的抽象,封裝了對原有系統(tǒng)的所有操作,同時(shí)提供了更多的靈活性。使用構(gòu)件有如下好處:
(1)可以在不影響服務(wù)使用者的情況下更改現(xiàn)構(gòu)件的業(yè)務(wù)邏輯實(shí)現(xiàn)。這些構(gòu)件可以方便地進(jìn)行擴(kuò)展,以封裝數(shù)據(jù)和信息構(gòu)件,為數(shù)據(jù)或信息服務(wù)提供外觀層,對于服務(wù)使用者來說,這些服務(wù)是透明的。
(2)可以在構(gòu)件層進(jìn)行系統(tǒng)和功能的組裝和編排,構(gòu)件服務(wù)使用者的影響很小或者沒有影響。
(3)可以將服務(wù)部署在與現(xiàn)有應(yīng)用程序不同的基礎(chǔ)設(shè)施上,現(xiàn)有應(yīng)用程序的基礎(chǔ)設(shè)施通常針對服務(wù)的特定處理要求進(jìn)行了硬編碼。
這種重用模式體系結(jié)構(gòu)有自己的特點(diǎn)。
(1)它允許服務(wù)與業(yè)務(wù)保持緊密一致,但并不一定直接映射到現(xiàn)有應(yīng)用程序接口的服務(wù)接口定義。
(2)可以支持使用 SOA 的原則和最佳實(shí)踐來以正確的粒度級別設(shè)計(jì)服務(wù)和接口,與此同時(shí),這也會增加服務(wù)定義的設(shè)計(jì)工作。
(3)引入構(gòu)件層后,設(shè)計(jì)工作會比直接將應(yīng)用程序公開為服務(wù)更為復(fù)雜,可能會涉及到使用適配器或連接器技術(shù)來與應(yīng)用系統(tǒng)進(jìn)行連接。
五、系統(tǒng)集成
在采用系統(tǒng)集成方式重用原有C/S應(yīng)用時(shí),原有信息系統(tǒng)本身作為服務(wù)提供者而獨(dú)立存在。它提供的服務(wù)被整合到新的技術(shù)架構(gòu)中。系統(tǒng)集成模式的主要優(yōu)勢在于,可以不需要花很多時(shí)間為服務(wù)定義開發(fā)實(shí)現(xiàn)構(gòu)件,由服務(wù)提供者直接提供這些服務(wù)及其接口,這可以大幅度降低SOA實(shí)施時(shí)間。服務(wù)消費(fèi)者可以很容易的根據(jù)不同的業(yè)務(wù)場景在服務(wù)提供者之間進(jìn)行切換。整合集成模式體系結(jié)構(gòu)需要重點(diǎn)關(guān)注的事項(xiàng):
(1)必須恰當(dāng)?shù)囟x服務(wù)的服務(wù)級別協(xié)議,確認(rèn)被整合的應(yīng)用系統(tǒng)能夠提供滿足要求的服務(wù)。
(2)系統(tǒng)和系統(tǒng)之間通過服務(wù)調(diào)用完成交互,如果是在非局域網(wǎng)環(huán)境下,需要考慮到安全的問題,如增加防火墻等。
六、遺留系統(tǒng)拆分
在遺留的C/S應(yīng)用中,會存在一些非常獨(dú)立的系統(tǒng),他們和其他的系統(tǒng)之間不存在什么聯(lián)系,甚至也不需要交互,只是需要根據(jù)不同的人提供不同的權(quán)限或者是更小的調(diào)用域,這個(gè)時(shí)候我們就可以采用遺留系統(tǒng)拆分的方式來直接利用這些C/S應(yīng)用。遺留系統(tǒng)拆分模式的主要優(yōu)勢在于,可以不需要花很多時(shí)間為來處理服務(wù)化、接口等內(nèi)容,而只需要簡單的利用遺留的C/S應(yīng)用,將它拆分成更小的應(yīng)用即可。這可以大幅度降低SOA實(shí)施時(shí)間。遺留系統(tǒng)拆分模式體系結(jié)構(gòu)需要重點(diǎn)關(guān)注的事項(xiàng):
(1)系統(tǒng)本身應(yīng)該是非常獨(dú)立的,完成相對獨(dú)立的業(yè)務(wù),和其他系統(tǒng)之間不存在太多的交互。
(2)必須恰當(dāng)?shù)囟x拆分的標(biāo)準(zhǔn),以滿足可被重復(fù)利用的可能性。
(3)必須考慮如何調(diào)用這些遺留的技術(shù)路線。
通過靈活應(yīng)用本文中提出的代碼服務(wù)化、系統(tǒng)架構(gòu)升級、系統(tǒng)集成和遺留系統(tǒng)拆分四大方法,可以比較容易的重用這些遺留下來的C/S應(yīng)用,降低企業(yè)實(shí)施SOA的成本和風(fēng)險(xiǎn),縮短企業(yè)實(shí)施SOA的周期,讓企業(yè)能夠更快速、更安全的在企業(yè)內(nèi)部實(shí)施SOA戰(zhàn)略,進(jìn)入到主流的SOA實(shí)踐中來。