我使用TFS版本控制和TFS Build 2010实现了持续集成。已编译的网站项目将被删除到具有版本号的共享文件夹中。
现在我有一个非常基本的问题,可能是一个愚蠢的问题。当我们通常将网站项目从VS 2010部署到网络服务器时,它会将App_Offline.htm文件上传到网站文件夹,因此不会向用户提供任何请求。发布完成后,将删除App_Offline.htm文件。在那段时间内,用户会看到停机。
如果我们在实际网站上使用CI,那么我们如何消除用户看到的中断。我相信CI的重点是用户可以看到更新的功能,而且网站永远不会失败。
这是如何实现的?如果我们将网站项目部署到根文件夹,那么现有用户将受到影响,这当然是不可取的。
我想知道VS2010推荐的做法是什么,TFS2010 Build&版本控制。
答案 0 :(得分:2)
对此没有真正的万无一失的方法,服务正常运行时间永远不是100%,这就是人们通常在“nines”中定义它的原因
但是,如果您有多个Web服务器(备份,故障转移,镜像等),您可以在它们之间推出更新,这样当您更新某些服务器时,其他服务器仍然会在线(尽管有旧服务器)版本)为用户服务。
一般来说,只有一些最大的网站必须如此谨慎地担心短暂停留几分钟,所以要确保你把精力集中在正确的地方; )
答案 1 :(得分:1)
关于在尽可能短的时间内关闭网站,我看到这个成功完成的唯一方法是使用多个站点 - 负载平衡,或同一台机器上的2个站点+在发布/预热后交换主机头。但在大多数情况下,这不值得付出努力,发布不应该删除网站超过几秒钟,在这段时间内应该有相对较少的请求。您最好尝试一些可以帮助您的用户通过网站发布的内容。
将会话移出proc。 如果用户会话存在于应用程序池中,则在发布新版本时会丢失,更改配置以将其移动到会话服务器或数据库中。
指定网站的计算机密钥 Viewstate(和cookies?)使用站点启动时生成的密钥加密,如果站点由于发布而重新启动,填写表单的任何用户都将在回发时收到无效的viewstate异常。 (注意:这可能有其他安全隐患)