局域網在線更新的各種優化

局域化的在線更新嘗試過多次。使用過多種方案。


現在進行總結:

一:局域網環境:

  1:數據庫。ip,用戶名,密碼 有時會調整。比如兩年一次算好的。

  2:共享文件服務器。同上,運維經常更改IP,上線下線服務器。

  3:web服務器。同上。

二:其它規則說明:

  1:客戶端程序,兩種:有員工使用的前臺程序,無人值守的後臺程序。

  2:對於ip的變更,配置App.config是比較常見的方式,但是如果佈署的後臺程序太多,逐一調整是很痛苦的事。儘可能用自動化的方式完成。

  3:爲了方便上傳程序的操作,在線程序的程序清單存儲在數據庫裏。每個程序的下載清單放在下載目錄的XML裏。


三:上傳下載存儲的選擇:

 1:方案一:

       共享目錄存放需要更新的數據。上傳和下載都在這裏進行。缺點也很明顯

       1:容易被攻擊。

       2:在用戶在進行更新時,文件被鎖,無法進行上傳。

 2:方案二:

       佈署一個WEB上傳服務,然後共享文件設爲只讀,提供下載。缺點是:

      1:因爲安全問題,有的員工可以訪問HTTP,但不可以訪問共享文件夾。所以無法正常更新。

 3:方案三:

      全部通過HTTP進行上傳和下載服務。

      做到了這一步,其實都可以在公網上更新了。


四:客戶端程序進行在線更新操作。

 1:首先程序不能覆蓋自己,所以寫一個獨立的在線更新就是必要的了。比如命名爲update.exe。

    2:爲了簡化維護起見,更新程序不設配置文件,信息全放在exe裏。

   3:客戶端程序上可以添加“在線更新”命令,執行時就是調用 update.exe {程序名}。然後關閉自己。

   4:update.exe等待執行程序退出後,進行下載操作,覆蓋客戶端程序。


五:客戶端的啓動檢查更新提示

   1:其實比較好的方式是先啓動update.exe。但這個配置比較煩瑣。不考慮。

   2:首先,客戶端要檢查自己是否要更新。然後提示客戶是否要更新。然後決定是否調用update.exe後退出。

     2.1:方案一:寫一個下載類,在裏面進行更新的檢查和彈出對話框。缺點:

               程序有多個,萬一URL發生變更,所有程序都要修改,維護量比較大。

     2.2:方案二:寫一個DLL提供給各程序,封裝相關的操作,缺點:

               如果DLL更新了,需要重新發布所有程序,或者要去各個服務器和用戶機器上替換DLL。

     2.3:方案三:折中方案,前臺程序支持啓動檢查,後臺程序通過點擊update.exe更新。

     2.4:方案四:在update.exe裏增加檢查模式。有更新則提示是否有更新程序。然後返回用戶的選擇。

               客戶端以檢查模式啓動啓動update.exe,檢查其返回值,如果爲1,則再次調用執行更新。


六:無縫切換環境。

   1:這裏指的是發佈服務器的IP發生了變更。怎麼讓所有的客戶端程序知道這一點,並無縫切換。

   2:按照上面的設計,工作量全在update.exe上

        2.1:首先設置一個切換開關,決定是用前環境 ,還是新環境。這個值可以存在數據庫裏。方便各方操作。


七:update.exe的自我更新。

   1:讓客戶端程序更新update.exe是不錯的選擇。缺點是:

       所有客戶端程序都要增加相關操作。拆中方案就是隻讓前臺程序支持。

   2:所以可以考慮讓update.exe更新自己,檢查到自己要更新了。下載到臨時目錄裏,然後啓動它,由後者覆蓋自己。


八:佈署update.exe

    前臺程序啓動時自動下載update.exe

   後臺程序則是在佈署時複製一個update.exe過來,沒想到更好的辦法。


九:進一步的考慮:

    數據庫是爲了方便各程序同步。  對update.exe來說,可以只訪問http。數據庫操作封裝到Web上。進一步簡化操作。

    缺點是:如果web變遷,原來可以把新的web存到數據庫。現在就沒地方存了。也就是說數據庫和Web並存時可以互相支持變遷。

    至於說兩個Web並存幾天,會出現這種情況:服務器換IP而已,所以不能並存。

    如果讓update.exe緩存新的url,也是一種方案。只是違反了只有一個文件的原則。

    不知道以後又會出什麼新情況。

    



      


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章