Asp.net部署。如何推送到生产服务器

时间:2010-02-04 09:21:33

标签: asp.net deployment production staging

想象一下,我们有一个复杂的asp.net解决方案:在IIS中托管的MSSQL + ASP.NET MVC + ASP.NET Web窗体+ WCF服务。

每周一次,必须将解决方案透明地部署到单个生产服务器,以供用户使用。部署可以包括数据库方案的更改,次要的IIS重新配置,文件的替换。部署会耗费时间并可能影响正常运行时间。

如何在不中断用户或最小化停机时间的情况下进行部署?有哪些技巧和最佳实践?

(例如,切换登台/生产环境)

3 个答案:

答案 0 :(得分:0)

如果您的首要关注点是正常运行时间,您可以查看该站点的负载平衡服务器 - 可以将其取下,更新,然后重新启动,而另一个则更新。您需要查看在此方案中管理会话的方式,例如:使用sql server或state server机制。

答案 1 :(得分:0)

  • 查看最少人数使用系统的时间,然后以完成更新为目的。
  • 如果您只是将更新应用于数据库服务器,那么您只需要担心将其备份包装失败,无需将其脱机。
  • 您应该能够在不中断用户的情况下上传新页面。
  • 尽可能自动化以降低人为错误的风险,我会推荐Wix,因为它可以

答案 2 :(得分:0)

我无法提供完整的解决方案,但有一些“对我有用”:

  • 将数据库升级拆分为(a)向后兼容的更改和(b)更改。这样,您可以在旧版本的软件仍在运行时运行part(a)(添加字段,添加表,添加索引......)。对于(b)部分(改变字段类型,转换数据......),我认为不可能避免停机。尝试使大多数数据库更改不会中断。

  • 宣布停机时间,以便您的用户可以适应它。在升级时,请使用app_offline.htm feature确保用户看到一条解释此情况的错误消息。它还可确保重新加载您的应用程序。无需重新加载(即“只更换文件”)的Web应用程序的就地,无停机升级可能会导致奇怪的错误。

  • 测试升级:制作生产系统(软件和数据库)的副本,这应该在系统运行时可行。在测试系统上执行升级。如果升级过程中出现问题:修复问题,改进升级程序并重复。

相关问题