摘要:頻繁斷連性、通信不對稱性、用戶數據訪問模式多變性、移動終端能源有限性是移動計算環境的典型特征。如何能在如此“苛刻”的條件下保證數據訪問的高效性、時效性和安全性是研究的重點。文章詳細分析了智能客戶端技術在移動計算環境中特點和優勢,在此基礎上,提出了實現智能客戶端的一些關鍵問題及其解決方案,最后對智能客戶端的安全性問題作了介紹。
關鍵詞:智能客戶端;移動計算;智能設備;Web服務;數據集
0 引言
隨著計算機技術、無線通信技術、移動終端技術的發展,移動計算技術作為一種新型的技術應運而生。移動計算技術給人們對信息的訪問帶來了極大的方便。人們可以利用移動終端設備方便地從信息源訪問所需信息。移動計算環境中用戶規模龐大,通信的上下行鏈路不對稱,通信鏈路的頻繁斷連性等給移動計算環境中數據的組織、分發帶來了極大的挑戰。如何能在此“苛刻”的環境中提高數據訪問效率、降低數據的訪問代價是一個重要的研究課題。.NET平臺上的智能客戶端技術(smart Client),充分利用現有各種客戶端開發技術的優點,使得移動應用的開發更為高效、便捷。本文論述了智能客戶端技術在移動計算環境中的優勢,并具體給出了一些關鍵問題的解決方案,最后對智能客戶端的安全問題做了介紹。
1 移動計算環境下面臨的問題
(1)移動環境下網絡的自適應
無線網絡環境中,網絡通斷的處理是移動計算系統必須要解決的問題。對于一般網絡斷開的情形,經常被當成一種網絡錯誤來處理,導致系統的異常中止。而在無線狀態下,斷連應該當成一種特定的網絡通信狀態來處理,短暫的網絡中斷不應該終止,系統應仍能按照業務邏輯使用本地保存的數據進行計算,待網絡重新聯通后和服務器進行數據同步和計算結果的提交,實現無縫的離,在線切換。
(2)客戶端程序的部署和更新
在移動計算平臺中,客戶端應用程序部署在各種移動智能設備上,由于設備的多樣性,軟件部署必須具備跨平臺能力,即需部署方式簡單,又能充分利用本地硬件資源,減少無線網絡數據傳輸量。
(3)客戶端數據緩存
移動計算通常需要在本地緩存數據。當無線網絡連接不可用時,緩存數據提供應用程序脫機工作所需的數據,保證應用程序仍然可以正常運行。
(4)計算數據的同步與沖突處理
由于移動計算的需要,系統應提供本地修改數據的能力,這就要求客戶端數據的更改應與服務器端數據同步。同樣,服務器數據有可能被多個客戶端更改,因此,服務器數據的更改也必須同步到其他客戶端。在數據同步的過程中,有可能發生數據沖突,因此,必須考慮如何同步數據和處理數據沖突。
(5)信息的多樣性處理
為了在各種無線終端上提供計算和協作能力,要求系統的信息能夠被多態顯示,為此系統要為計算數據提供多態性的結構化存儲能力,使系統能夠在特定的終端下提供恰當的信息內容和顯示視圖。

