Лучшие практики для обновления развертывания Silverlight, который активно используется - PullRequest
4 голосов
/ 18 февраля 2010

В настоящее время я работаю над проектом SL3, где мы находимся в режиме итеративной разработки с примерно 25 активными тестовыми клиентами. Я делаю небольшие изменения в клипе из 4 новых сборок в день. Важно знать, что это приложение является критически важным бизнес-направлением для этих 25 человек, это инструмент, который они используют весь день для выполнения своей работы, поэтому они используют его постоянно и часто запускают свой браузер и приложение утром и никогда не закрывают это до конца дня.

Проблема в том, что, когда я делаю обновление приложения, у меня нет чистого способа уведомить пользователей, в большинстве случаев это нормально, так как редко я представляю изменение контракта данных или что-то, что было бы классическим ». взлом »изменить приложение / сервис. Пользователи продолжают подключаться и получат изменения при следующем обновлении.

В настоящее время мы обратились к каждому по электронной почте и попросили его принудительно обновить или закрыть браузер и снова войти в систему.

Конечно, есть лучший способ ...

Прямо сейчас мой ход мыслей состоит в том, чтобы на сервере был метод, который сравнивал бы версии клиента xap и определял, является ли используемый клиент самым последним, если да, я уведомлю пользователя и заставлю его обновить.

Что вы сделали, чтобы решить эту проблему?

Ответы [ 3 ]

1 голос
/ 18 февраля 2010

Один из способов сделать это - использовать механизм push (я использовал Kaazing Websoocket Gateway, но любой подойдет).Когда будет выпущена новая версия XAP, всем клиентам будет отправлено сообщение (вручную введенное в систему администратором или автоматически инициированное событием изменения файла XAP).В самом простом сценарии пользователю будет показано некоторое уведомление (сообщающее ему, что выпущена новая версия и приложение должно обновиться), а затем приложение обновит (просто перезагрузив страницу), сохранив состояние пользователя, если это необходимо.

0 голосов
/ 10 мая 2012

Конечно, это было нацелено на Silverlight 3, но с клиентом PollingDuplex и так далее в более новых версиях Silverlight вы можете опубликовать бит «Update Now» для клиентов и создать механизм на клиенте для предупреждения пользователя. что есть обновление, которое уже вышло ... что они должны обновить его в ближайшее время и т. д. С помощью сериализации и т. д. вы можете даже сохранить состояние, в котором они находятся, когда они закрывают приложение, чтобы перезагрузить его.

Мы сделали нечто похожее с LOB-приложением, которое мы создали, так что, когда пользователи меняют вещи, остальная часть пользовательской базы сразу же видит эти изменения. Следующим шагом будет установка флагов для изменения авторизации и обновлений «на лету», если хотите.

0 голосов
/ 18 февраля 2010

Если бы я сделал это, я бы просто все упростил. Значение конфигурации в web.config и соответствующий метод службы, который просто возвращает это значение (само значение может быть любым, но счетчик, вероятно, целесообразен). Тогда ваше приложение Silverlight может регулярно опрашивать этот метод обслуживания. Всякий раз, когда значение изменяется (что вы будете делать вручную при развертывании новой версии), просто откройте диалоговое окно, предлагающее пользователю обновить браузер или войти / выйти. Таким образом, у вас не будет , чтобы заставить их каждый раз обновляться. Если вы идете с идеей сравнения версий файлов xap, они всегда должны будут обновляться, даже для непрерывных изменений.

Если вы хотите пойти дальше, вы можете придумать какой-то механизм, позволяющий различать уровни серьезности. Например, если новое значение конфигурации будет содержать строку «update_forced», вы можете заставить пользователей перезагрузить приложение, автоматически выйдя из него (возможно, немного резким). Если он содержит строку «update_recommended», просто покажите маленький значок в верхнем правом углу, сообщая, что существует новая версия и что они должны обновиться в свое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...