2013-08-14 2 views
0

У нас есть приложение windows C#, .NET 4.0, которое мы развертываем на терминальном сервере. (Разработан с использованием VS 2010). Это приложение использует несколько служб WCF, сидящих на другом сервере.Удаленное развертывание приложений

Наши пользователи получают доступ к интерфейсу через сеанс удаленного рабочего стола. (Все они имеют файл .RDP на своих рабочих столах.)

Мой вопрос касается развертывания этого интерфейса. В настоящее время, если нам нужно выполнить экстренное развертывание в рабочее время, нам нужно отключить всех пользователей, подключенных к нему (поскольку они используют DLL, которые нам нужно заменить). Очевидно, это не идеально. Мы работаем в довольно критически важной для бизнеса среде, поэтому эти развертывания неизбежны. Я исследовал ClickOnce, но прочитал, что вы не можете использовать это с приложением терминальных служб here. (Какой смысл имеет смысл, поскольку по существу одно приложение «доступно» несколькими клиентами ...)

Я хотел бы иметь возможность «тихого» развертывания, при котором пользователь ничего не знает об исправлении до тех пор, пока не перезапустится их экземпляр приложения. Я не уверен, что это возможно?

Буду признателен за любые рекомендации или предложения по этому вопросу!

ответ

2

Да, я делаю это все время с помощью приложения RD - вам просто нужно переместить или переименовать библиотеки DLL, а не удалять их. Windows позволяет перемещать и переименовывать, когда используются библиотеки DLL, но не позволяет удалить их. Если вы используете установщик Windows для развертывания вашего приложения, он автоматически выполнит перемещения (и удалит старые версии при следующей перезагрузке системы).

Как только вы замените DLL таким образом, существующие сеансы продолжат использовать старые, переименованные версии, а новые сеансы будут использовать новые версии. Конечно, в зависимости от того, сколько DLL у вас есть, сколько времени требуется вашему приложению для загрузки их в память и сколько активности у вас на вашем сервере, вы можете столкнуться с сценарием, когда приложение загружает некоторые старые DLL, а некоторые новых, когда вы находитесь в середине их обновления, но это, вероятно, будет редкостью.

+0

Дэн, ты мой герой! Большое вам спасибо - это работает как сон. Спасибо за такой ясный и краткий ответ. –

+0

Это интересно, я знал, что вы можете сделать этот метод «переименования» с исполняемыми файлами, но не знали, что он работает с DLL. – Ads

Смежные вопросы