Как заблокировать веб-приложение для обслуживания без потери несохраненной работы?

У меня есть большое веб-приложение в ASP .NET (не то, чтобы технология здесь имеет значение), которое в настоящее время не может быть заблокировано для обслуживания без потери работы текущих пользователей. Поскольку я не реализовывал нечто подобное раньше, я хотел бы услышать о некоторых стандартных мерах предосторожности и шагах, предпринимаемых разработчиками для такой операции.

Вот некоторые из вопросов, которые я могу придумать:

  • Должна ли каждая страница перенаправляться на страницу "Сайт закрыт на техническое обслуживание" или существует более центральный способ предотвращения взаимодействия?
  • Как централизовать плановое обслуживание таким образом, чтобы пользовательские операции блокировались до блокировки сайта. Таким образом предотвращая потерю несохраненной работы.

Приложение управляется данными и реализует объемы транзакций на бизнес-уровне. Он не использует балансировку нагрузки или репликацию. Возможно, я ошибаюсь, но это не "правильно", когда BLL справляется с этим. Любые предложения или ссылки на статьи будут оценены.

2 ответа

Решение

Одним из способов создания страницы обслуживания является использование функции app_offline.htm в IIS. Используя эту функцию, вы сможете показывать одну и ту же HTML-страницу всем своим пользователям, уведомляя их об обслуживании.

Здесь, в Stackru, есть хороший пост. ASP.NET 2.0 - Как использовать app_offline.htm.

Еще одна вещь, которую вы можете сделать, - уведомить своих пользователей о том, что запланировано техническое обслуживание, чтобы они также знали и прекратили использовать приложение.

Все зависит от того, сколько времени вам нужно обновить приложение. Если обновление загружает новые файлы и занимает не более минуты или двух, скорее всего, ваши пользователи даже не увидят его.

Ответ без ответа, который может быть полезен: разработайте приложение так, чтобы оно могло быть прозрачно обновлено для пользователей. Тогда у вас никогда не будет окна обслуживания, о котором действительно нужно беспокоиться пользователям. Нет необходимости блокировать приложение, потому что все продолжает работать. Если транзакции отбрасываются, это ошибка в приложении, поскольку существует явное требование, чтобы приложение можно было обновлять с помощью выполняемых транзакций, поэтому оно было закодировано для поддержки этого, и существуют тесты, которые проверяют эту функциональность.

Рассмотрим в качестве примера Netflix: есть ли у него заблокированное окно обслуживания? Не то, что широкая публика когда-либо знает.:-)

Другие вопросы по тегам