2012-07-31 138 views
2

我聽說過很多策略部署asp.net應用程序,但我不能肯定它的策略是最適合我的需要。Asp.net部署策略

我有一個asp.net應用4。我有單獨的開發/分期/生產環境(不同的web.configs)。我也需要管理sql server的變化。我可能有超過1個數據庫服務器和超過1個應用服務器來推送更改。理想情況下,我想點擊按鈕並說「部署到分期」或「部署到生產」,並將代碼/數據庫/配置文件部署到正確的服務器。理想情況下,我希望有一些進程可以在發佈錯誤的情況下回滾。

聽說XCOPY/ROBOCOPY策略,MSDeploy(現在叫Web部署?)戰略,建設MSI包來部署。

這些這似乎是對這種類型需要的最合適的?

回答

0

方法#1 如果你有一些時間花費,我建議使用CruiseControl.NET。至少有一段時間,stackoverflow團隊將其用於部署。

方法#2 就複製策略而言,我建議將7zip和ftp組合用於應用程序和媒體。 7Zip很好,因爲它允許您排除文件類型(web.config),文件夾和文件類型,並允許您以不同方式壓縮不同的文件。例如,壓縮PNG沒有意義。請注意,每次都會進行完整的部署。所以,如果你有大的媒體文件夾,我會分開處理它們。

至於數據庫,我相信你會用Redgate的SQL Compare做最好的運氣。它們是商業應用,但它們非常非常好。他們已經多次在stackoverflow播客中被提及。

  • 在開發/構建服務器上生成一個CMD文件,該文件生成master 7zip文件並將其FTP傳輸到臨時(或生產)服務器上的專用文件夾。最後,我將多次調用7zip將文件提供給一個7zip文件,對每個批次使用不同的壓縮方法。
  • 爲每臺登臺或生產服務器構建一個CMD文件。該文件將執行正確的文件備份,並將7zip文件解壓到適當的位置。

一個部署升級將是這樣的:

  • 執行您7zip的-prep命令文件,該文件將觸發FTP上傳到一個專門的FTP文件夾中的臨時服務器上
  • 執行DB對變化通過由SQL生成的腳本臨時數據庫服務器比較
  • 執行臨時服務器上7zip的提取指示文件

這是我使用的方法。我沒有投入時間去掌握CruiseControl.NET,但是當我這樣做時,我可能會用它來代替,至少對於大型應用程序來說。這不是一次單擊部署,但它允許每天進行多次高效部署(因爲我已經停止了幾年,現在已經開始)。 7zip方法很好,因爲一旦你有了你的命令文件,你就可以複製它們並且很快地將它們用於新項目。