陳月
(河北省電子信息技術(shù)研究院,河北石家莊050071)
當(dāng)前,計(jì)算機(jī)硬件高速發(fā)展,進(jìn)入大規(guī)模流水線生產(chǎn)階段,但相應(yīng)的軟件開發(fā)卻苦于沒有公共平臺(tái),還處于小作坊生產(chǎn)階段,成為了掣肘計(jì)算機(jī)發(fā)展的一大難題。因?yàn)闆]有統(tǒng)一平臺(tái)標(biāo)準(zhǔn),軟件開發(fā)成本日益增長(zhǎng),后期維護(hù)更加困難,開發(fā)進(jìn)度難以掌握。為緩解這一矛盾,文章嘗試用SOA(面向服務(wù))架構(gòu)對(duì)軟件開發(fā)服務(wù)平臺(tái)進(jìn)行設(shè)計(jì)。
面向服務(wù)架構(gòu)能夠?qū)ΜF(xiàn)有資源進(jìn)行重新整合,具有高抽象性與高靈活性,對(duì)開發(fā)軟件的企業(yè)或者軟件需求客戶的資源整合有著極大的優(yōu)勢(shì)。
SOA架構(gòu)為企業(yè)開發(fā)軟件提供了一個(gè)更加靈活的解決方法,使軟件規(guī)模生產(chǎn)、標(biāo)準(zhǔn)接口統(tǒng)一都的到革命性變革,其特點(diǎn)主要有:
(1)跨平臺(tái)語言的重用性。SOA架構(gòu)由一系列交互的服務(wù)組成,在開發(fā)軟件時(shí)由搜索引擎調(diào)用相應(yīng)服務(wù)即可,這樣就屏蔽了不同平臺(tái)、不同編程語言,不同操作系統(tǒng)間的差異,減少對(duì)具體細(xì)節(jié)的關(guān)注,松散軟件開發(fā)者與系統(tǒng)間的耦合關(guān)系。
(2)良好的維護(hù)伸縮性。開發(fā)企業(yè)可以通過調(diào)整服務(wù)內(nèi)部程序語言以調(diào)整服務(wù)的功能,也可以調(diào)整服務(wù)間的結(jié)構(gòu),先后順序,來實(shí)現(xiàn)新的功能,在軟件出現(xiàn)問題時(shí)可以針對(duì)具體服務(wù)模塊調(diào)整內(nèi)部程序,具有良好的可維護(hù)性。
(3)層次效率更加高效。SOA架構(gòu)將開發(fā)軟件企業(yè)技術(shù)人員分為幾個(gè)層次,結(jié)構(gòu)開發(fā)人員只注重將不同服務(wù)進(jìn)行各種組合以實(shí)現(xiàn)各種功能,服務(wù)開發(fā)人員只注重開發(fā)滿足特定功能的程序開發(fā)。而且服務(wù)開發(fā)工作重復(fù)率是很低的。
SOA架構(gòu)不需要重新開發(fā)各服務(wù),對(duì)不同功能的系統(tǒng)只需調(diào)整不同的服務(wù),開發(fā)一種新的結(jié)構(gòu)即可,相對(duì)于以前開發(fā)一個(gè)系統(tǒng)節(jié)省了人力物力財(cái)力,更重的是節(jié)省了時(shí)間。
(1)服務(wù)架構(gòu)商品化。面型服務(wù)架構(gòu)軟件開發(fā)平臺(tái)不僅服務(wù)可以封裝,其實(shí)現(xiàn)某種功能的結(jié)構(gòu)也可構(gòu)成一個(gè)組件,形成基礎(chǔ)架構(gòu),這樣的組件,架構(gòu)集合可以作為一種商品化元素來加以考慮。
(2)速度快,成本低。SOA架構(gòu)的核心資產(chǎn)就是服務(wù)構(gòu)成的服務(wù)庫(kù),每面對(duì)一項(xiàng)新任務(wù),新功能,開發(fā)者只需對(duì)現(xiàn)有結(jié)構(gòu)進(jìn)行創(chuàng)造性重用即可,從而大大縮短了軟件的開發(fā)時(shí)間與成本。加快軟件開發(fā)與上市速度。
區(qū)別于傳統(tǒng)的企業(yè)架構(gòu),SOA架構(gòu)中出現(xiàn)了一個(gè)新的構(gòu)成—服務(wù)層,服務(wù)層有各種功能的服務(wù)組成。平臺(tái)由三部分組成,自上而下分別是應(yīng)用系統(tǒng),服務(wù)引擎單元,異構(gòu)數(shù)據(jù)連接中間件。其共性模塊就是服務(wù)層,服務(wù)層實(shí)現(xiàn)相同的功能,可以在不同的平臺(tái)數(shù)據(jù)庫(kù)使用,但實(shí)現(xiàn)的功能都是一樣的。
服務(wù)層是SOA架構(gòu)的共性模塊,可以處理跨語言、跨平臺(tái)、跨操作系統(tǒng)的業(yè)務(wù)邏輯,服務(wù)引擎主要作用是對(duì)服務(wù)進(jìn)行協(xié)調(diào)與管理。在搭建開發(fā)平臺(tái)時(shí),要遵守J2EE的相關(guān)技術(shù)和基于XML的Web服務(wù)標(biāo)準(zhǔn)。
(1)服務(wù)的種類和特征
服務(wù)的種類從SOA架構(gòu)平臺(tái)設(shè)計(jì)思想與用戶需求方面考慮,可以根據(jù)粒度分為兩級(jí):
1)應(yīng)用服務(wù):指的是為完成功能實(shí)現(xiàn)調(diào)用的各個(gè)服務(wù)總稱,應(yīng)用服務(wù)專業(yè)性比較強(qiáng),更能夠吸引開發(fā)者,給客戶帶來樂趣。
2)基礎(chǔ)服務(wù):指的是在各個(gè)平臺(tái),網(wǎng)際間可以來回調(diào)用,利用率比較高,具有良好的兼容性,松耦合性。具有透明的搜索和查詢功能。
(2)服務(wù)引擎的功能
1)管理服務(wù):服務(wù)的管理中最重要的就是服務(wù)的接口定義與接口行為定義,只有標(biāo)準(zhǔn)化的接口定義才會(huì)有正??缙脚_(tái)調(diào)用的服務(wù)模塊,服務(wù)包括行為約束,質(zhì)量描述,功能等一并封裝在XML文件里。
2)準(zhǔn)確定位功能的位置,管理功能模塊,控制服務(wù)尋址。URL尋址和DNS基礎(chǔ)架構(gòu)可以提供這部分功能。
3)服務(wù)的調(diào)用派送:ServiceDispatcher.java類接口可以再平臺(tái)中實(shí)現(xiàn),開發(fā)者可以在引擎搜索服務(wù)后,根據(jù)服務(wù)的功能與描述信息來決定是否調(diào)用。
(3)服務(wù)引擎的設(shè)計(jì)與實(shí)現(xiàn)
根據(jù)引擎的功能需求,服務(wù)的派送引擎由SevriceDispatcher實(shí)現(xiàn),服務(wù)的重用由DispatchContext實(shí)現(xiàn),服務(wù)的定義由Set-viceDef?inition實(shí)現(xiàn),服務(wù)的調(diào)用由Sen,iceEngine與JobSched-uler共同實(shí)現(xiàn)。
實(shí)體引擎:完成服務(wù)的定義、維護(hù)、通用操作的開發(fā)工作,對(duì)現(xiàn)實(shí)中的功能描述進(jìn)行建模。
消息引擎:該引擎屬于異步集成,主要把J2EE應(yīng)用程序與非J2EE環(huán)境集成在一起,屬于松散耦合特點(diǎn),建立在標(biāo)準(zhǔn)API的基礎(chǔ)之上。
規(guī)則引擎:將服務(wù)的調(diào)用,重用規(guī)則編輯成冊(cè),封裝在規(guī)則中,根據(jù)規(guī)則進(jìn)行決策。
工作流引擎:工作流就是軟件開發(fā)過程中的計(jì)算機(jī)實(shí)現(xiàn)過程,主要有功能過程名稱的定義、功能的執(zhí)行,接口實(shí)現(xiàn),過程監(jiān)控管理與日志記錄等功能。
異構(gòu)數(shù)據(jù)庫(kù)連接中間件:為方便不同數(shù)據(jù)庫(kù)間的訪問讀取數(shù)據(jù),設(shè)計(jì)中間件利用數(shù)據(jù)類型知識(shí)庫(kù)提供接口,完成不同數(shù)據(jù)庫(kù)的統(tǒng)一操作。
相關(guān)功能服務(wù):其他與軟件功能有關(guān),但不是自開發(fā)的服務(wù)組件和中間件也可以納入系統(tǒng)架構(gòu)中來。
基于SOA架構(gòu)的開發(fā)公共軟件平臺(tái)可以為企業(yè)開發(fā)軟件提供基礎(chǔ)服務(wù),其作為一種全新體系架構(gòu),具有標(biāo)準(zhǔn)接口與松耦合特點(diǎn),有著重要的理論價(jià)值,隨著平臺(tái)不斷完善,在不久必將會(huì)成規(guī)模發(fā)展開來,實(shí)現(xiàn)更大價(jià)值。
[1]互聯(lián)網(wǎng)標(biāo)準(zhǔn)開放實(shí)驗(yàn).SOA標(biāo)準(zhǔn)體系[R].北京:中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究所,2008
[2]中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究所.SOA用戶指南[M].北京:電子工業(yè)出版社,2008:6-7
[3]毛新生.SOA:原理*方法*實(shí)踐.北京:電子工業(yè)出版社,2007:56-62
[4]蔣哲遠(yuǎn),韓江洪,王釗.面向Web服務(wù)的ERP協(xié)同集成框架研究[J].計(jì)算機(jī)工程與應(yīng)用,2005,41(16):24-28
[5]Andy Zeneski,jaz@ofbiz.org.The Open For Business Project Service Engine Guide[EB/OL].http://incubator.Apache.org/ofbiz/docs/services.html,2007