邢永峰
摘要:隨著互聯(lián)網(wǎng)的飛速發(fā)展和軟件信息化進(jìn)程的不斷加深,企業(yè)與客戶對于軟件的性能上的快速和內(nèi)容上的豐富以及離線處理功能要求也不斷提高,因此為了滿足市場需求,智能客戶端誕生。首先本文就概念與特性兩個方面對智能客戶端進(jìn)行介紹,其次解釋其脫機功能的實現(xiàn)流程,最后介紹應(yīng)用offline application block技術(shù)對智能客戶端的實現(xiàn)。該文著重介紹基于.net平臺開發(fā)智能客戶端的詳細(xì)設(shè)計與實現(xiàn)。
關(guān)鍵詞:智能客戶端;離線處理 ;offline application block
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)35-8531-02
Analysis and Implementation of the Smart Client Offline Processing
XING Yong-feng
(Nanyang Institute of Technology, Nanyang 473000,China)
Abstract: With the rapid development of Internet software and deepening the process of information, business and customers for fast and rich content as well as offline processing on the performance of the software requirements are also rising, so in order to meet market demand, Smart Client born. In this paper, the concept and characteristics of the first two aspects of the smart client presentation, followed by explanation of the process to achieve its offline capabilities, and finally describes the application offline application block technology for smart client. This article focuses on the detailed design and implementation of .net platform based on smart client.
Key words: Smart client;offline processing; offline application block
隨著互聯(lián)網(wǎng)的飛速發(fā)展和軟件信息化進(jìn)程的不斷加深,軟件設(shè)計的架構(gòu)也從客戶端/服務(wù)器(C/S)模型發(fā)展到瀏覽器/服務(wù)器(B/S)模型。世間沒有十全十美的事物,同樣此兩個架構(gòu)模型在各自的領(lǐng)域都有各自的優(yōu)勢,但是在某些需求方面存在很大的不足。社會生活不斷發(fā)展,此兩種架構(gòu)模型對于新出現(xiàn)的市場需求無論在功能還是在性能方面都無法全面滿足,對于企業(yè)用戶對軟件性能上的快速需求以及內(nèi)容上的豐富要求以及無法聯(lián)網(wǎng)情況下的離線處理能力的要求不斷提高,智能客戶端秉承這一使命誕生。在市場需求方面,信息化對社會生活的影響越來越深入,在各行各業(yè)軟件普及的程度逐漸廣泛,同時對于offline的要求也日益增強,比如超市收銀、保險推銷等行業(yè)的工作人員都要求在離線的狀態(tài)下使用客戶端。這樣對客戶端的要求比較高,既要擁有客戶端/服務(wù)器(C/S)模型PC應(yīng)用程序的功能,又需要瀏覽器/服務(wù)器(B/S)模型的快捷便利,但是單獨應(yīng)用此兩種模型無法實現(xiàn),于是微軟針對此類情況提出了面向客戶端的智能客戶端的理念,應(yīng)用offline/online無縫快速切換的方案,解決了此市場需求問題。同時基于Web Services的特性更使得智能客戶端的整合能力異常強大,被認(rèn)為是未來企業(yè)應(yīng)用集成最有潛力的架構(gòu)模式。
智能客戶端具有智能選擇處理功能,能夠在無法聯(lián)網(wǎng)的狀態(tài)下進(jìn)行離線處理數(shù)據(jù),因此要滿足離線工作的需求必須能夠?qū)μ幚淼臄?shù)據(jù)進(jìn)行暫時緩存或長期存儲,該文對此的解決方式是:當(dāng)需要對數(shù)據(jù)進(jìn)行暫存時,利用DataSet(ADO.NET)緩存數(shù)據(jù);當(dāng)長時間無法聯(lián)網(wǎng)則將數(shù)據(jù)以XML文件的形式存儲在磁盤中,XML存儲形式的優(yōu)勢在于.NET在DataSet中提供了很多處理XML文件的方法,方便使用。這兩種方式對于數(shù)據(jù)的緩存需求都需要DataSet來實現(xiàn)。在具體的項目開發(fā)過程中,客戶端可以在啟動開始請求下載數(shù)據(jù),或者其它使用時自定義事件觸發(fā)下載。
1 離線脫機處理
客戶端的參考數(shù)據(jù)使用DataSet對象進(jìn)行緩存,它是一個“鍵—值”對的結(jié)構(gòu),其中包括Key、Value、Priority等屬性,它的結(jié)構(gòu)特點使得應(yīng)用程序可以很方便地對其進(jìn)行存取與管理。本客戶端擁有online和offline兩種模式。客戶端的offline和online的狀態(tài)確定是由兩方面來確定的:一是用戶手動切換完成,二是由網(wǎng)絡(luò)狀況以及服務(wù)管理器決定,此二種方式是互相補充的,其控制方式利用服務(wù)偵測模塊和網(wǎng)絡(luò)模塊實現(xiàn)。如圖1為智能客戶端offline狀態(tài)的運行方式。
1.1 online模式向offline模式轉(zhuǎn)換
當(dāng)智能客戶端處于online工作狀態(tài)時,加入用戶手動由online狀態(tài)切換到offline狀態(tài)或者由于網(wǎng)絡(luò)狀況或服務(wù)器狀態(tài)的因素必須進(jìn)行脫機處理,此時智能客戶端需要從online模式轉(zhuǎn)換到offline模式。轉(zhuǎn)換流程如圖2所示。
現(xiàn)在把操作朋友信息作為例子解釋下智能客戶端有online模式向offline模式切換,首先,客戶端在online狀態(tài)下運行,由于網(wǎng)絡(luò)的緣故,現(xiàn)需要轉(zhuǎn)換到offline狀態(tài),程序把操作的數(shù)據(jù)緩存到本地(DsFriend中),然后進(jìn)行離線操作,在離線模式下工作時,如果有對緩存數(shù)據(jù)(DsFriend)的更改,就把受影響的DataRow被標(biāo)記為“Changed”,與此同時,將一個全局m_IsOnLine對象設(shè)置為false,以防止以后應(yīng)用程序?qū)⒏陌l(fā)送給Web 服務(wù)。當(dāng)推出客戶端時,數(shù)據(jù)已經(jīng)更改,則通過XML文件進(jìn)行緩存DataRow數(shù)據(jù),接著推出程序,若數(shù)據(jù)沒有進(jìn)行更改,則直接退出。
1.2 offline模式向online模式轉(zhuǎn)換
在網(wǎng)絡(luò)狀態(tài)連接的情況下,用戶需要進(jìn)行online模式工作時,客戶端能夠處于offline狀態(tài)下更改的數(shù)據(jù)重新寫入數(shù)據(jù)庫,流程如圖3所示。
在此處同樣用上述的例子說明客戶端由offline模式向online模式轉(zhuǎn)換。當(dāng)網(wǎng)絡(luò)和服務(wù)偵測可以online操作時(m_IsOnLine=true),系統(tǒng)把在offline期間修改的數(shù)據(jù)數(shù)數(shù)據(jù)庫同步,如果不存在數(shù)據(jù)沖突則直接同步成功;如果數(shù)據(jù)存在問題,則客戶端把有問題的數(shù)據(jù)信息顯示給客戶,由客戶來決定是否對問題數(shù)據(jù)進(jìn)行處理,在處理完所有問題數(shù)據(jù)后,再進(jìn)行同步數(shù)據(jù)庫,與此同時刪除磁盤中緩存的數(shù)據(jù),接著客戶端轉(zhuǎn)為online模式。
2 小結(jié)
智能客戶端的offline狀態(tài)轉(zhuǎn)換,是有網(wǎng)絡(luò)偵測模塊檢查完網(wǎng)絡(luò)狀況后決定的。當(dāng)網(wǎng)絡(luò)狀況無擁擠現(xiàn)象,此時能夠很好的與服務(wù)器進(jìn)行數(shù)據(jù)交換,當(dāng)網(wǎng)絡(luò)狀況發(fā)生擁擠或斷開時,此時需要對數(shù)據(jù)進(jìn)行本地磁盤緩存, 當(dāng)進(jìn)行緩存時利用DataSet對暫時性數(shù)據(jù)進(jìn)行緩存,長期緩存時磁盤保存數(shù)據(jù)的形式是XML形式,但此兩種形式的數(shù)據(jù)都需要通過DataSet進(jìn)行實現(xiàn)。在對程序調(diào)試的過程中,客戶端在offline狀態(tài)下可以運行正常,并且在offline狀態(tài)下客戶端自身的數(shù)據(jù)修改、同步服務(wù)器的數(shù)據(jù)以及在處理問題數(shù)據(jù)都能夠運行良好,滿足預(yù)定的要求。
參考文獻(xiàn):
[1] (美)Walther S.ASP.NET技術(shù)內(nèi)幕[M].北京:機械工業(yè)出版社,2002.
[2] Smart Client Definition http://msdn.microsoft.com/smartclient/.
[3] 周宏艷.淺談智能客戶端及其應(yīng)用[J].沈陽航空工業(yè)學(xué)院學(xué)報,2005(6).
[4] Smart Client Offline Application Block,http://msdn.microsoft.com/library/default.asp.