Deployment 如何部署Web应用程序

Deployment 如何部署Web应用程序,deployment,asp.net-mvc-2,Deployment,Asp.net Mvc 2,我们有一个内部网络系统,处理我们公司的大部分业务。成百上千的用户整天都在使用它,它的优先级非常高,而且必须始终运行。我们正在考虑迁移到ASP.NETMVC2;目前,我们使用web表单。使用web表单的好处在于,我们可以即时发布单个web页面,而不是部署整个应用程序 我很想知道其他人是如何部署他们的应用程序的,同时仍然让用户可以访问它们。在VisualStudio中使用部署工具可能会导致暂停。我正在寻找一种超快速的方法 例如,如果您有高优先级的bug修复,是否明智的做法是将web表单与MVC混合,

我们有一个内部网络系统,处理我们公司的大部分业务。成百上千的用户整天都在使用它,它的优先级非常高,而且必须始终运行。我们正在考虑迁移到ASP.NETMVC2;目前,我们使用web表单。使用web表单的好处在于,我们可以即时发布单个web页面,而不是部署整个应用程序

我很想知道其他人是如何部署他们的应用程序的,同时仍然让用户可以访问它们。在VisualStudio中使用部署工具可能会导致暂停。我正在寻找一种超快速的方法

例如,如果您有高优先级的bug修复,是否明智的做法是将web表单与MVC混合,用代码隐藏的web表单替换视图,直到您发布下一个适当的版本(不是web表单)为止

我也在同一台服务器上看到过其他解决方案,即让同一个web应用程序并行运行,或者更改IIS中的根目录,或者更改web.config以指向不同的文件夹,但问题是,即使是为了简单的错误修复,您也必须执行整个构建和部署

编辑:详细说明如何部署应用程序而不会对用户造成任何中断


其他人是怎么做的?

在多台服务器上运行多个网站实例。最好的方法是拥有一个生产环境、一个测试环境和一个开发环境。您可以在每次有新版本时创建测试用例并运行负载,如果您可以通过所有测试,请将版本移到生产环境中;)

我想您也可以不编译地运行MVC应用程序?只需在运行时替换.cs/views等

Web设置卸载/安装非常快,但会杀死应用程序池。。这可能会引起问题。取决于网站的构建方式


最平滑的方法是在两台服务器上运行它,并将会话存储在sql server或共享状态。然后你可以把S1放下并修补它=>把S1重新放上去,把S2放下=>把S2修补起来,然后再把它放上去。Al认为如果对代码的会话部分进行任何重大更改,这可能不起作用

您可以有两个物理服务器,每个服务器都运行IIS并托管站点的副本。或者,您可以在同一服务器上的不同IIS端点下运行站点的两个副本。 无论是哪种方式,你都需要至少两份制作中的网站副本

我称之为AB开关方法

首先,让每个生产站点使用不同的IP地址。在您公司的DNS中,向其中一个IP添加一个条目集,并给它一个非常短的TTL。然后,您可以更新站点B,还可以通过点击IP地址对站点进行预测试/预热。当它准备就绪时,将您的DNS切换到新站点B。一旦您的TTL过期,您可以关闭站点A并更新它


使用共享会话状态将有助于最大限度地减少用户在站点之间的转换。

是的,但问题是如何在不中断用户的情况下将其投入生产?是的,我希望这就是答案。您也不需要两台服务器,您可以在一台服务器上运行它,并通过asp实例共享会话状态,这意味着您不必使用SQL,因此它的速度要快得多,因为它是“InProc”。我不建议使用DNS来切换实例。您确定您的所有客户端都将在什么时候解析新的IP?例如,FireFox浏览器有自己的DNS缓存,因此用户访问旧IP的时间可能比您预期的要长得多。加上短TTL增加DNS查找。使用一些SLB技术,这样您就可以拉出节点进行维护,而不必担心DNS传播和缓存问题。