Подтвердить что ты не робот

Правильный способ обновления приложения RemoteAPP с помощью NGEN

У нас есть приложение RemoteAPP.NET 4.5 для Windows2008R2 NGEN-ed на сервере RDS, прибл. 300 одновременных пользователей для кластера NLB с 3 хостами.

Приложение находится в активной разработке, а развернутые сборки RemoteAPP должны быть обновлены (например, заменены новыми) довольно часто.

Как мы сейчас это делаем:

  • Переименуйте файлы, которые нужно изменить на сервере RemoteAPP, с подключенными к ним пользователями (ОС не разрешит перезаписывать файлы, если они загружены),
  • Пишите новые файлы вместо старых,
  • NGEN устанавливает новые сборки (без первой деинсталляции старых!),
  • Уведомлять пользователей (через приложение) о том, что версия приложения была изменена, и ее необходимо перезапустить,
  • Постепенно разрешить пользователям перезагружать приложение в своем темпе (одновременный перезапуск приложения приведет к увеличению загрузки дисков и ЦП, что приведет к ухудшению производительности сервера). И так для всех хостов в кластере.

После этого сервер иногда будет синим экраном с критической ошибкой Microsoft-Windows-Kernel-Power EventID 41, и я очень виню нашу практику обновления, чтобы нести за нее ответственность.

Следовательно, вопрос: какой рекомендуемый способ обновления приложения RemoteAPP и NGEN-сборка новых сборок без необходимости завершения процессов, обращающихся к старым сборкам (то есть разрешить пользователям продолжать и перезапускать, когда они захотят).

Спасибо.

4b9b3361

Ответ 1

Я рекомендую ускорить ваши веб-приложения, используя новый "Модуль инициализации приложений для IIS 7.5" и "Инициализация приложений", встроенный в IIS 8 вместо ngen.

Заявки на веб-сайт Microsoft: Инициализация приложений IIS для IIS 7.5 позволяет администраторам веб-сайтов улучшать отзывчивость своих веб-сайтов, загружая веб-приложения до поступления первого запроса.

Ссылка: http://weblog.west-wind.com/posts/2013/Oct/02/Use-IIS-Application-Initialization-for-keeping-ASPNET-Apps-alive

Ответ 2

Вы можете использовать стартовое приложение, которое публикуется через RemoteApp. Стартер, в свою очередь, запустит последнюю версию приложения.

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

  • Добавить новую папку C:\Program Files\myApp\1.0.26\
  • ngen новые сборки
  • Обновить раздел реестра, чтобы указать на новую папку
  • Launcher, при запуске, запускает новую версию приложения
  • При желании удалите старую версию, если она больше не используется

RemoteApp указывает на C:\Program Files\myApp\startApp.exe

startApp.exe начинается 1.0.26\theApp.exe