羅尹奇 許毅



摘要:[目的/意義]為解決圖書館遺留的信息系統(tǒng)無(wú)法適應(yīng)新業(yè)務(wù)需要的問題,[方法/過程]該文提出采用SOA架構(gòu)實(shí)現(xiàn)對(duì)既有系統(tǒng)進(jìn)行升級(jí)改造,從而演化出新的服務(wù)。圖書館遺留的信息系統(tǒng)具有技術(shù)過時(shí)、二次開發(fā)困難、替換周期長(zhǎng)等特點(diǎn),導(dǎo)致其無(wú)法在短時(shí)間內(nèi)得到有效替代,更無(wú)法融合到圖書館新的業(yè)務(wù)中去,進(jìn)而形成了“孤島系統(tǒng)”。[結(jié)果/結(jié)論]該文通過SOA架構(gòu)對(duì)既有系統(tǒng)進(jìn)行再次封裝改造,并以系統(tǒng)接口的形式為新業(yè)務(wù)系統(tǒng)提供服務(wù),從而實(shí)現(xiàn)既有系統(tǒng)與新系統(tǒng)的整合。
關(guān)鍵詞:SOA;Web Service;既有系統(tǒng);服務(wù)升級(jí)
中圖分類號(hào):G251 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)24-0011-04
Abstract: [Purpose/significance]In order to solve the problem that the legacy information system of a library can not meet the needs of new business, [Method/process]this paper proposes to use SOA to upgrade the existing system, to evolve new services. The legacy information system of a library has the characteristics of outdated technology, difficult secondary development and long replacement cycle, which makes it unable to be effectively replaced in a short period, and can not be integrated into the new business of the library, thus forming the "island system". [Result/conclusion]This paper proposes to use SOA architecture to encapsulate the existing system and provide services for the new business system in the form of system interface, to realize the integration of the existing system and the new system.
Key words: SOA; Web Service; the existing system; service upgradation
1背景
隨著圖書館信息化建設(shè)的持續(xù)推進(jìn)以及技術(shù)的不斷迭代升級(jí),新型信息化系統(tǒng)逐步在圖書館各業(yè)務(wù)領(lǐng)域得到應(yīng)用。然而圖書館的業(yè)務(wù)具有流程復(fù)雜、功能龐大、覆蓋面廣、關(guān)聯(lián)交錯(cuò)等特點(diǎn),導(dǎo)致新型信息化系統(tǒng)無(wú)法一次性對(duì)既有系統(tǒng)進(jìn)行徹底地改造升級(jí)。這就使得圖書館建設(shè)面臨兩大難題:
1)業(yè)務(wù)設(shè)計(jì)困難。在頂層業(yè)務(wù)領(lǐng)域,新系統(tǒng)與既有系統(tǒng)長(zhǎng)期共存。既有系統(tǒng)一方面不能很好地適應(yīng)新業(yè)務(wù)需求,另一方面又處于暫時(shí)無(wú)法替代的核心地位。這就造成了圖書館在業(yè)務(wù)設(shè)計(jì)上既要滿足新需求,又必須同時(shí)兼顧既有系統(tǒng)的矛盾。
2)技術(shù)實(shí)施困難。在底層技術(shù)領(lǐng)域,新系統(tǒng)與既有系統(tǒng)的技術(shù)架構(gòu)不兼容。既有系統(tǒng)往往不僅技術(shù)老舊,而且多數(shù)情況下為商業(yè)閉源系統(tǒng),二次開發(fā)極為困難。這就導(dǎo)致了既有系統(tǒng)無(wú)法整合到新系統(tǒng)中去,進(jìn)而形成了“孤島系統(tǒng)”。
為了解決上述兩大難題,本文針對(duì)既有系統(tǒng)的閉源程度,提出了采用SOA架構(gòu)對(duì)既有系統(tǒng)進(jìn)行再次封裝,并以系統(tǒng)接口的形式為新業(yè)務(wù)系統(tǒng)提供服務(wù)。在具體實(shí)現(xiàn)上,本文通過不同的實(shí)施策略,將多元化異構(gòu)的既有系統(tǒng)封裝為Web Service,屏蔽各系統(tǒng)的技術(shù)差異,同時(shí)采用LDAP目錄服務(wù)進(jìn)行配置管理,從而為新系統(tǒng)提供標(biāo)準(zhǔn)化、統(tǒng)一化的訪問接口。
2體系架構(gòu)
2.1 SOA簡(jiǎn)介
SOA(Service-Oriented Architecture,面向服務(wù)體系架構(gòu))是一種分布式的軟件模型,是一種粗粒度、松耦合的服務(wù)結(jié)構(gòu)[1]。一個(gè)大型的業(yè)務(wù)系統(tǒng)往往包含眾多不同功能組件,由于業(yè)務(wù)場(chǎng)景和實(shí)際部署的需要,各組件多數(shù)情況下是異構(gòu)多元的。SOA通過定義良好的接口規(guī)范和協(xié)議,將各組件實(shí)現(xiàn)有機(jī)結(jié)合起來,從而完成復(fù)雜的功能流程。在SOA中接口是采用中立方式定義,主要體現(xiàn)在接口與寄宿的硬件平臺(tái)、操作系統(tǒng)以及編程語(yǔ)言無(wú)關(guān)。這就保證了各個(gè)異構(gòu)組件可以以一種統(tǒng)一通用的方式進(jìn)行交互。
作為SOA的一種具體實(shí)現(xiàn),Web Service是一個(gè)平臺(tái)無(wú)關(guān)的、低耦合高內(nèi)聚的、可編程的Web應(yīng)用程序[2]。Web Service使用開放的XML標(biāo)準(zhǔn)來描述、發(fā)布、訪問應(yīng)用程序,并以之為載體實(shí)現(xiàn)各個(gè)系統(tǒng)之間的數(shù)據(jù)交互。Web Service在構(gòu)建分布式應(yīng)用程序時(shí),需要一套協(xié)議規(guī)范提供支持,其中較為重要的包括:
SOA架構(gòu)從軟件模型上描述了系統(tǒng)各組件之間的交互,Web Service則提供了具體的實(shí)現(xiàn)方式。在本文中使用Web Service作為實(shí)現(xiàn)圖書館信息服務(wù)系統(tǒng)改造的技術(shù)途徑。
2.2系統(tǒng)架構(gòu)
為實(shí)現(xiàn)圖書館信息服務(wù)系統(tǒng)的改造,系統(tǒng)采用了多層軟件架構(gòu)[3]:應(yīng)用層、服務(wù)層、實(shí)現(xiàn)層以及配置層,從而達(dá)到系統(tǒng)解耦以及軟件復(fù)用的目的。其具體結(jié)構(gòu)如下:
2.2.1應(yīng)用層
面向用戶提供業(yè)務(wù)服務(wù)。圖書館的應(yīng)用往往并非單一功能,而是由眾多子功能有機(jī)組合而成,因此應(yīng)用層會(huì)根據(jù)業(yè)務(wù)流程的需要調(diào)用一個(gè)或多個(gè)服務(wù)層接口。該調(diào)用過程是在本地代碼中實(shí)現(xiàn)的,接口類型為本地接口而非Web Service,無(wú)須經(jīng)過網(wǎng)絡(luò)訪問。
2.2.2服務(wù)層
為應(yīng)用層提供基礎(chǔ)的服務(wù)支持。服務(wù)層處于中間核心地位,一方面服務(wù)層為應(yīng)用層提供本地化的接口(多數(shù)情況下為本地函數(shù)或方法),另一方面服務(wù)層調(diào)用Web Service客戶端,通過內(nèi)部網(wǎng)絡(luò)訪問各個(gè)封裝后的既有系統(tǒng)。由于既有系統(tǒng)并不能滿足當(dāng)前業(yè)務(wù)的需要,或者一個(gè)服務(wù)可能需要多個(gè)既有系統(tǒng)同時(shí)支持,因此調(diào)用的Web Service客戶端可能是一個(gè)或多個(gè)。
2.2.3實(shí)現(xiàn)層
負(fù)責(zé)實(shí)現(xiàn)執(zhí)行具體的業(yè)務(wù)。實(shí)現(xiàn)層是整個(gè)架構(gòu)的基礎(chǔ),其重要作用體現(xiàn)在對(duì)既有系統(tǒng)的再次封裝,并以Web Service接口形式在內(nèi)部網(wǎng)絡(luò)中發(fā)布。既有系統(tǒng)自身是具有相關(guān)數(shù)據(jù)和業(yè)務(wù)的,在無(wú)法用新型信息化系統(tǒng)替換的情況下,其數(shù)據(jù)和業(yè)務(wù)是相互配合且無(wú)法分割的,否則強(qiáng)制拆分會(huì)引發(fā)系統(tǒng)錯(cuò)誤甚至平臺(tái)崩潰。因此再次封裝時(shí)將既有系統(tǒng)作為黑盒處理,并根據(jù)新功能的需求附加額外的數(shù)據(jù)和業(yè)務(wù)。封裝過程具有原子性,即一個(gè)既有系統(tǒng)封裝為一個(gè)接口,避免多個(gè)系統(tǒng)封裝為一個(gè)接口,從而降低系統(tǒng)間耦合。
2.2.4配置層
負(fù)責(zé)參數(shù)配置及接口統(tǒng)一管理。由于接口封裝會(huì)涉及配置參數(shù)、發(fā)布地址以及命名空間等信息,并且封裝的系統(tǒng)數(shù)量較為龐大,因此需要配置中心對(duì)所有的接口進(jìn)行統(tǒng)一配置和管理。
2.3閉源層次分析
圖書館既有系統(tǒng)的一個(gè)重要特點(diǎn)是在多數(shù)情況下,系統(tǒng)為商業(yè)閉源軟件。閉源層次主要體現(xiàn)在數(shù)據(jù)閉源和業(yè)務(wù)閉源兩個(gè)層次上,其關(guān)系如下:
其中第二、三、四類閉源層次中,數(shù)據(jù)與業(yè)務(wù)至少有一項(xiàng)為開源,數(shù)據(jù)可以直接訪問或業(yè)務(wù)代碼可直接調(diào)用,因此在此類既有系統(tǒng)上演化出新的服務(wù)較為容易。而第一類閉源層次是數(shù)據(jù)與業(yè)務(wù)同時(shí)閉源,數(shù)據(jù)與業(yè)務(wù)代碼均無(wú)法獲取,導(dǎo)致既有系統(tǒng)難以通過二次開發(fā)的方式實(shí)現(xiàn)升級(jí),這也是當(dāng)前圖書館信息化建設(shè)中遇到的普遍問題。
從圖書館建設(shè)的角度來看,業(yè)務(wù)是隨著需求的變化而不斷演進(jìn)的,即新業(yè)務(wù)不斷出現(xiàn)而舊業(yè)務(wù)不斷被淘汰,業(yè)務(wù)本身不具備持久性;而數(shù)據(jù)則是整個(gè)建設(shè)過程的核心,所有系統(tǒng)均是圍繞圖書館核心數(shù)據(jù)展開,即業(yè)務(wù)會(huì)變化但訪問的數(shù)據(jù)可能沒有本質(zhì)改變。故針對(duì)不同閉源層次的既有系統(tǒng),其封裝過程的核心思想是:盡量保持?jǐn)?shù)據(jù)的連續(xù)性,盡量復(fù)用業(yè)務(wù)過程。
3服務(wù)改造
根據(jù)既有系統(tǒng)的閉源程度,本文采用Web Service作為SOA架構(gòu)的實(shí)現(xiàn)方式,從頂層設(shè)計(jì)的角度描述不同閉源情況下的服務(wù)改造方法,以及各方法的優(yōu)缺點(diǎn)。改造過程遵循盡量保持?jǐn)?shù)據(jù)的連續(xù)性,盡量復(fù)用業(yè)務(wù)過程的封裝思想。
3.1針對(duì)第三、四類的改造
在第三、四類閉源層次中,由于處于核心資源地位的數(shù)據(jù)本身是開源的,因此在改造服務(wù)的時(shí)候可以完全圍繞數(shù)據(jù)展開。改造過程既可以直接訪問數(shù)據(jù),也可以調(diào)用部分開源業(yè)務(wù)代碼,其思路如下:
直接對(duì)數(shù)據(jù)的操作可以有效地保證系統(tǒng)的高性能,新業(yè)務(wù)與既有系統(tǒng)無(wú)耦合,兩者相對(duì)獨(dú)立,可以更好與當(dāng)前圖書館需求契合。同時(shí)部分開源業(yè)務(wù)代碼可以應(yīng)用到新業(yè)務(wù)代碼中,提高了復(fù)用率。
缺點(diǎn)則是一方面開發(fā)周期較長(zhǎng),要實(shí)現(xiàn)新業(yè)務(wù)完全替代既有系統(tǒng)的過程是較為耗時(shí)的;另一方面盡管數(shù)據(jù)開源,數(shù)據(jù)本身存在關(guān)聯(lián)和約束,直接對(duì)數(shù)據(jù)操作可能會(huì)引發(fā)系統(tǒng)異常,即新業(yè)務(wù)未經(jīng)過實(shí)踐檢驗(yàn),可能存在潛在的問題,遠(yuǎn)不及既有系統(tǒng)穩(wěn)定健壯。
3.2針對(duì)第二類的改造
在第二類閉源層次中,處于核心資源地位的數(shù)據(jù)是閉源的,這就導(dǎo)致了數(shù)據(jù)內(nèi)部關(guān)系無(wú)法探知,特別是數(shù)據(jù)的存儲(chǔ)過程、觸發(fā)器、主鍵、外鍵等,即數(shù)據(jù)間的關(guān)聯(lián)和約束無(wú)法獲取,即使對(duì)開源業(yè)務(wù)代碼分析也無(wú)法保證數(shù)據(jù)完整性。
然而業(yè)務(wù)開源保證了數(shù)據(jù)訪問過程是可知的,新業(yè)務(wù)可以基于該訪問過程實(shí)現(xiàn)間接訪問數(shù)據(jù)。同時(shí)數(shù)據(jù)讀取接口開源又能在一定程度上實(shí)現(xiàn)將部分閉源數(shù)據(jù)導(dǎo)出,從而構(gòu)建出閉源數(shù)據(jù)的一個(gè)子集,盡可能降低數(shù)據(jù)閉源帶來的限制。其思路如下:
通過開源業(yè)務(wù)的數(shù)據(jù)存取接口,閉源數(shù)據(jù)對(duì)于新業(yè)務(wù)是透明的,屏蔽了數(shù)據(jù)存儲(chǔ)的具體細(xì)節(jié)。新業(yè)務(wù)調(diào)用接口能夠保證數(shù)據(jù)的一致性和完整性,不易出現(xiàn)系統(tǒng)數(shù)據(jù)異常。同時(shí)通過讀取接口能夠獲取部分閉源數(shù)據(jù),并將其提供給新業(yè)務(wù),降低了數(shù)據(jù)訪問限制。
缺點(diǎn)則是新業(yè)務(wù)與既有系統(tǒng)存在一定的耦合,數(shù)據(jù)上的限制導(dǎo)致了無(wú)法演化出更為復(fù)雜的業(yè)務(wù)。由于調(diào)用了既有系統(tǒng)的數(shù)據(jù)訪問接口,新業(yè)務(wù)從編程語(yǔ)言、部署平臺(tái)和通信協(xié)議等均受到一定的約束。
3.3針對(duì)第一類的改造
在第一類閉源層次中,數(shù)據(jù)與業(yè)務(wù)均閉源,這是當(dāng)前圖書館面臨的最為普遍的問題,即整個(gè)系統(tǒng)為典型的黑盒,數(shù)據(jù)本身無(wú)法訪問,既有的業(yè)務(wù)也難以對(duì)其做二次開發(fā)。
從用戶角度來看,盡管既有系統(tǒng)無(wú)法探知其具體的數(shù)據(jù)和業(yè)務(wù),但可以通過代理模擬用戶訪問系統(tǒng)的方式實(shí)現(xiàn)自動(dòng)化控制既有系統(tǒng),并最終將用戶代理以服務(wù)接口的形式提供出來。以該方式實(shí)現(xiàn)改造,可以將既有系統(tǒng)以整體的形式提供服務(wù),服務(wù)接口的功能為既有系統(tǒng)的一個(gè)子功能或多個(gè)子功能的組合。其思路如下:
通過模擬用戶操作既有系統(tǒng)的方式,原本需要用戶介入的既有系統(tǒng)可以實(shí)現(xiàn)自動(dòng)化的控制。模擬軟件本身的開發(fā)與既有系統(tǒng)無(wú)關(guān),僅與系統(tǒng)運(yùn)行平臺(tái)有關(guān),而平臺(tái)豐富的API(如屏幕事件、鼠標(biāo)事件、鍵盤事件等)則為模擬軟件的實(shí)現(xiàn)提供了支持。同時(shí)既有系統(tǒng)以整體的方式提供服務(wù),極大縮短了研發(fā)周期,降低了成本,并且充分應(yīng)用了既有系統(tǒng)的穩(wěn)定性和健壯性。
缺點(diǎn)包括三個(gè)方面:一是用戶代理的本質(zhì)是利用代理程序來控制既有系統(tǒng),其性能遠(yuǎn)低于代碼級(jí)訪問,系統(tǒng)延時(shí)明顯,無(wú)法應(yīng)用到高實(shí)時(shí)場(chǎng)景;二是由于是從整體上對(duì)既有系統(tǒng)的封裝,服務(wù)接口受到既有系統(tǒng)的限制,僅能做功能上的組合,難以演化出新的功能;三是用戶代理僅實(shí)現(xiàn)模擬用戶行為,對(duì)于既有系統(tǒng)的行為難以控制,因此會(huì)出現(xiàn)操作失敗或系統(tǒng)無(wú)響應(yīng)的問題。
4實(shí)例分析
本文以電子科技大學(xué)圖書館閘機(jī)系統(tǒng)為例,具體分析基于SOA架構(gòu)的服務(wù)改造。電子科技大學(xué)圖書館閘機(jī)系統(tǒng)屬于典型的第一類閉源層次,即系統(tǒng)業(yè)務(wù)代碼和數(shù)據(jù)同時(shí)閉源。
閘機(jī)白名單需要通過控制臺(tái)軟件自動(dòng)下發(fā)(每1小時(shí)同步一次)或采用手動(dòng)下發(fā)(點(diǎn)擊確認(rèn)按鈕后即時(shí)同步)到六個(gè)閘機(jī)上(三個(gè)入口閘機(jī)和三個(gè)出口閘機(jī))。閘機(jī)白名單數(shù)據(jù)庫(kù)不接受遠(yuǎn)程訪問,僅允許本機(jī)同步軟件實(shí)施更新;而同步軟件則通過TCP/IP協(xié)議與控制臺(tái)軟件連接,接受控制臺(tái)的下發(fā)指令和白名單數(shù)據(jù)。下發(fā)過程傳遞的數(shù)據(jù)包編碼協(xié)議、加密協(xié)議、校驗(yàn)協(xié)議等均閉源。具體架構(gòu)如下。
在“新型冠狀肺炎病毒”疫情的影響下,圖書館需要實(shí)施預(yù)約管理,即進(jìn)出入圖書館的師生必須通過預(yù)約系統(tǒng)預(yù)約成功后,才能刷卡進(jìn)入或離開。原有的閘機(jī)系統(tǒng)采用1小時(shí)自動(dòng)同步一次白名單的機(jī)制已完全無(wú)法適應(yīng)當(dāng)前精細(xì)化管理的需求。
為了達(dá)到即時(shí)預(yù)約、即時(shí)進(jìn)出的管理效果,現(xiàn)有的閘機(jī)系統(tǒng)需要進(jìn)行改造,并整合到預(yù)約系統(tǒng)中。根據(jù)第一類閉源層次的改造思路,通過構(gòu)造用戶代理來模擬手動(dòng)發(fā)下過程,即此時(shí)將管理員點(diǎn)擊確認(rèn)按鈕的人工操作轉(zhuǎn)化為自動(dòng)控制。用戶代理的點(diǎn)擊動(dòng)作通過Web Service接口形式發(fā)布到內(nèi)部網(wǎng)絡(luò)中,并配置IP準(zhǔn)入規(guī)則,從而保證僅能由預(yù)約系統(tǒng)訪問。改造后的架構(gòu)如下:
用戶代理的實(shí)現(xiàn)完全模擬了管理員人工操作的過程:屏幕抓取后判斷確認(rèn)按鈕所在的位置,計(jì)算出按鈕中心的屏幕坐標(biāo)(X,Y);通過平臺(tái)API獲取鼠標(biāo)對(duì)象并移動(dòng)到按鈕中心的屏幕坐標(biāo)處;觸發(fā)鼠標(biāo)點(diǎn)擊事件,實(shí)現(xiàn)點(diǎn)擊確認(rèn)按鈕。在成功點(diǎn)擊后,控制臺(tái)程序便執(zhí)行后續(xù)的下發(fā)操作實(shí)現(xiàn)閘機(jī)同步。
經(jīng)過改造之后圖書館閘機(jī)系統(tǒng)可以受預(yù)約系統(tǒng)的控制,無(wú)須人工操作即可實(shí)現(xiàn)即時(shí)下發(fā),也即預(yù)約系統(tǒng)可以根據(jù)當(dāng)前預(yù)約人員的變化,動(dòng)態(tài)的、即時(shí)的、響應(yīng)式的控制閘機(jī)出入白名單。由于下發(fā)過程本質(zhì)上還是需通過控制臺(tái)實(shí)現(xiàn),并且六個(gè)閘機(jī)是逐一更新的,因此白名單生效存在一定的延時(shí)。為了防止預(yù)約系統(tǒng)過于頻繁調(diào)用下發(fā)接口導(dǎo)致白名單無(wú)法徹底更新,Web Service接口同時(shí)提供了狀態(tài)查詢功能。該狀態(tài)用于描述點(diǎn)擊狀態(tài),從而實(shí)現(xiàn)控制兩次相鄰點(diǎn)擊事件的時(shí)間間隔。在預(yù)約系統(tǒng)需要更新數(shù)據(jù)前對(duì)接口狀態(tài)進(jìn)行查詢,只有狀態(tài)可用時(shí)才調(diào)用下發(fā)接口。
5結(jié)束語(yǔ)
實(shí)例分析表明,基于SOA架構(gòu)的圖書館信息服務(wù)系統(tǒng)改造是可行的,即可采用SOA架構(gòu)對(duì)既有系統(tǒng)進(jìn)行再次封裝改造,并以系統(tǒng)接口的形式為新業(yè)務(wù)系統(tǒng)提供服務(wù),從而實(shí)現(xiàn)既有系統(tǒng)與新系統(tǒng)的整合。
然而基于SOA架構(gòu)同樣存在一定的不足,主要涉及分布式事務(wù)、數(shù)據(jù)一致性以及網(wǎng)絡(luò)延時(shí)帶來的性能問題,在后續(xù)的工作中還需進(jìn)一步深入研究分析。
參考文獻(xiàn):
[1] 劉慧力.基于SOA的應(yīng)用型高校圖書館存包柜管理系統(tǒng)設(shè)計(jì)研究[J].當(dāng)代圖書館,2020(1): 9-11, 26.
[2] 黃鯤翔.數(shù)字圖書館網(wǎng)絡(luò)信息資源整合及其技術(shù)分析[J].河南圖書館學(xué)刊,2019, 39(2): 109-111.
[3] 徐琳君,劉長(zhǎng)娥,逯連靜,等.SOA和云計(jì)算技術(shù)在圖書館服務(wù)“三農(nóng)”中的應(yīng)用[J].微型電腦應(yīng)用,2018, 34(2): 11-14.
【通聯(lián)編輯:謝媛媛】