У нас есть приложение RemoteAPP.NET 4.5 для Windows2008R2 NGEN-ed на сервере RDS, прибл. 300 одновременных пользователей для кластера NLB с 3 хостами.
Приложение находится в активной разработке, а развернутые сборки RemoteAPP должны быть обновлены (например, заменены новыми) довольно часто.
Как мы сейчас это делаем:
- Переименуйте файлы, которые нужно изменить на сервере RemoteAPP, с подключенными к ним пользователями (ОС не разрешит перезаписывать файлы, если они загружены),
- Пишите новые файлы вместо старых,
- NGEN устанавливает новые сборки (без первой деинсталляции старых!),
- Уведомлять пользователей (через приложение) о том, что версия приложения была изменена, и ее необходимо перезапустить,
- Постепенно разрешить пользователям перезагружать приложение в своем темпе (одновременный перезапуск приложения приведет к увеличению загрузки дисков и ЦП, что приведет к ухудшению производительности сервера). И так для всех хостов в кластере.
После этого сервер иногда будет синим экраном с критической ошибкой Microsoft-Windows-Kernel-Power EventID 41, и я очень виню нашу практику обновления, чтобы нести за нее ответственность.
Следовательно, вопрос: какой рекомендуемый способ обновления приложения RemoteAPP и NGEN-сборка новых сборок без необходимости завершения процессов, обращающихся к старым сборкам (то есть разрешить пользователям продолжать и перезапускать, когда они захотят).
Спасибо.