如何在不丢失未保存工作的情况下锁定 Web 应用程序进行维护?
Posted
技术标签:
【中文标题】如何在不丢失未保存工作的情况下锁定 Web 应用程序进行维护?【英文标题】:How to lock down a web application for maintenance without loss of unsaved work? 【发布时间】:2013-11-08 08:32:56 【问题描述】:我有一个在 ASP .NET 中的大型 Web 应用程序(这里的技术并不重要),目前无法锁定以进行维护,而当前用户不会丢失他们的工作。由于我之前没有实施过类似的操作,因此我想了解开发人员针对此类操作采取的一些标准预防措施和步骤。
以下是我能想到的一些问题:
是否应将每个页面重定向到“站点停机维护”页面,或者是否有更集中的方式来防止交互? 如何集中定期维护,以便在站点锁定之前锁定用户操作。从而防止丢失未保存的工作。应用程序是数据驱动的,并在业务层实现事务范围。它不使用负载平衡或复制。我可能错了,但让 BLL 处理这个问题并不“感觉正确”。任何建议或文章链接将不胜感激。
【问题讨论】:
【参考方案1】:制作维护页面的一种方法是使用 IIS 的 app_offline.htm 功能。使用此功能,您将能够向所有用户显示相同的 html 页面,通知他们有关维护的信息。
*** 中有一篇关于它的好帖子。 ASP.NET 2.0 - How to use app_offline.htm。
您可以做的另一件事是通知您的用户有计划的维护,以便他们也知道并停止使用该应用程序。
这一切都取决于您升级应用程序所需的时间。如果升级是上传新文件并且不超过一两分钟,那么您的用户很可能甚至看不到它。
【讨论】:
【参考方案2】:一个可能有帮助的无答案的答案:设计应用程序,以便它可以对其用户透明地即时升级。那么你永远不会有用户真正需要担心的维护窗口。无需锁定应用程序,因为一切正常。如果事务被丢弃,那是应用程序中的一个错误,因为有一个明确的要求是应用程序可以通过正在进行的事务进行升级,因此它已被编码以支持该功能,并且有验证该功能的测试。
以 Netflix 为例:它是否有锁定的维护窗口?不是一般公众知道的。 :-)
【讨论】:
以上是关于如何在不丢失未保存工作的情况下锁定 Web 应用程序进行维护?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 git reset 在不丢失本地更改的情况下重置未推送的提交