小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

通用軟件自動更新平臺構(gòu)建研究

 老魏的書架 2012-01-11
摘 要:針對桌面應(yīng)用程序在發(fā)布之后版本難以維護(hù)的問題, 提出了基于HTTP協(xié)議的解決方案,并對該解決方案進(jìn)行了深入研究。提取出通用的自動更新平臺,對解決版本維護(hù)難題有一定的參考意義。
  關(guān)鍵詞:自動升級;更新平臺;網(wǎng)絡(luò)更新

  1 問題的提出
  
  隨著桌面應(yīng)用程序新版本的不斷發(fā)布,客戶端運行的版本也越來越雜,版本、數(shù)據(jù)結(jié)構(gòu)的兼容也成為后續(xù)開發(fā)必須考慮的問題,而且兼容性方面的問題越來越多,開發(fā)及維護(hù)成本越來越高。
  
  2 問題的分析
  
  隨著因特網(wǎng)的普及,通過網(wǎng)絡(luò)來實現(xiàn)桌面應(yīng)用程序的更新升級已經(jīng)成為可能。在程序中加入在線更新的功能將能有效地解決前面討論的版本維護(hù)難題。
  關(guān)于通信協(xié)議,可以編寫程序?qū)崿F(xiàn)Socket通信,也可以采用比較成熟的HTTP協(xié)議。考慮到諸多因素,筆者選擇了HTTP協(xié)議。
  
  3 HTTP協(xié)議特點
  
  HTTP協(xié)議(超文本傳輸協(xié)議)的主要特點可概括如下:
  (1)簡單快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。 
  (2)由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。 
  (3)靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。 
  (4)無連接:無連接的含義是限制每次連接只處理一個請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。 
  (5)無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。
  另外,筆者在實驗中發(fā)現(xiàn)很多網(wǎng)絡(luò)都設(shè)置了防火墻,考慮到安全問題,網(wǎng)絡(luò)管理員會屏蔽很多端口。而對于HTTP最常用的80端口通常是開放的,這也是筆者選擇HTTP協(xié)議的一個重要因素。
  
  4 數(shù)據(jù)流程及數(shù)據(jù)結(jié)構(gòu)
  
  實際應(yīng)用中可以對流程進(jìn)行擴(kuò)展,例如自動程序線程定時啟動、開始更新前檢查上次留下的緩存、斷點續(xù)傳等。
  該平臺中有多個軟件產(chǎn)品,存儲在U_Products表中。每個軟件產(chǎn)品有多個用于客戶端驗證的序列號,存儲在U_Clients。序列號是客戶端的憑證,只有授權(quán)了的序列號才能訪問平臺。而且序列號表還標(biāo)出了該序列號允許升級的版本范圍。同時,每個軟件產(chǎn)品對應(yīng)的多個文件,通過服務(wù)端腳本輸出一個文件列表??蛻舳诉B接上服務(wù)器后首先要做的就是下載屬于它的文件列表。
  文件列表用于比較客戶端文件與服務(wù)器上的各個文件的新舊。其中的時間戳是主要比較字段,文件名用于記錄定位。
  
  5 客戶端工作流程
  
  需要指出的是表1列出的是基本的流程。實際中客戶端工作流程會比表1復(fù)雜的多。
  主程序啟動之后,創(chuàng)建自動升級程序的線程。該線程在后臺運行,首先讀出產(chǎn)品的序列號,通過URL參數(shù)傳值的形式傳到Web端。此處傳值可以更加靈活,可以在用戶允許的前提下,將更多的信息傳給服務(wù)器。例如當(dāng)前軟件版本,客戶端操作系統(tǒng)版本,客戶端計算機(jī)硬件信息等等。
  運行在Web端的腳本響應(yīng)請求,判斷序列號是否合法,即序列號是否正確,是否過期。通過之后輸出與該序列號對應(yīng)的軟件的所有文件列表。
  自動升級程序開始通過HTTP協(xié)議下載這個列表。下載完畢后讀出上一次升級之后,保存下來的文件列表,并與下載下來的列表進(jìn)行對比,通過時間戳對比找出新文件。通常只要時間戳不一樣就將文件加入的需要下載的文件列表中,也可以采用時間戳轉(zhuǎn)成浮點數(shù)后大小對比的策略。例如平臺中放的是穩(wěn)定的正式版,而有些客戶端已經(jīng)通過其他途徑得到新版本更高的測試版。第二種策略就可以避免高版本文件通過升級之后版本降低。這也是為什么采用時間戳,而不是文件MD5唯一哈希值的原因。
  得到新文件列表之后,再次通過HTTP協(xié)議逐一下載新文件到緩存目錄中。下載新文件的URL由文件編號和序列號共同確定。每下載一個文件,更新一次本地的文件列表。這樣如果出現(xiàn)網(wǎng)絡(luò)中斷,用戶退出等異常,下次啟動可以跳過已經(jīng)下載過的文件。雖然這不是嚴(yán)格意義上的斷點續(xù)傳,但在一定程度上提高了程序的容錯能力。
  數(shù)據(jù)全部下載完畢之后詢問用戶是否立即應(yīng)用更新。如果是則退出主程序,將緩存文件夾中的文件移動到主程序所在的目錄中,并覆蓋。否則保持緩存中的文件,供下次升級使用。
  
  6 改進(jìn)及結(jié)束語
  
  網(wǎng)絡(luò)狀況很差的時候更新所需要的時間很長。對于該問題,可以對文件進(jìn)行逐個ZIP壓縮,通過HTTP協(xié)議傳輸壓縮流,而不是文件本身的數(shù)據(jù)流??蛻舳讼螺d之后進(jìn)行解壓縮。此處是對文件逐個壓縮,而不是整體打包。因為整體打包之后會出現(xiàn)客戶端只需要更新一個文件而不得不下載整個壓縮包的情況。而且整體打包也對斷點續(xù)傳提出了更高的要求。
  另外出于某種原因的考慮,有時需要更多考慮數(shù)據(jù)安全。例如未授權(quán)的序列號不能獲得新版本的文件,且一個序列號只能對應(yīng)一個客戶端。對此可以采用動態(tài)序列號的方式,即下載完文件列表時或更新結(jié)束時,都將原有的序列號作廢,動態(tài)創(chuàng)建一個新的值。
  另外對于重大缺陷的修復(fù)更新,更希望能強(qiáng)制更新。對此可以在自動更新程序發(fā)現(xiàn)更新時,強(qiáng)制停止主程序的響應(yīng)。通過這一策略甚至可以做到所有的新版本發(fā)布之后,客戶端迅速跟進(jìn),并全部更新到最新版本。
  筆者使用微軟的C#語言來實現(xiàn),經(jīng)過反復(fù)測試,發(fā)現(xiàn)ZIP壓縮之后,對網(wǎng)絡(luò)要求低了很多,更新效率提高很多。通過動態(tài)序列號及強(qiáng)制更新策略也基本能保證客戶端版本可控。
  
  參考文獻(xiàn)
 ?。?]C.J.Date.數(shù)據(jù)庫系統(tǒng)導(dǎo)論[M].北京:機(jī)械工業(yè)出版社,2000.
 ?。?]殷人昆.數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++描述)[M].北京:清華大學(xué)出版社,1999.
 ?。?]莫勇騰.深入淺出設(shè)計模式(C#/Java版)[M].北京:清華大學(xué)出版社,2006.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多