我有一個小型 AngularJS Web 應用程序,它在內部網路的資訊亭中運行。我的任務是在不停機的情況下以可透過 Web 介面遠端控制的自動化方式進行部署。由於它是一個小型應用程序,因此我們沒有負載平衡器或類似的設定。我看過兩個選擇,
選項1: 下載資料夾中的應用程式版本,並將虛擬目錄的實體路徑變更為新版本的資料夾路徑,這可以使用 Microsoft.Web.Administration 程式庫和下列程式碼來實現,
ServerManager sm = new ServerManager();
Site site = sm.Sites["Default Web Site"];
site.Applications[virtualDirectory].VirtualDirectories["/"].PhysicalPath = newPath;
sm.CommitChanges();
在這種方法中,
- 這種轉變將會多快反映出來?
- 某些資訊亭仍在使用舊版本應用程式的可能性有多大?
- 在進行切換的短時間內是否有可能出現停機?
- 在此期間向 IIS 發出的任何請求都會傳回錯誤嗎?
選項2:使用 IIS 的 URL 重寫功能。基本上,我將以程式設計方式向應用程式的 web.config 添加新的重寫規則,以重定向到不同的子資料夾,該子資料夾將是應用程式的較新版本。
在這種方法中,
- URL 重寫規則反映並開始重寫的速度有多快?
- 某些資訊亭仍在使用舊版本應用程式的可能性有多大
- 將重寫規則新增至 web.config 期間是否有可能出現停機?
- 在此期間向 IIS 發出的任何請求都會傳回錯誤嗎?
- URL 重寫會帶來效能損失嗎?
請幫助我。這兩種方法都不適合我的任務嗎?對於這個要求還有其他替代方案嗎?
答案1
MSDeploy 應該能夠處理自動化和遠端部署部分。如果您沒有其他伺服器或其他方式以自動方式將應用程式流量傳送到不同的虛擬目錄,那麼不停機就不是一個實際的請求。這就像說我有 1 輛車,但我希望能夠在它在商店裡時繼續駕駛它。如果您想在汽車停在商店時開一輛車,您將需要另一輛車,無論是臨時的還是其他的。