Asp.net mvc 设置暂存和生产环境,最大限度地减少简单主机的停机时间

Asp.net mvc 设置暂存和生产环境,最大限度地减少简单主机的停机时间,asp.net-mvc,deployment,azure,production-environment,staging,Asp.net Mvc,Deployment,Azure,Production Environment,Staging,我有一个ASP.NET MVC 3应用程序,目前托管在Windows Azure上。我有一个介绍性的特别订阅套餐,几个月都是免费的,但现在我已经开始付费了,它的价格竟然如此昂贵(平均150欧元/米!)。这对于一个短期内无法盈利的网站来说实在是太多了,所以我决定转向一家正规的托管提供商(DiscountASP.Net) 不过,我将真正错过的一件事是Azure提供的分离的暂存和生产环境,以及零停机环境交换 我的问题是,在传统提供商上托管时,如何“模拟”登台环境?在最大限度地减少新部署的停机时间方面,

我有一个ASP.NET MVC 3应用程序,目前托管在Windows Azure上。我有一个介绍性的特别订阅套餐,几个月都是免费的,但现在我已经开始付费了,它的价格竟然如此昂贵(平均150欧元/米!)。这对于一个短期内无法盈利的网站来说实在是太多了,所以我决定转向一家正规的托管提供商(DiscountASP.Net)

不过,我将真正错过的一件事是Azure提供的分离的暂存和生产环境,以及零停机环境交换

我的问题是,在传统提供商上托管时,如何“模拟”登台环境?在最大限度地减少新部署的停机时间方面,我的最佳选择是什么

谢谢


<强> Update:< /强>我选择的答案不是因为我认为这是最好的方法,而是因为这是对我来说最有意义的方法。

< P>我使用DISCUSPASP自己。当然,这是一个非常基本的托管,有点落后于时代。但我发现创建一个子目录并发布我的beta/test/任何版本都非常有效。它既不花哨也不漂亮,但确实完成了任务

为此,您需要首先创建子目录,然后进入控制面板并告诉DASP该目录是一个应用程序。然后,您还必须考虑目录的Web.CONFIG将是它自己和父节点的组合。你还必须考虑这个子目录的Roopts.txt,并且一般保护它不受好管闲事的人的影响。 您可能也可以通过子域实现这一点,这取决于您的域的设置方式

另一个选择:appharbor?他们有一个免费的计划。如果你能在他们的免费计划范围内工作,它可能会很好(我从未使用过它们,但目前有兴趣尝试它们)

1)获得一个自动部署工具。有大量的免费/开源软件,价值百万/十亿美元的公司实际用于其生产环境


2) 获取与第一个相同的第二个托管包。使用它作为您的暂存,然后在暂存通过时重新部署到生产环境。

在放弃Windows Azure之前,您可以做一些节省成本的事情来降低每月的账单。例如:

  • 如果同时具有Web角色和工作角色,请将两者合并。在Web角色中运行后台处理、队列处理等(在OnStart()中执行耗时的启动,然后添加run()覆盖以调用队列处理等)
  • 考虑新的超小型实例,它的成本不到小型实例的一半
  • 在确信生产代码运行正常后删除登台部署。但请将cspkg放在blob存储中,以便随时重新部署

问题是,离开Azure的全部目的是最大限度地降低成本,因此,增加第二个托管帐户的成本并不是我所期待的。如果您要使用的软件包的价格不到昂贵软件包的一半,那么您已经走在了前面。此外,我可以想象,托管服务会有一个这样的软件包交易将允许您在第二台服务器上获得折扣。无论如何,您的阶段需要尽可能靠近prod,否则您就失去了阶段的目的。谢谢,我也在考虑这些问题,因为没有更好的选择并考虑到成本。部署到“生产”时,您如何处理停机时间?我只是在晚上或周末更新生产。我认为这是一种非常常见的方法。我的应用程序针对的是我的公司,而不是普通公众,因此我可以利用实际的停机时间。我实际上只有一个web角色,而且确实总是在将登台部署升级到生产后删除它。无论如何,成本都很高这个额外的小实例可能有点帮助,但是你需要2个实例来符合SLA,我实际上会通过放弃Azure来节省几百欧元。我实际上喜欢这个平台,但是它对我的站点来说还没有意义。公平的。考虑一件事:当你移动到一个折扣胡斯特时,你将处于一个单一的INS中。如果机器崩溃(他们将不得不让你回到另一个机器上),你可以对Azure做同样的事情,并接受这样一个事实:在操作系统升级、硬件移动等过程中,你会定期看到几分钟的停机时间。这是值得思考的。。。