Asp.net部署策略

时间:2012-07-31 13:42:51

标签: asp.net deployment

我听说过很多部署asp.net应用程序的策略,但我不太确定哪种策略最符合我的需求。

我有一个asp.net 4应用程序。我有单独的开发/登台/生产环境(不同的web.configs)。我还需要管理sql server的更改。我可能有超过1个数据库服务器和超过1个应用服务器来推动更改。理想情况下,我想按一个按钮说“部署到暂存”或“部署到生产”,它会将代码/ db / config文件部署到正确的服务器上。理想情况下,我希望在发布错误的情况下还有一些回滚过程。

我听过xcopy / robocopy策略,MSDeploy(现在称为Web Deploy?)策略,以及构建要部署的MSI包。

其中哪一项似乎最适合此类需求?

1 个答案:

答案 0 :(得分:0)

方法#1 如果你有时间花,我建议使用CruiseControl.NET。至少有一段时间,stackoverflow团队将其用于部署。

方法#2 就复制策略而言,我建议在应用程序和媒体上使用7zip和ftp的组合。 7Zip很不错,因为它允许您排除文件类型(web.config),文件夹和文件类型,并允许您以不同方式压缩不同的文件。例如,压缩PNG没有意义。请注意,每次都会执行完整部署。所以,如果你有大型媒体文件夹,我会单独处理它们。

至于数据库,我相信使用Redgate的SQL Compare会有好运。它们是商业应用,但它们非常非常好。他们在stackoverflow播客上被多次提到。

  • 在开发/构建服务器上构建CMD文件,该服务器生成主7zip文件,并将其FTP到分段(或生产)服务器上的专用文件夹。我最终多次调用7zip将文件送入单个7zip文件,每个批次使用不同的压缩方法。
  • 为每个登台或生产服务器构建CMD文件。此文件将执行正确的文件备份,并将7zip文件解压缩到正确的位置。

对分段的部署将如下所示:

  • 执行7zip-prep命令文件,该文件将触发FTP上传到登台服务器上的专用FTP文件夹
  • 通过SQL Compare
  • 生成的脚本对登台数据库服务器执行数据库更改
  • 在登台服务器上执行7zip抽取命令文件

这是我使用的方法。我没有花时间去掌握CruiseControl.NET,但是当我这样做时,我可能会使用它,至少对于较大的应用程序。这不是一键式部署,但它允许每天进行多次高效部署(因为我已经连续几年不停地工作)。 7zip方法很不错,因为一旦掌握了命令文件,就可以将它们复制并快速用于新项目。