汪峰坤
安徽機(jī)電職業(yè)技術(shù)學(xué)院信息工程系,安徽蕪湖,241000
隨著校園信息化建設(shè)的發(fā)展, 數(shù)字化校園成為校園管理和發(fā)展的重要環(huán)節(jié)?!皵?shù)字化校園系統(tǒng)”是信息技術(shù)運(yùn)用于教育改革過程所形成的研究成果之一。它以Internet 網(wǎng)絡(luò)技術(shù)為基礎(chǔ),利用先進(jìn)的信息技術(shù)手段,實(shí)現(xiàn)教學(xué)、科研、管理和服務(wù)等資源的數(shù)字化,在物理校園的基礎(chǔ)上構(gòu)建一個(gè)信息化數(shù)字校園空間,以擴(kuò)展物理校園的功能,從而實(shí)現(xiàn)教育過程數(shù)字化的目標(biāo)。
在數(shù)字化校園建設(shè)過程中,對(duì)高校實(shí)驗(yàn)及實(shí)訓(xùn)設(shè)備建設(shè)和管理提出了更高的要求,特別是對(duì)昂貴設(shè)備的管理,其管理的好壞將直接關(guān)系到學(xué)校的經(jīng)濟(jì)利益、實(shí)驗(yàn)教學(xué)質(zhì)量和科研水平的提高。硬件設(shè)施建設(shè)是實(shí)驗(yàn)室建設(shè)的重要方面,管好設(shè)備是加強(qiáng)實(shí)驗(yàn)室建設(shè)的重要內(nèi)容。
高校常用的設(shè)備管理軟件主要是從靜態(tài)的角度來管理設(shè)備,即記錄學(xué)校所購(gòu)買的設(shè)備的數(shù)量與使用情況。在這些設(shè)備管理系統(tǒng)中沒有實(shí)質(zhì)的管理內(nèi)容。這些軟件無法實(shí)時(shí)查看這些設(shè)備當(dāng)前使用情況。
高校在重點(diǎn)設(shè)備所在的實(shí)驗(yàn)室、車間等都安裝有監(jiān)控設(shè)備,而這些監(jiān)控設(shè)備只是起到簡(jiǎn)單防盜的作用。這些監(jiān)控設(shè)備內(nèi)部通過網(wǎng)絡(luò)連接由服務(wù)器進(jìn)行數(shù)據(jù)保存,保存的數(shù)據(jù)很難在別的系統(tǒng)中進(jìn)行集成和使用。如果能利用這些監(jiān)控設(shè)備為高校的設(shè)備管理系統(tǒng)提供實(shí)時(shí)的設(shè)備使用情況,則對(duì)于學(xué)校和設(shè)備管理者可以主動(dòng)地、更加容易理解與接受的方式了解“自己的設(shè)備”。
本文結(jié)合當(dāng)前高校主要使用的監(jiān)控設(shè)備情況,設(shè)計(jì)了一種具有通用功能的訪問監(jiān)控設(shè)備的輕量級(jí)框架(以下簡(jiǎn)稱SDCS),此框架可以非常容易地集成不同種類、不同類型的監(jiān)控設(shè)備,通過主動(dòng)訪問監(jiān)控設(shè)備,可將監(jiān)控設(shè)備當(dāng)前圖像抓取并統(tǒng)一保存在數(shù)據(jù)庫(kù)中,方便設(shè)備管理系統(tǒng)的訪問。
當(dāng)前,高校使用的主要的監(jiān)控系統(tǒng)是硬盤錄像機(jī)(簡(jiǎn)稱DVR),這種監(jiān)控系統(tǒng)一般使用ARM架框、Linux系統(tǒng)的嵌入式設(shè)備,因?yàn)樗哂泻軓?qiáng)大的視頻/圖像保存、截取及網(wǎng)絡(luò)管理功能,并且可以進(jìn)行二次開發(fā)。但是,此類設(shè)備沒有統(tǒng)一的API接口,不同的廠商,甚至同一廠商不同型號(hào)的設(shè)備二次開發(fā)接口也不相同。
因此,在設(shè)計(jì)SDCS時(shí),盡可能地降低對(duì)設(shè)備開發(fā)接口的依賴,以低耦合的方式聯(lián)接各種DVR設(shè)備??蚣鼙旧聿话魏闻cDVR設(shè)備應(yīng)用程序接口有關(guān)的應(yīng)用端的邏輯,通過高度抽象,提供了一組對(duì)外通用的API統(tǒng)一接口。通過框架屏蔽了不同類型的DVR設(shè)備在使用上的差異性,以插件的方式來動(dòng)態(tài)加載和運(yùn)行DVR設(shè)備的驅(qū)動(dòng),用來獲取DVR的實(shí)時(shí)圖像。
本框架的結(jié)構(gòu)如圖1,由框架內(nèi)核、DVR API接口和DVR驅(qū)動(dòng)插件三部分組成。
SDCS的內(nèi)核是SDCS的核心和基礎(chǔ),主要實(shí)現(xiàn)讀取各DVR配置的基本信息、抓取圖片的時(shí)間段以及時(shí)間間隔的設(shè)置、利用反射加載插件運(yùn)行、定時(shí)查詢DVR設(shè)備抓取圖片、將抓取的圖片保存為本地文件或者上傳到指定網(wǎng)絡(luò)路徑、異常管理、日志管理等功能。
反射服務(wù)是當(dāng)框架運(yùn)行DVR設(shè)備驅(qū)動(dòng)插件時(shí)提供的服務(wù)支持,提供的功能主要有:得到導(dǎo)入的程序集字段、屬性、方法及特性等信息,檢查插件的數(shù)字簽名,檢查被反射的類及方法是否正確,動(dòng)態(tài)實(shí)例化對(duì)象及調(diào)用方法等。
圖1 SDCS框架的結(jié)構(gòu)圖
SDCS框架的配置文件使用的都是XML格式文件,因?yàn)閄ML格式文件方便擴(kuò)展、容易理解、跨平臺(tái)、便于存儲(chǔ)和傳輸,并且很多語(yǔ)言和工具都支持??蚣艿耐獠颗渲梦募ㄟ^框架配置文件管理器進(jìn)行統(tǒng)一的驗(yàn)證及讀寫??蚣芘渲梦募芾砥鞯暮诵牟糠质荴ML文件讀取器、DTD正確性驗(yàn)證和配置內(nèi)容解析器。在內(nèi)核啟動(dòng)之前,解析SDCS框架的配置文件,將內(nèi)核配置信息保存在全局?jǐn)?shù)據(jù)結(jié)構(gòu)中,根據(jù)配置信息完成內(nèi)核的啟動(dòng)。
插件管理器是對(duì)DVR進(jìn)行動(dòng)態(tài)管理,支持熱插拔技術(shù),即不需要重新啟動(dòng)SDCS系統(tǒng)就可以增加、修改或刪除要訪問的DVR設(shè)備。當(dāng)增加一個(gè)要獲取圖像的DVR設(shè)備時(shí),插件管理和對(duì)象加載器聯(lián)合使用,對(duì)象加載器利用反射服務(wù)加載此設(shè)置的插件的唯一實(shí)例,并將此實(shí)例加入插件管理容器中,以便定時(shí)查詢服務(wù)調(diào)用。插件管理容器本質(zhì)上就是一個(gè)HashTable,用來保存對(duì)象的信息。當(dāng)刪除一個(gè)插件時(shí),插件管理器以事件的方式通知定時(shí)查詢服務(wù),停止調(diào)用此插件對(duì)應(yīng)的DVR設(shè)備,然后在插件管理容器中去除此插件。
定時(shí)查詢服務(wù)是內(nèi)核啟動(dòng)后最后一個(gè)運(yùn)行的服務(wù),它根據(jù)插件管理器配置的DVR插件信息和框架配置文件管理器讀取的啟動(dòng)這些DVR的時(shí)間段和時(shí)間間隔信息,啟動(dòng)一個(gè)定時(shí)器,輪流訪問這些DVR設(shè)備。通過調(diào)用DVR統(tǒng)一API接口異步獲取DVR的圖像。
內(nèi)核中還有其他的一些通用服務(wù),如:日志服務(wù)跟蹤并記錄程序的運(yùn)行狀態(tài),通過配置可將日志保存到數(shù)據(jù)庫(kù)、外部文件和Windows的事件管理器中,以方便開發(fā)人員的查看。資源服務(wù)提供軟件內(nèi)的字符串、圖像、圖標(biāo)等資源的讀取,通過此服務(wù),可以提供換膚、本地化。全局錯(cuò)誤捕獲服務(wù)可以獲取在系統(tǒng)中未處理的異常信息,并通過日志服務(wù)進(jìn)行保存。
DVR API的統(tǒng)一接口是SDCS系統(tǒng)和外部直接訪問DVR設(shè)備的插件唯一聯(lián)系的地方,是為了屏蔽不同DVR設(shè)備不同的二次開發(fā)接口而設(shè)置的中間接口。
其主要內(nèi)容如下:
interface IDVRSuperClass
{
System.Drawing.Bitmap CaptureIMG();
string ChannelNumber {get;set;}
event EventHandler DVRImage;
event EventHandler DVRInfo;
string ImgName {get;set;}
long ImgQuality {get;set;}
string IpAddr{get;set;}
bool NetDVRLogin();
void NetDVRLogout();
string OtherParams{get;set;}
int PortNumber{get;set;}
string Pwd{get;set;}
string UserId{get;set;}
}
接口主要提供了DVR插件要完成的基本功能,訪問DVR的高級(jí)功能是由插件內(nèi)部完成的。DVR API的統(tǒng)一接口必須被SDCS和DVR插件共同引用。
定時(shí)查詢服務(wù)根據(jù)配置信息到插件管理容器中找到DVR驅(qū)動(dòng)插件的唯一實(shí)例并進(jìn)行初始化,調(diào)用NetDVRLogin方法連接DVR設(shè)備。連接成功后,調(diào)用CaptureIMG方法讀取DVR當(dāng)前圖像。如果當(dāng)前DVR設(shè)置為同步工作方式,則直接返回捕獲的圖像,如果是異步工作方式,則通過事件DVRImage返回圖像。圖像獲取后,調(diào)用NetDVRLogout方法關(guān)閉連接。
框架啟動(dòng)過程:?jiǎn)?dòng)框架配置管理服務(wù),驗(yàn)證讀取SDCS內(nèi)核的默認(rèn)配置文件并解析,根據(jù)配置文件的設(shè)置,檢查內(nèi)核信賴的DLL文件的完整性以及版本是否兼容。解析插件的配置文件,使用插件管理服務(wù)和對(duì)象加載器加載插件的唯一實(shí)例到插件管理容器中,最后啟動(dòng)定時(shí)查詢服務(wù)。
框架運(yùn)行過程:運(yùn)行定時(shí)查詢服務(wù),當(dāng)?shù)街付ǖ臅r(shí)間時(shí),檢查當(dāng)前時(shí)間是否在要獲取圖像的DVR設(shè)備時(shí)間設(shè)置范圍內(nèi)。如果在設(shè)置訪問DVR時(shí)間范圍內(nèi),則檢查此插件實(shí)例是否運(yùn)行,如果未運(yùn)行,則通過對(duì)象加載器加載到插件容器中,并注冊(cè)事件處理程序。如果已經(jīng)運(yùn)行,則直接調(diào)用DVR API接口調(diào)用DVR插件中的CaptureIMG方法獲取圖像。
設(shè)備管理系統(tǒng)主要是由SDCS子系統(tǒng)、DVR圖像管理子系統(tǒng)、DVR設(shè)置子系統(tǒng)、錄制時(shí)間設(shè)置子系統(tǒng)和設(shè)備管理網(wǎng)站子系統(tǒng)組成,其中SDCS子系統(tǒng)處于一個(gè)中心位置。設(shè)備管理系統(tǒng)的部署圖如圖2。
圖2 設(shè)備管理系統(tǒng)的部署圖
子系統(tǒng)之間的交互如下:DVR設(shè)置子系統(tǒng)設(shè)置為WEB 服務(wù)的方式,它主要提供要管理的設(shè)備對(duì)應(yīng)的DVR的信息,包括DVR插件的名稱、訪問的地址、端點(diǎn)、通道、登錄的用戶名稱、密碼等信息。錄制時(shí)間設(shè)置子系統(tǒng)為SDCS提供要錄像的DVR編號(hào)以及錄像時(shí)間段和時(shí)間的間隔等信息。DVR圖像管理子系統(tǒng)是SDCS獲得DVR的圖像時(shí)上傳或本地保存時(shí)記錄的相關(guān)信息。設(shè)備管理網(wǎng)站子系統(tǒng)提供監(jiān)控設(shè)備編號(hào)、驅(qū)動(dòng)信息的設(shè)置、獲取圖片的時(shí)間段和時(shí)間間隔的設(shè)置及查看監(jiān)控圖片的功能。SDCS子系統(tǒng)是以Windows服務(wù)的方式在計(jì)算機(jī)的后臺(tái)運(yùn)行。
在學(xué)校的設(shè)備管理系統(tǒng)中,通過與監(jiān)控設(shè)置的連接,可以實(shí)時(shí)地查看設(shè)備的使用情況,及早發(fā)現(xiàn)閑置設(shè)備和利用率不高的設(shè)備,重新進(jìn)行設(shè)備配置的優(yōu)化,避免教育資源的浪費(fèi)。本文提出了一個(gè)通用的訪問DVR信息的框架,它通過統(tǒng)一接口屏蔽不同DVR設(shè)備二次開發(fā)接口的不同。通過插件降低了系統(tǒng)之間的耦合度,修改方便。對(duì)于動(dòng)態(tài)增加、刪除DVR設(shè)備的插件,無須停止框架運(yùn)行,支持熱插拔技術(shù)。通過本框架擴(kuò)展支持某類型的DVR設(shè)備,只需要調(diào)用DVR設(shè)備的驅(qū)動(dòng)程序?qū)崿F(xiàn)IDVRSuperClass接口,通過簡(jiǎn)單配置即可由框架支持,擴(kuò)展簡(jiǎn)單、方便。
參考文獻(xiàn):
[1]王孝明,胡健,陸坤,等.基于.NET平臺(tái)可復(fù)用軟件框架的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004,30(22):76-78
[2]崔冬華,劉吉林.基于反射的低耦合軟件框架的研究[J].計(jì)算機(jī)信息,2007,23(10):232-234
[3]孫玉鈺.基于.NET組件技術(shù)的插件式框架的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(6):143-145
[4]劉佳,王麗宏,孫克寧.插件技術(shù)在控制系統(tǒng)中的應(yīng)用[J].計(jì)算應(yīng)用研究,2004(3):117-118
[5]Don Box.COM本質(zhì)論[M].潘愛民,譯.北京:中國(guó)電力出版社,2001:218-262
[6]Don Box,Chris Shells..NET本質(zhì)論:第1卷:公共語(yǔ)言運(yùn)行庫(kù)[M].張曉坤,譯.北京:中國(guó)電力出版社,2004:86-96