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