□沈彥君
開放閱覽室管理系統(tǒng)旨在綜合運(yùn)用現(xiàn)代信息技術(shù)以及校園網(wǎng)絡(luò)資源,建立一個開放式閱覽室數(shù)字化管理平臺;在實(shí)現(xiàn)對閱覽室的狀態(tài)、閱覽室使用情況等實(shí)時信息統(tǒng)計管理的基礎(chǔ)上,通過校園網(wǎng)絡(luò)及時、準(zhǔn)確、有效、透明地在教學(xué)樓和宿舍樓的電子顯示屏上發(fā)布各個閱覽室的使用情況;為學(xué)生提供一個更加高效利用圖書館學(xué)習(xí)資源的平臺。為此,我們采用基于指紋的身份識別技術(shù)開發(fā)了閱覽室管理系統(tǒng),并部署和應(yīng)用了此系統(tǒng),取得了較好的效果,得到師生們的一致認(rèn)可。
我們基于面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)組件模型,結(jié)合指紋識別技術(shù),開發(fā)了開放閱覽室管理系統(tǒng),主要完成的功能有信息實(shí)時發(fā)布、基于指紋的身份認(rèn)證和自動化排座。信息實(shí)時發(fā)布是通過校園網(wǎng)、系統(tǒng)網(wǎng)站和遍布校園各教學(xué)樓、宿舍樓的大屏幕,實(shí)時地將各個閱覽室使用情況顯示出來,方便學(xué)生自主選擇閱覽時間?;谥讣y的身份認(rèn)證是采用先進(jìn)的指紋識別技術(shù),實(shí)現(xiàn)基于指紋的身份認(rèn)證,避免傳統(tǒng)身份認(rèn)證系統(tǒng)中他人代替打卡的現(xiàn)象發(fā)生。自動化排座是根據(jù)各個閱覽室的使用情況,對新到的學(xué)生自動進(jìn)行排座操作,同時對學(xué)生中途離開和總閱覽時間實(shí)現(xiàn)精細(xì)控制。
應(yīng)用系統(tǒng)的架構(gòu),經(jīng)歷了兩層架構(gòu)和三層架構(gòu)的發(fā)展階段。目前主流的是三層架構(gòu),該架構(gòu)由三個各不相同的邏輯層次組成,分別是:表示層、業(yè)務(wù)層和數(shù)據(jù)庫層[1]。該架構(gòu)的優(yōu)勢主要有:一、系統(tǒng)設(shè)計、擴(kuò)展、變更甚至重用都更加易于實(shí)現(xiàn);二、層次劃分清晰,便于項(xiàng)目實(shí)施管理過程中人員有效分工、職責(zé)明確;三、模塊化使測試有效快捷。但是,在項(xiàng)目實(shí)施運(yùn)行過程中,也發(fā)現(xiàn)了諸多不足。比如:邏輯層需求分析復(fù)雜,信息交互量大,而劃分不夠明細(xì),勢必造成開發(fā)階段代碼邏輯復(fù)雜、紊亂、冗余高,同時產(chǎn)生的不良編碼模式也不利于后期軟件的測試、擴(kuò)展以及重構(gòu)等,這些都違背了三層架構(gòu)初始設(shè)計的目的。
為了解決傳統(tǒng)應(yīng)用程序三層架構(gòu)不夠合理、組件不利于重用的不足,本系統(tǒng)結(jié)合SOA的原則和規(guī)范[2][3],采用SOA 架構(gòu)來實(shí)現(xiàn)系統(tǒng)各部分之間的松散耦合性,基于Web Services技術(shù)①Web Services是通過一系列標(biāo)準(zhǔn)和協(xié)議來保證程序之間的動態(tài)連接。將業(yè)務(wù)功能封裝起來實(shí)現(xiàn)服務(wù)[4],通過Web Services間的交互,實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)流程,構(gòu)造出一個新的、層次結(jié)構(gòu)清晰、邏輯合理的、低耦合、高內(nèi)聚的基于SOA的應(yīng)用程序架構(gòu)。
圖1 基于SOA的軟件架構(gòu)
在表示層與業(yè)務(wù)邏輯層之間增加服務(wù)層,提供標(biāo)準(zhǔn)化的服務(wù)接口及系統(tǒng)的業(yè)務(wù)邏輯和控制。為了進(jìn)一步地將表示層與業(yè)務(wù)邏輯解耦合,服務(wù)層除了實(shí)現(xiàn)系統(tǒng)的全部服務(wù)外,還有一個工作流引擎,由工作流引擎來接受數(shù)據(jù)、處理服務(wù)的調(diào)用并將服務(wù)處理后的數(shù)據(jù)返回給表示層;表示層僅需關(guān)注與用戶的交互,獲取數(shù)據(jù)以及如何更好地向用戶顯示結(jié)果。服務(wù)的實(shí)現(xiàn)采用“契約優(yōu)先”的原則,屏蔽具體業(yè)務(wù)的實(shí)現(xiàn)。在業(yè)務(wù)邏輯層將業(yè)務(wù)邏輯與數(shù)據(jù)訪問進(jìn)行剝離,細(xì)分為業(yè)務(wù)邏輯、實(shí)體、實(shí)體操作、數(shù)據(jù)訪問接口和數(shù)據(jù)訪問。
服務(wù)層負(fù)責(zé)將業(yè)務(wù)邏輯與顯示相隔離;具體的業(yè)務(wù)邏輯主要依靠實(shí)體以及實(shí)體操作,實(shí)際上實(shí)體操作是指:使用各種實(shí)體操作方法并組合來實(shí)現(xiàn)不同業(yè)務(wù),同時處理訪問接口層數(shù)據(jù)返回的實(shí)體;而所有底層方法通過數(shù)據(jù)訪問接口進(jìn)行定義,給數(shù)據(jù)訪問留下接口。對象實(shí)體則在實(shí)體層進(jìn)行定義,對于只有屬性沒有方法的實(shí)體,基本上按抽象類進(jìn)行定義。如圖1所示。
基于SOA的軟件系統(tǒng)架構(gòu)主要的優(yōu)點(diǎn)有:具備SOA架構(gòu)的優(yōu)點(diǎn),層次清晰,結(jié)構(gòu)邏輯性強(qiáng),功能完備;模塊化使得系統(tǒng)開發(fā)條理明晰,更加快速高效。使用Web服務(wù)包裝業(yè)務(wù)邏輯,有利于分布式應(yīng)用程序的開發(fā),客戶端的開發(fā)可以使用多種平臺、多種技術(shù)。在服務(wù)層添加工作流引擎,將表示層與具體的業(yè)務(wù)邏輯相隔離,表示層只需要獲取用戶的需求,將具體的服務(wù)調(diào)用及管理交由工作流引擎處理。服務(wù)層的設(shè)計采用“契約優(yōu)先”的原則,盡可能地使工作流引擎只關(guān)注業(yè)務(wù)流程,降低工作流引擎與業(yè)務(wù)邏輯實(shí)現(xiàn)的耦合度。一旦具體的業(yè)務(wù)邏輯發(fā)生變化,只要其服務(wù)接口不變,上層結(jié)構(gòu)就無需發(fā)生變化?;诿嫦?qū)ο蟮乃枷?,定義了數(shù)據(jù)實(shí)體類以及實(shí)體操作類,區(qū)別于數(shù)據(jù)實(shí)體以及數(shù)據(jù)操作,便于對兩者進(jìn)行修改,從而提高系統(tǒng)整體的靈活性。由于從業(yè)務(wù)邏輯中把數(shù)據(jù)訪問分離出來,并采用了O/R Mapping實(shí)現(xiàn)持久化對象,從而進(jìn)一步提高了系統(tǒng)的可移植性。使用工廠模式,進(jìn)一步增添數(shù)據(jù)訪問接口層,體現(xiàn)了面向?qū)ο笠蕾嚨怪迷瓌t,降低了數(shù)據(jù)訪問層變化對整個系統(tǒng)的影響性。
基于SOA的系統(tǒng)架構(gòu)其關(guān)鍵問題為服務(wù)的實(shí)現(xiàn)、工作流引擎的設(shè)計與實(shí)現(xiàn)以及系統(tǒng)的安全性。我們在.NET平臺下實(shí)現(xiàn)了一個基于SOA的服務(wù)構(gòu)件包裝平臺。該平臺采用C/S結(jié)構(gòu),使用C#語言編寫。
下面以基于指紋的身份認(rèn)證[5]服務(wù)構(gòu)件為例,介紹一下服務(wù)構(gòu)件在包裝平臺的實(shí)現(xiàn)過程:
第一步 添加服務(wù)構(gòu)件接口描述文件的元素。
進(jìn)入服務(wù)構(gòu)件包裝平臺或新建服務(wù)構(gòu)件項(xiàng)目后進(jìn)入包裝平臺的主界面,在界面中填寫服務(wù)構(gòu)件接口描述文件的元素。填寫完成的元素經(jīng)過添加后以列表的形式展示在包裝平臺的下面,如圖2所示。
圖2 服務(wù)構(gòu)建包裝平臺
第二步 創(chuàng)建服務(wù)構(gòu)件接口描述文件。
服務(wù)構(gòu)件接口描述文件的元素確認(rèn)無誤后,平臺自動生成服務(wù)構(gòu)件的接口描述文件。接口描述文件如圖3所示。服務(wù)構(gòu)件接口描述文件是服務(wù)構(gòu)件創(chuàng)建的核心,該文件可以用XML格式或文本文件的形式保存。如果認(rèn)為接口描述文件存在問題,可以進(jìn)行修改或返回上一步重新生成。
圖3 生成的接口描述文件
第三步 創(chuàng)建服務(wù)構(gòu)件接口文件。
服務(wù)構(gòu)件的接口描述文件確定以后,服務(wù)構(gòu)件的接口文件也隨之確定。這樣只要接口文件保持不變,服務(wù)構(gòu)件內(nèi)部實(shí)現(xiàn)可以根據(jù)實(shí)際情況創(chuàng)建和改變。這樣服務(wù)構(gòu)件內(nèi)部的變化對服務(wù)使用者是透明的。從而既實(shí)現(xiàn)了服務(wù)構(gòu)件與服務(wù)構(gòu)件使用者之間的松耦合,又實(shí)現(xiàn)了服務(wù)構(gòu)件接口與服務(wù)構(gòu)件實(shí)現(xiàn)之間的松耦合。服務(wù)構(gòu)件的接口文件如圖4所示。
圖4 生成的接口文件
第四步 創(chuàng)建服務(wù)構(gòu)件的實(shí)現(xiàn)。
服務(wù)構(gòu)件的實(shí)現(xiàn)是在已生成的標(biāo)準(zhǔn)接口下以繼承類的形式創(chuàng)建。創(chuàng)建的方法主要有兩種:一是直接在現(xiàn)有的繼承類中編寫代碼,完成服務(wù)構(gòu)件的實(shí)現(xiàn)工作;二是通過調(diào)用現(xiàn)有系統(tǒng)的DLL(動態(tài)鏈接庫)文件,從而調(diào)用現(xiàn)有系統(tǒng)中的函數(shù)實(shí)現(xiàn)。身份認(rèn)證服務(wù)構(gòu)件具體實(shí)現(xiàn)如圖5所示。最后,生成身份認(rèn)證服務(wù)構(gòu)件和對應(yīng)的客戶端可執(zhí)行代理文件。
圖5 創(chuàng)建服務(wù)實(shí)現(xiàn)
學(xué)生進(jìn)入閱覽室分配閱覽臺,具體操作流程如下:
學(xué)生進(jìn)入入口處,按屏幕提示,使用指紋驗(yàn)證,驗(yàn)證身份無誤,由系統(tǒng)返回學(xué)生的個人信息。
學(xué)生通過按號器選擇閱覽室,選擇完畢后系統(tǒng)自動給出該學(xué)生的閱覽臺號。
在這個環(huán)節(jié),系統(tǒng)采用桌面程序作為客戶端,在閱覽室的門口擺有提示的屏幕、指紋識別儀和按號器,學(xué)生通過指紋識別模塊進(jìn)行身份識別,再由閱覽室管理子系統(tǒng)提供學(xué)生可訪問的閱覽室資源。
學(xué)生離開閱覽室分為單個學(xué)生離開和批量離開兩種情況,單個學(xué)生離開分為暫時離開、暫時離開未按時歸來(非正常離開)和正常離開三種情況。學(xué)生在閱覽過程中需要在較短時間內(nèi)處理個人事務(wù)時,允許其暫時離開閱覽室,并且要求在規(guī)定的時間內(nèi)回到閱覽室,其閱覽臺為其保留。學(xué)生暫時離開后,在規(guī)定的時間內(nèi)沒有按時回到閱覽室,閱覽臺發(fā)出警告,由管理員收拾閱覽臺,由系統(tǒng)收回閱覽臺,這種狀態(tài)稱為非正常離開。學(xué)生閱覽完后,離開閱覽室,由系統(tǒng)收回閱覽臺,這種狀態(tài)稱為正常離開。在閱覽室關(guān)閉的時候,由管理員對閱覽室進(jìn)行批量離開處理,將所有閱覽臺設(shè)置為正常離開狀態(tài),并對各個閱覽室的所有閱覽臺作斷電處理。
分布式理論將網(wǎng)絡(luò)上分布的各種軟件資源看作是服務(wù),隨著分布式計算在技術(shù)上(如 XML,Web Services等)的成熟,面向服務(wù)的架構(gòu)是以“服務(wù)”為基本元素,技術(shù)層面上,它是一種能夠適應(yīng)業(yè)務(wù)變化、抽象、松散耦合的粗粒度軟件架構(gòu);體現(xiàn)出面向服務(wù)的架構(gòu)在業(yè)務(wù)層面上“重用”和“互操作”的核心理念,必然成為解決應(yīng)用集成、基于標(biāo)準(zhǔn)服務(wù)的資源整合、代碼可重用以及加快應(yīng)用實(shí)施的首選方案。通過對業(yè)務(wù)服務(wù)精心分析并設(shè)計,便可快捷地構(gòu)建出靈活而功能強(qiáng)大的基于SOA的應(yīng)用系統(tǒng)。同時,SOA可以對Web應(yīng)用中的分散功能進(jìn)行整合,抽取出可共用的標(biāo)準(zhǔn)服務(wù),通過組合或重用服務(wù)的方式來進(jìn)一步滿足業(yè)務(wù)需求變化。SOA的目的是以服務(wù)定義和重用為中心將流程創(chuàng)新、有效管理和技術(shù)策略結(jié)合起來幫助Web應(yīng)用系統(tǒng)實(shí)現(xiàn)業(yè)務(wù)和技術(shù)優(yōu)勢[6]。
基于對SOA的這種較面向?qū)ο蠛兔嫦驑?gòu)件更具優(yōu)勢的軟件開發(fā)方法的研究,我們構(gòu)建了一個松散耦合的,易于擴(kuò)展及重用,實(shí)用性強(qiáng)、使用簡單、管理維護(hù)方便的基于SOA的軟件架構(gòu),并在此基礎(chǔ)上設(shè)計并實(shí)現(xiàn)了一個對開放閱覽室全程進(jìn)行監(jiān)督和控制的智能管理系統(tǒng)。
本系統(tǒng)經(jīng)過將近兩個學(xué)年的使用,目前運(yùn)行良好,為閱覽室管理提供了方便,最大程度地提高了閱覽室資源的利用率,為學(xué)生自習(xí)、閱覽提供了便利。同時,本系統(tǒng)的投入使用也為開展高校數(shù)字化校園以及整合數(shù)字化高校各業(yè)務(wù)部門工作提供了理論研究和探索性實(shí)踐研究的基礎(chǔ)。
目前,高校各業(yè)務(wù)部門都有自己的業(yè)務(wù)系統(tǒng),考慮到經(jīng)濟(jì)成本等因素必須將現(xiàn)有業(yè)務(wù)進(jìn)行整合,這就需要各業(yè)務(wù)系統(tǒng)按統(tǒng)一的標(biāo)準(zhǔn)進(jìn)行接口服務(wù)的開放,因此,擬定各種服務(wù)的編排標(biāo)準(zhǔn),將是我們下一步的主要工作之一。
1 陳琦程.面向服務(wù)的行業(yè)解決方案:原理、方法與實(shí)踐.北京:電子工業(yè)出版社,2011:112-186
2 Dirk Krafzig,Karl Banke,Dirk Slama.Enterprise SOA:Service-Oriented Architecture Best Practices.New York:Prentice Hall,2006:41-48
3 歐石燕.基于SOA架構(gòu)的術(shù)語注冊和服務(wù)系統(tǒng)設(shè)計與應(yīng)用.中國圖書館學(xué)報,2011(5):13-25
4 古超.基于Web Services的高校圖書館業(yè)務(wù)系統(tǒng)接口擴(kuò)展及應(yīng)用.情報探索,2011,162(4):95-97
5 陳源.指紋識別應(yīng)用于高校圖書館的實(shí)現(xiàn)途徑及前景.圖書館論壇,2009(3):57-61
6 李曉婷.基于SOA架構(gòu)的Web圖表生成與打印系統(tǒng)[碩士學(xué)位論文].鄭州:中國人民解放軍信息工程大學(xué),2007