2009-12-03 51 views
0

我們將爲大型組織開展應用程序開發項目(.NET 3.5)。當我們開始考慮我們將在機器上進行的升級時,我們正在尋找像ClickOnce這樣的選項。跨大型組織分發應用程序升級的部署策略

我們需要的是推送模式,只要客戶機連接到網絡,服務器就可以發送更新。我相信ClickOnce是一個拉模型(儘管通過指定最低版本,我們可以推送)。另外ClickOnce只下載完整文件,它不能下載文件間的變化(字節差異)。

任何人都可以指出一個更好的工具,可以在這裏使用。如果有更好的策略,也歡迎,我們正處於項目的早期階段。

回答

1

對於更好的選項,我沒有明確的答案,但是我使用了ClickOnce並且可以提供一些建議。

ClickOnce有幾個更新選項(開始之前,開始之後,每次檢查,檢查每個X小時/天/周等)。您也可以將它們拋出並編寫代碼來檢查更新。這不是來自服務器的「推送」,但您的客戶可以輪詢更新,這將是下一個最好的事情。請記住,應用程序將不得不在更新後重新啓動以查看更改。

ClickOnce只下載已更改的文件。但是,即使只下載單個文件,進度對話框也會始終顯示應用程序的整個大小。每個人都擔心這一點,但這只是進度對話框中的一個錯誤。

最後,我非常喜歡保持簡單。過度考慮這些事情並創建一個從不需要的怪物是很容易的。我們在公司裏經歷了類似的事情。我們非常擔心用戶下載不必要的字節,我們將應用程序分解爲更多,更小的程序集。它變成了一場噩夢;應用程序難以維護,並且在客戶端執行得更糟。我們終於擺脫了這一切,浪費了幾周才結束了我們開始的地方。

我不是說你不需要你要的功能,我不知道你的情況。只要先教育自己,並知道自己在做什麼。

+0

我想我是在自我教育階段:)。我非常喜歡ClickOnce,因爲它的簡單性和肯定會完成工作。但是...客戶..呃..你知道他們想要什麼。 – theraneman 2009-12-04 05:40:24

0

我們在我的公司使用clickonce(大約有幾百名用戶在地理位置上分散)。通過指定最低版本,我們可以確保每個應用安裝在部署後自動更新。你是正確的,clickonce只下載完整文件,但只有自上一版本以來已更改的文件。如果這仍然是一個問題,您可以將應用程序分解爲更小的程序集。我認爲你也可以使用netmodules,但是Visual Studio沒有爲此提供支持。
一般來說,clickonce對我們有好處。

+0

欣賞。 Clickonce早些時候也爲我們工作。只是我在尋找更適合的東西,如果有的話。 – theraneman 2009-12-03 10:59:41

0

我只是在我的分佈式應用程序平臺之上實現這樣的服務。從本質上說我已經開發爲企業遵循這些基本原則是「推」模式:

  • 軟件升級是從服務器「管理」,而不是從客戶端,這是符合企業軟件的部署與用戶軟件相反(這是非常重要的一點)
  • 可以爲服務器上的每個客戶端應用程序定製軟件升級,即服務器可以根據需要爲每個客戶端部署獨特的配置
  • 軟件升級可以在不同時間或全部同時部署到客戶端或兩者的任意組合
  • 可以爲每個客戶端指定軟件升級版本,即不同的版本可以根據需要部署到不同的客戶端
  • 所有客戶端的所有軟件升級都可以從一臺服務器「管理」,即軟件升級「服務」在任何應用程序中都是一致的,所有應用程序都可以利用軟件升級「服務」
  • 客戶端可以實現自動軟件升級策略(應用程序在升級完成後立即重新啓動) (應用程序需要「發送」定製的「強制升級」消息「 消息」)或重新啓動(應用程序在關閉時升級,如果升級已經下載且可用)
  • 全部自動升級功能,是透明的,任何正在運行的應用程序,因爲這是所有自主後臺線程執行的所有進程間通信和文件傳輸是用我的框架處理

在本質上,這現在允許我(還是會允許我當我整理了一些東西並徹底地測試了實現)來管理由中央服務器在最初安裝後開發的任何應用程序的版本,而無需任何客戶端干預。