趙慶明+阮菊紅
摘 要:系統(tǒng)整合往往是一個復(fù)雜的工程,第三方接口對系統(tǒng)的影響與其穩(wěn)定性和實時性成為一種重要考慮的環(huán)節(jié)。本文通過簡單編程來監(jiān)控特定服務(wù)器的運行日志,從而解決了我校“一卡通”與我圖書館集成管理系統(tǒng)之間的“實時”數(shù)據(jù)交互問題。經(jīng)過半年多時間的運行,效果理想,可為有類似需求的同仁參考。
關(guān)鍵詞:C#;一卡通;監(jiān)視;圖書館集成管理系統(tǒng);FileSystemWatcher
一、引言
作為數(shù)字化校園的基礎(chǔ)設(shè)施,“一卡通”系統(tǒng)幾乎普及于國內(nèi)各大高校。我?!耙豢ㄍā毕到y(tǒng)經(jīng)過數(shù)次升級,逐步完善。雖然服務(wù)提供商在“一卡通”系統(tǒng)和圖書館集成化管理系統(tǒng)做了不少的整合工作,從而確保了其可用性。但在實際使用中,我們發(fā)現(xiàn)整合的“實時性”仍有欠缺。因此基于我館和我校目前狀況,經(jīng)過一系列的探究,最后通過簡單的編程,彌補了此欠缺。
二、目前現(xiàn)狀
我館于2001年開始采用金盤圖書館集成管理系統(tǒng),經(jīng)過數(shù)次版本升級,目前是一個封閉的、獨立的、完善而穩(wěn)定的系統(tǒng)。在學(xué)?!耙豢ㄍā毕到y(tǒng)基礎(chǔ)設(shè)施完成后,對圖書館原有集成管理系統(tǒng)帶來了不少的挑戰(zhàn),數(shù)據(jù)如何交互是我們面對的重要問題。數(shù)據(jù)商只提供了通用的解決方案,保證了其可用性。
通用解決方案為,“一卡通”數(shù)據(jù)庫定時將數(shù)據(jù)推送到公網(wǎng)的“中間數(shù)據(jù)”服務(wù)器。我館內(nèi)部的“同步服務(wù)器”定時從公網(wǎng)的“中間數(shù)據(jù)”服務(wù)器上取回數(shù)據(jù),然后在“金盤數(shù)據(jù)庫”中完成檢驗和修改。每一次操作,將有數(shù)萬條數(shù)據(jù)需要被對比驗證,對“金盤數(shù)據(jù)庫”服務(wù)器帶來很大的壓力,同時也會影響到圖書館的業(yè)務(wù)。考慮到性能問題,數(shù)據(jù)商建議從“中間數(shù)據(jù)”服務(wù)器到“金盤數(shù)據(jù)庫”服務(wù)器的同步,設(shè)置在業(yè)務(wù)不繁忙的時間段進行處理,每日分兩次處理。而“一卡通”數(shù)據(jù)為時刻變動的數(shù)據(jù),尤其在學(xué)生補辦卡之后,會出現(xiàn)新補辦的卡無法在圖書館使用,而已丟失的卡可能會被他人冒用的情況。而其原因是“一卡通”數(shù)據(jù)暫時未同步到圖書館業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫。
三、可行性分析
我館采用“通道閘機”對來館的讀者進行驗證,決定是否放行。閘機由一臺Windows Server作為閘機服務(wù)器來控制,每個讀者需要在閘機上刷“卡”,驗證通過之后,才予放行。閘機服務(wù)器讀取“卡”中的數(shù)據(jù)后,讀寫“金盤數(shù)據(jù)庫”以確定讀者的合法性,并將日志作為“登到日志”回寫至金盤數(shù)據(jù)庫,同時也將其記錄在一個文本的日志文件中。
從統(tǒng)計的數(shù)據(jù)中發(fā)現(xiàn),每日到圖書館的人數(shù)僅有2000人次左右,如果只針對這些讀者進行操作,不但可以做到實時交互,而且也不會對“金盤服務(wù)器”帶來太多影響。為了確保數(shù)據(jù)的安全性和健壯性,在中間數(shù)據(jù)服務(wù)器上配置Web以提供WebAPI服務(wù)。
四、實時交互實施
在C#編程語言中,命名空間“System.IO”中的“FileSystemWatcher”擁有實時監(jiān)控Windows文件狀態(tài)的功能。由于每次讀者在閘機上刷卡,閘機服務(wù)器上的日志都會添加記錄。因此監(jiān)控該日志文件,適當(dāng)處理,即可滿足“一卡通”數(shù)據(jù)和“金盤數(shù)據(jù)庫”的實時性交互問題。核心代碼如下:
FileSystemWatcher watcher=new FileSystemWatcher( );
watcher.Path=path;
watcher.Filter=filter;
watcher.Changed+=new FileSystemEventHandler(OnProcess);
watcher.EnableRaisingEvents=true;
watcher.IncludeSubdirectories=true;
當(dāng)監(jiān)控的文件發(fā)生變化后,由OnProcess完成后續(xù)的處理:找到剛才被寫入的那條日志文件,找到剛被添加的日志內(nèi)容,提取刷卡的卡號,訪問“中間數(shù)據(jù)”的WebAPI,獲取該讀者最新的“一卡通”數(shù)據(jù),再從“金盤數(shù)據(jù)庫”中讀出該讀者信息,對比兩者,寫會修改后的數(shù)據(jù)。
五、結(jié)束語
通過如上設(shè)計,完成了一個小程序以滿足我?!耙豢ㄍā迸c圖書館集成管理系統(tǒng)之間的整合。讀者的卡發(fā)生變化后,只要到圖書館在閘機上刷卡,該小程序自動完兩個系統(tǒng)之間的數(shù)據(jù)“實時”交互。新補卡馬上可以使用,同時也避免了舊卡冒用的問題。經(jīng)過半年多時間的運行,效果理想,可為有類似需求的同仁參考。
參考文獻:
[1]基于FileSystemWatcher的文件備份系統(tǒng)設(shè)計[J].唐祖權(quán),屈敏申,徐志京.電子設(shè)計工程.2010(03).
[2]基于.NET的文件系統(tǒng)監(jiān)控[J].陳健.吉林師范大學(xué)學(xué)報(自然科學(xué)版).2007(02).
[3]FileSystemWatcher用法詳解[EB/OL].http://blog.csdn.net/hwt0101/article/details/8469285,2013.1.5.
作者簡介:趙慶明,男,館員,主要研究方向:圖書館學(xué)與計算機應(yīng)用方面的工作;
阮菊紅,女,館員,主要研究方向:圖書館學(xué)研究及工作。
基金項目:2017年度四川省哲學(xué)社會科學(xué)重點研究基地一般項目《“雙一流”建設(shè)背景下圖書館智庫服務(wù)研究》(SCAA17-004)。endprint