(6)移動終端的人機界面
移動計算系統需要一個更友好的人機界面。大量無線終端的出現,使得傳統的人機界面、交互界面不能滿足移動用戶的需要;另外,移動便攜設備本身的性能也受到了很多限制。在這樣的情況下,圖形用戶界面技術也受到了影響,因此,需要針對無線設備采用適合的用戶界面技術,使移動設備人機界面更加靈活,提供更好的用戶體驗。
2 智能客戶端設計特征
(1)充分利用本地資源
智能客戶端(smart Client)應用程序能充分利用本地資源,例如,用于存儲、處理或數據捕獲的硬件(例如,閃存、CPU或者攝像頭),能充分發揮客戶端的優勢,減輕服務器的負擔,最大化地利用本地資源,響應速度快。
(2)具備離線的數據存儲能力
無論是否連接到Intranet/Internet,智能客戶端應用程序都可以正常工作。在沒有網絡連接或網絡連接時斷時續時,智能客戶端能夠利用本地緩存和處理進行操作。在重新連接到服務器后,智能客戶端將按照應用程序邏輯允許的方式智能地更新數據。Web服務使智能客戶端能夠利用行業標準(例如。XML,HTTP和SOAP)與任何類型的遠程系統交換信息。
(3)智能安裝和更新
智能客戶端的部署模型允許將解決方案存儲到企業網絡或受信任的服務器上,當授權用戶點擊相應的鏈接時將自動下載相關代碼并安裝。新版本的應用程序發布到服務器上后,當用戶在客戶機上再次使用該應用程序時會自動下載并更新應用程序。這種方式使用戶能像對于Web應用程序一樣簡單方便地進行部署和更新,解決了傳統C/S架構部署更新困難的問題。
(4)客戶端設備靈活性
智能客戶端可以部署在PC、便攜式電腦、Tablet PC或其他智能設備上。能夠感知目標設備的功能和使用環境,并定制應用程序,提供最適合的功能。.NET框架和NET框架壓縮版(.NET Compact Framework)一起提供了一個用來生成智能客戶端應用程序的通用平臺。
根據智能客戶端應用程序所面向的平臺,可以將這些應用程序劃分為三大類:①Windows智能客戶端應用程序;②Office智能客戶端應用程序;③移動智能客戶端應用程序。
3 智能客戶端在移動計算環境中關鍵技術的實現
3.1 網絡狀態的檢測
為了動態地監測網絡連接狀況,對于不同的連接狀況,客戶端可以采取不同的工作方式,在線或離線工作,在具體的設計中,可以使用Net Framework 2.0中的NetworkChange類和NetworkInterface類來實現網絡連接的監測。Network-Change類可以使應用程序在網絡接口(也稱為網卡或網絡適配器)的Internet協議(IP)地址更改時收到通知。NetworkIn-terface類提供網絡接口的配置和統計信息。相關代碼可以查閱文獻[3]。
3.2 客戶端數據的緩存
智能客戶端通常使用數據集(Dataset)處理數據,因此,可以將數據集序列化到本地文件。數據集提供ReadXML和Wri—teXML方法,可以將數據集中的數據寫入XML文件中。但是,XML文件中的數據都是明文,沒有安全性可言,在需要對本地數據進行保護的場合并不適用。另外,XML文件僅僅保存了數據,而對于數據集的一些狀態(例如DataRow.RowState)無法保存,因此,當客戶端從本地文件載入數據到數據集中,在與服務器進行數據同步時,無法通過DataSet.GetChanges方法獲得客戶端對數據集所做過的修改。
因此,有必要實現一個專門的序列化類(serializationHelper)和數據保護類(Data Protection)來實現客戶端數據集的序列化及數據的保護。具體的代碼實現可以查閱文獻[4]。
3.3 數據同步策略
當客戶端數據或者服務器數據發生變化時,應該及時進行同步,保證客戶端和服務器數據的一致。
智能客戶端對本地數據進行更改后,本地數據集(Cli-ent-DataSet)調用GetChanges方法獲得已更改的數據(Cli—entChangedDataSet),然后將已更改的數據和最后同步時間(LastSyncDate)通過Web服務提交給服務器。服務器將客戶端傳來的已更改數據合并到數據庫,同時,服務器根據客戶端的最后同步時間,在服務器上查找在該時間之后服務器已經更新了的數據,并將這些數據(Server-ChangedDataSet)傳回客戶端。客戶端獲得服務器傳回的更新數據后,將這此數據合并到客戶端的數據集中。同時,更新最后同步時間。圖l對客戶端和服務器的數據同步做了簡單的示意。
3.4 數據的沖突處理策略
在更改客戶端數據并與服務器進行同步時,由于服務器上保存的數據可能發生改變,會導致數據沖突。因此,需要采用某種機制來確保數據沖突能夠得到適當的處理,并且最后得到的數據是一致和正確的。在NET框架中,可以使用數據集(DataSet)和適配器(DataAdapter)來實現開放式并發處理。
當適配器調用Update方法更新數據時,會觸發RowUpdated事件,通過對事件參數狀態(e.Status)的檢查,可以檢測到當前是否發生了數據沖突,對沖突數據作相應的處理。具體的數據沖突處理過程如下所示:
假設數據集中有一張Customer表和Conflict表。
(1)客戶端與服務器進行數據同步。當服務器得到從客戶端傳來的數據后,調用Update方法進行數據更新,如果發生數據沖突,則在觸發的RowUpdated事件中,可以檢測到事件參數狀態:e.Status為UpdateStatus.ErrorsOccurred。此時,在事件處理函數中對沖突數據進行處理:首先將發生沖突的服務器端的customer數據添加到返回給客戶端數據集的Customer表中。再將發生沖突的客戶端customer數據添加到返回給客戶端數據集的Conflict表中。然后,將e.Status置為UpdateStatus.Continue,繼續更新數據,直到所有數據更新完畢后。將數據集返回給客戶端。
(2)當客戶端得到從服務器返回的數據集后,檢查數據集中的Conflict表中有無沖突數據,如果有,表示有數據沖突發生,則從Customer表和Conflict表中分別取出發生沖突的服務器端的和客戶端的customer數據呈現給用戶,讓用戶進行選擇,是保留服務器端的數據還是保留客戶端的數據。之后根據用戶的選擇進行數據處理。
(3)如果用戶選擇保留服務器端的數據,則清除客戶端的沖突數據,并將服務器端的數據合并到客戶端數據集中。如果用戶選擇保留客戶端的數據,則清除服務器端的沖突數據,并將客戶端的沖突數據重新合井到客戶端數據集中,等待下次的數據同步,再將客戶端的數據重新同步到服務器上。
4 安全性問題
安全性問題是部署程序的熱點。智能客戶端更新時從網絡上下載裝配件,如果一個黑客說服或者誘使用戶下載惡意代碼,而該用戶的用戶賬號具有很高的權限,那系統就對危害門戶洞開了。為了提高智能客戶端的安全性,除了傳統的身份驗證和授權等方式之外,在NET平臺上引入了代碼訪問安全這一機制。
CAS(code Access Security,代碼訪問安全),是指CLR強制執行的為裝配件指定基于屬性的可信度等級,例如數字證書、源站點、URL等,.NET Framework只允許已知的或受信的.源代碼執行。可以使用NET Framework Configuration工具,將程序集的站點添加到可信任站點清單中,并且提高信任站點的安全級別,或者選擇運行庫安全策略提高程序集的信任級別,或者發布安全策略級別部署包,賦予程序集運行所需要的最低權限,杜絕超越權限的代碼執行,從而保護系統不受到惡意攻擊。這種安全策略也稱為“在最小權限下運行”策略。
5 結束語
本文針對移動計算環境所面臨的特殊情況,提出了智能客戶端技術在移動計算中實現的一些關鍵問題,并給出了相應的解決方法。目前,智能客戶端技術在智能設備上應用的研究在全球范圍內仍處于起步階段,諸多智能客戶端思想在智能設備上的解決方案還沒有達到業界共識。但隨著.NET技術的進一步成熟和Web技術的更廣泛應用,智能客戶端技術在移動計算等智能設備應用上必將有更廣泛的前景。