摘要:本文介紹了智能客戶端的概念,分析了消防信息管理系統總體架構,并分別闡述在服務器和客戶端的設計與實現。
關鍵詞:智能客戶端;管理信息系統;數據沖突
中圖分類號:TP315文獻標識碼:A文章編號:1009-3044(2008)14-20842-01
1 智能客戶端簡介
目前管理信息系統的實現方式大致分為兩種:C/S(Client/Server)和B/S(Browser/Server)。前者稱為胖客戶端,它充分利用客戶端資源,減輕服務器壓力;但它必須為每個客戶端修改注冊表、更新組件等。后者稱為瘦客戶端,它把數據層、業務邏輯層等組件都集中于服務器,部署方便,但服務器壓力重而客戶端資源閑置。微軟的智能客戶端正是這兩種架構的優勢融合技術的典型代表。
微軟對它的定義是:智能客戶端是易于部署和管理的客戶端應用程序,它們通過統籌使用本地資源和到分布式數據資源的智能連接,從而為用戶提供適應的、快速響應的和豐富的交互式體驗。
智能客戶端是一個連接到互聯網的設備,它允許用戶的本地應用程序通過Web服務和服務器應用程序交互,從而將胖客戶端和瘦客戶端應用程序的優點很好的結合在一起。智能客戶端具有以下全部或部分特征:利用本地資源;利用網絡資源;支持偶爾連接的用戶;提供智能安裝和更新;提供客戶端設備靈活性。
2 系統目標
消防信息管理系統主要目標是對與消防通信指揮工作有關的各項信息進行綜合管理,為消防部門在火警受理、火警撲救、日常管理等工作過程中提供信息支持。這些信息包括:消防實力信息、消防水源信息、重點單位信息、易燃易爆品信息等。在對某些信息進行采集時,數據采集人員需要到現場才能準確有效的采集相關數據。但消防中隊、重點單位、水源等信息源的地理位置分散,因此數據采集人員需要在無法連接到網絡的情況下進行工作,再在以后某一時刻將客戶端數據與服務器端數據進行同步。
3 系統總體架構
消防信息管理系統解決方案包括三個組件:數據庫、Web Service和使用Windows窗體類生成的智能客戶端應用程序。其中數據庫選用的是Microsoft SQL Server 2000,開發工具是Microsoft Visual Studio 2005。它與傳統的客戶端/服務器架構最大的不同就在于使用了Web Service作為其數據訪問的中間層。
智能客戶端應用程序通過將用戶名和密碼傳遞給身份驗證Web Service來對用戶進行身份驗證。身份驗證成功后,Web Service將向智能客戶端應用程序傳回一個加密票,該加密票將被存儲到服務器緩存中,并在將來每次請求數據時提交給數據Web Service。數據Web Service將驗證該加密票并處理數據請求。
數據庫由數據Web Service訪問,出于安全考慮,Web Service僅使用存儲過程訪問數據庫上的數據。通過數據Web Service完成數據庫的檢索和更新,可有效的實現程序模塊間的松散耦合,確保只有經過驗證的客戶端用戶才能查詢數據庫中的敏感數據。Web Service運行在公共服務器上,任何應用程序都可以通過Internet或Intranet對其進行訪問。但只有能夠提供有效用戶名和密碼的應用程序能夠使用它們。
4 服務器端設計與實現
消防信息管理系統服務器端由數據庫和Web Service兩部分組成。系統使用Microsoft SQL Server 2000數據庫存儲共享數據,所有的數據庫查詢和更新都使用存儲過程,提供與其他層的有效隔離和高安全性。系統采用面向服務的體系結構,Web Service負責處理身份驗證和來自于客戶端應用程序的數據請求。
4.1 Web Service服務器
在智能客戶端應用程序中,大多使用Web Service來作為數據訪問的中間層。Web Service平臺是一套標準,它定義了應用程序如何在Web上實現互操作性。可以認為Web Service是基于網絡的、分布式的模塊化組件,它執行特定的任務,遵守具體的技術規范,這些規范使得Web Service能與其他兼容的組件進行互操作。
消防信息管理系統采用面向服務的體系結構,由Web Service作為中間層負責身份驗證和數據處理,并與后臺數據庫服務器交互,來檢索數據或驗證用戶身份。
4.2 身份驗證Web Service
身份驗證Web Service的執行過程是:用戶提供的用戶名和密碼,通過身份驗證Web Service遞交給數據庫,數據庫使用一個存儲過程驗證用戶名和密碼,如果驗證成功,返回嵌套了用戶ID的唯一加密票。如果驗證用戶名和密碼失敗,則不返回任何內容。
4.3 數據Web Service
數據Web Service提供了客戶端應用程序用以檢索和更改數據的功能,并且提供了身份驗證服務,能夠驗證用戶的每個請求。數據Web Service的每種公共Web方法都要提供調用者的身份加密票。在返回任何數據之前,在加密票緩存中檢查票是否存在。如果存在,說明在最近某端段時間內對用戶名和密碼進行了驗證;否則票將無效或過期,如果票無效或過期,會從票中提取用戶ID,并執行身份驗證過程重新驗證用戶ID后,再向下執行。
5 客戶端設計與實現
5.1 數據層組件
數據層類DataLayer處于用戶界面和數據Web Service中間,用戶界面的數據請求會通過數據層類間接調用。數據層類相當于用戶表示層與業務邏輯層之間的代理類,由它調用業務邏輯層功能。數據層類實現了程序界面與數據的松散耦合,系統與數據相關的操作,如數據檢索、修改、身份驗證等,都由數據層間接調用Web Service來完成。
5.2 數據沖突處理
數據沖突處理主要是處理并發,并發是多個用戶訪問相同數據的管理策略。并發主要分為開放式并發和保守式并發。本系統采用的是開放式并發。
當客戶端嘗試更新或刪除數據庫中的數據時,若這些數據自該客戶端上次訪問它們以來已被更改,或者根本不存在,就會發生數據沖突。通常可以通過引發錯誤或者簡單地使用客戶端版的記錄重寫數據庫中的任何內容來處理。第一種方案會導致客戶端的工作無效。第二種方案帶來的風險是忽略和刪除自從客戶端上次檢查數據庫以來輸入的重要數據。在該系統中對此問題引入了一個簡單的解決方案,主要依靠.NET框架中的ADO.NET庫的DataSet對象中的功能。
5.3 脫機—聯機工作模型
消防信息管理系統可以處于脫機或聯機兩種工作模式,工作模式的選擇是由單擊脫機/聯機按鈕來完成的。程序首先檢查是否存在本地脫機數據文件和更改數據文件,如果這些文件存在,將加載它們到DataSet并以脫機模式運行。若這些文件不存在,程序將以聯機模式運行,直接通過調用數據Web Service與數據庫進行交互。
參考文獻:
[1] Microsoft MSDN技術文檔.智能客戶端定義.http://www.microsoft.com/china/msdn/developercenter/smartclient/SmartClientDefinition.aspx.
[2] 劉海波,鐘志農,陳宏盛,等.智能客戶端技術研究及應用[J].兵工自動化,2006(11).
[3] David Hill,Brenton Webster,Edward A.Jezierski.智能客戶端體系結構與設計指南.http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/cover.mspx?mfr=true.