王 娜,楊國強
(1.南昌航空大學信息工程學院,江西 南昌 330063;2.江西省計算技術研究所,江西 南昌 330002)
作為21世紀最具發(fā)展?jié)摿Φ氖蠹夹g之一,RFID(Radio Frequency Identification,射頻識別)技術近年來備受關注。隨著Web技術的迅猛發(fā)展和廣泛應用,RFID系統(tǒng)的設計也由傳統(tǒng)的C/S(客戶/服務器)模式轉(zhuǎn)向 B/S(瀏覽器/服務器)模式[1-2]。雖然Web應用程序開發(fā)快捷、使用簡單、容易維護,有良好的可移植性和擴展性,但仍存在一些問題。由于RFID手持終端(數(shù)據(jù)采集器)無法通過Web服務器端的后臺程序?qū)?shù)據(jù)直接傳到數(shù)據(jù)庫中去,而ActiveX技術能使Web頁面成為一種跳躍的、動態(tài)的頁面,恰好解決了這個問題。因此本系統(tǒng)采用了自主開發(fā)的ActiveX控件技術來實現(xiàn)在瀏覽器中與RFID手持終端進行雙向數(shù)據(jù)通信。
ActiveX是Microsoft提出的一組使用COM(Component Object Model,部件對象模型)軟件部件在網(wǎng)絡環(huán)境中進行交互的技術集。ActiveX控件是以二進制代碼形式發(fā)布的,與具體的編程語言無關,可以被任何支持COM的高級語言及軟件所調(diào)用,有較好的電腦移植性。利用組件技術,就可以實現(xiàn)一次編寫,多處使用,而不需要重新編譯鏈接,極大地推動了軟件的集成化[3-4]。作為針對Internet應用開發(fā)的技術,ActiveX被廣泛應用于Web服務器以及客戶端的各個方面。同時,ActiveX技術也被用于方便地創(chuàng)建普通的桌面應用程序。其中ActiveX控件是ActiveX技術的核心??丶墙⒖删幊滩考闹饕?,它是程序的自包含片斷或獨立的組件,這些程序通常是以EXE、DLL及OCX文件存放在服務器中。ActiveX控件有自己的屬性和方法,屬性反映了ActiveX控件的內(nèi)部狀態(tài),方法提供了各種功能。它允許最終用戶直接訪問控制所提供的各種功能,直接觀察到控件的狀態(tài)[8-9]。
RFID是一種非接觸式的自動識別技術,它通過射頻信號自動識別目標對象,可快速地進行物品追蹤和數(shù)據(jù)交換[5]。
典型的RFID系統(tǒng)主要由閱讀器、電子標簽、中間件和應用系統(tǒng)軟件組成。射頻系統(tǒng)2個主要部分——閱讀器和射頻卡之間通過無線方式通信,它們都有無線收發(fā)模塊及天線。射頻卡中有存儲器,用來存儲用戶數(shù)據(jù)和系統(tǒng)數(shù)據(jù)等。射頻卡可根據(jù)閱讀器發(fā)出的指令對這些數(shù)據(jù)進行相應的實時讀寫操作。閱讀器中的控制模塊完成接受、譯碼及執(zhí)行閱讀器命令,控制讀寫數(shù)據(jù),負責數(shù)據(jù)安全等功能。它有很強的處理功能,除了完成控制射頻卡工作的任務外,還需要實現(xiàn)相互認證、數(shù)據(jù)加解密、數(shù)據(jù)校驗、出錯報警及與計算機的通信等功能。
ActiveX是基于COM的可視化控件結構的一種封裝技術,因此將RFID系統(tǒng)的讀寫過濾模塊封裝成ActiveX控件的形式嵌入到Web網(wǎng)頁,使數(shù)據(jù)同步更人性化,更易于操作,使用人員只需要在頁面輕松的點擊按鈕即可實現(xiàn)數(shù)據(jù)的同步。
由于要在系統(tǒng)中采用RFID讀取功能,而RFID設備通常只提供可供C/S模式下調(diào)用的驅(qū)動程序(動態(tài)鏈接庫),因為這些驅(qū)動程序無法在網(wǎng)頁中直接調(diào)用,所以有必要開發(fā)封裝RFID功能的ActiveX控件,使得用戶可以直接通過網(wǎng)頁操作RFID設備,本文采用C#編寫ActiveX的方式實現(xiàn)。
出于安全性的考慮,基于ActiveX的RFID操作程序可通過ActiveX的安全機制保證用戶使用的是經(jīng)過驗證的程序來操作RFID設備。瀏覽器通過以下的方式來保證ActiveX插件的安全:ActiveX使用了2個補充性的策略:安全級別和證明,來追求進一步的軟件安全性;Microsoft提供了一套工具,可以用它來增加ActiveX對象的安全性;通過Microsoft的驗證代碼工具,可以對ActiveX控件進行簽名,以明確自己是控件的作者。
為了使用驗證代碼工具對組件進行簽名,必須從證書授權機構獲得一個數(shù)字證書;證書包含表明特定軟件程序是正版的信息,這確保了其他程序不能再使用原程序的標識。證書還記錄了頒發(fā)日期。當試圖下載軟件時,Internet Explorer會驗證證書中的信息,以及當前日期是否在證書的截止日期之前。如果在下載時該信息不是最新的和有效的,Internet Explorer將顯示一個警告;在瀏覽器默認的安全級別中,ActiveX控件安裝之前,用戶可以根據(jù)自己對軟件發(fā)行商和軟件本身的信任程度,選擇決定是否繼續(xù)安裝和運行此軟件。另外一個問題是RFID設備通常是不提供安全機制的,只要通過它驅(qū)動程序就能讀取到其中的數(shù)據(jù),為了防止數(shù)據(jù)的泄露,在設計中,RFID的封裝ActiveX控件還增加了一層加密/解密機制,這樣即使非授權用戶繞過RFID的封裝ActiveX控件讀取了RFID設備,得到的也是加密后的數(shù)據(jù)。
一個典型的B/S架構系統(tǒng)中RFID設備應用架構如圖1所示。
圖1 B/S架構系統(tǒng)中RFID設備應用架構圖
ActiveX讀卡器控件通常實現(xiàn)讀卡器的打開/關閉、讀卡和寫卡3大功能,分為2個步驟來實現(xiàn):開發(fā)ActiveX控件、打包并發(fā)布ActiveX控件和使用。使用C#開發(fā)ActiveX要解決下面3個問題:(1)使.NET組件可以被COM調(diào)用。(2)在客戶機上注冊后,ActiveX控件能通過IE的安全認證。(3)在客戶機上注冊時,安裝包能通過IE的簽名認證。
要解決上面提到的C#開發(fā)ActiveX的3個問題,就需要在程序代碼中添加ISafeObject控件安全指針。IE默認安全級別設置中對沒有標記為安全的ActiveX控件進行初始化和腳本運行的代碼默認是被禁用的。如果要消除這個提示,必須在控件上加上一個腳本安全標志。
一次完整的ActiveX控件簽名,首先需要在程序代碼中添加ISafeObject控件安全指針,然后對編譯好的控件.ocx、dll文件簽名。將簽好名的文件打包成.cab文件,再對.cab文件簽名。在瀏覽器中通過ActiveX技術調(diào)用RFID控件的聲明部分代碼如下:
大多數(shù)RFID設備的驅(qū)動程序都提供讀卡器的打開/關閉、讀卡和寫卡3大功能,通常的RFID系統(tǒng)只需對驅(qū)動程序進行調(diào)用封裝即可,本文設計的安全RFID系統(tǒng)的特點在于讀卡和寫卡操作需經(jīng)過加密和解密,也就是要寫入卡中的數(shù)據(jù)首先經(jīng)過加密,然后把加密后的數(shù)據(jù)寫入卡中,而讀卡操作則相反,先從卡中讀出加密過的數(shù)據(jù),經(jīng)過解密后得到實際的數(shù)據(jù)然后返回。具體的讀卡操作步驟如下:
(1)調(diào)用驅(qū)動程序打開讀卡器;
(2)調(diào)用驅(qū)動程序讀取卡中數(shù)據(jù);
(3)調(diào)用驅(qū)動程序關閉讀卡器;
(4)初始化.NET框架安全代碼的DESCryptoServiceProvider;
(5)用DESCryptoServiceProvider對卡中讀取的數(shù)據(jù)進行解密;
(6)返回解密后的數(shù)據(jù)。
寫卡操作步驟如下:
(1)初始化.NET框架安全代碼的DESCryptoServiceProvider;
(2)用DESCryptoServiceProvider對要寫入卡中的數(shù)據(jù)進行加密;
(3)調(diào)用驅(qū)動程序打開讀卡器;
(4)調(diào)用驅(qū)動程序?qū)⒓用芎蟮臄?shù)據(jù)寫入卡中;
(5)調(diào)用驅(qū)動程序關閉讀卡器。
ActiveX控件開發(fā)完成后,要進行打包和發(fā)布。ActiveX控件可以使用VS 2010的安裝項目進行部署,使用VS 2010創(chuàng)建Windows Form的安裝工程就可以將ActiveX的dll進行打包。打包完成后,就可以在應用程序中使用打包好的ActiveX控件了,創(chuàng)建一個Web項目,在測試頁面的HTML代碼中添加對ActiveX控件的引用,在default.aspx中輸入以下代碼即可使用:
這里的clsid就是自己生成的GUID編號。
本文基于ActiveX技術,封裝RFID的讀寫過濾功能,并詳細介紹了ActiveX控件的編寫與發(fā)布使用,結合數(shù)據(jù)庫技術,形成一種基于瀏覽器的實時數(shù)據(jù)監(jiān)控系統(tǒng),大大減少了編程的工作量,提高了開發(fā)的質(zhì)量和效率。另外出于安全性的考慮,本文通過ActiveX的安全機制保證用戶使用的是經(jīng)過驗證的程序來操作RFID設備的,具有一定的實際意義。
[1]歐陽崢崢.ActiveX技術在Web程序中的應用[J].電腦知識與技術,2008(1):73-76.
[2]彭義春,陳顯龍.基于ActiveX的WebGIS的現(xiàn)實方案[J].東莞理工學院學報,2007,14(1):81-86.
[3]潘愛民.COM原理與應用[M].北京:清華大學出版社,1999.
[4]王躍宣,蘇宏業(yè).基于COM技術的先進控制軟件開發(fā)及應用[J].化工自動化及儀表,2002,29(4):51-53.
[5]周曉光,王曉華.射頻識別(RFID)技術原理與應用實例[M].北京:人民郵電出版社,2006.
[6]梁志劍.ActiveX技術在C語言網(wǎng)絡教學平臺中的研究與實現(xiàn)[J].計算機與現(xiàn)代化,2010(1):53-55.
[7]歐勁昭,黃娟.ActiveX控件的應用及其關鍵技術[J].計算機應用研究,1999,16(12):50-52.
[8]Farrar B.ActiveX使用指南[M].劉曉丹譯.北京:機械工業(yè)出版社,1997.
[9]王利亞.ActiveX控件在網(wǎng)絡視頻監(jiān)控系統(tǒng)中的應用[J].科技信息:學術研究,2008(24):181,183.
[10]王小正.ActiveX控件在B/S結構題庫系統(tǒng)開發(fā)中的應用[J].電腦知識與技術,2008(S2):4-6.
[11]馬賽紅,朱愛紅,李連.基于ActiveX控件技術的B/S模式下公文處理的研究與實現(xiàn)[J].計算機與現(xiàn)代化,2011(7):60-63.
[12]賈玉鋒,胡迎新.利用ASP.NET和ActiveX技術實現(xiàn)Word文檔的在線編輯[J].現(xiàn)代電子技術,2004(15):46-47.
[13]張海龍.在VC++中利用ActiveX控件進行串行通信的犯法[J].網(wǎng)絡與信息,2008(4):34-36.
[14]腳本之家.使用VS2010 C#開發(fā)ActiveX控件(上)[EB/OL].http://www.jb51.net/article/27115.htm,2013-09-17.