Выпуск/Обновление приложения Strategyfor Бизнес-приложение Silverlight?

Я интересен на слушании, если другие обратились к управлению версиями для приложений Silverlight.

У меня есть бизнес-приложение, которое должно быть выпущено вскоре andam касавшийся тем, как "выпустить" обновления этого приложения. Обычно пользователи этого приложения оставят приложение открытым весь день (и потенциально всю ночь), не перезагружая его.

Что, если существует потребность, должно выпустить изменение, которое включает изменение интерфейса веб-сервиса? Как это может быть развернуто w/o порождение ошибок на стороне клиента?

Мы стали настолько привыкшими к развертыванию приложений ASP.NET, просто отбросив последний код сервера. Моя единственная идея в настоящее время включает число версии клиента и периодический таймер на проверить на обновления.

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

Спасибо, Mike

8
задан Jersey Dude 28 January 2010 в 23:04
поделиться

5 ответов

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

-121--1706288-

Я думаю, что для «максимально компактного способа» вам потребуется некоторое сжатие, но Huffman Coding может быть не таким способом, как я думаю, он лучше всего работает с алфавитами, у которых есть

Извлечение Арифметическое кодирование - оно работает на битах и может адаптироваться к динамическим входным вероятностям. Я также вижу, что есть BSD-лицензированная Java библиотека , которая сделает это для вас, которая, кажется, ожидает одни биты в качестве входных данных.

Я полагаю, что для максимального сжатия можно объединить каждый внутренний список (с префиксом его длины) и запустить алгоритм кодирования снова по всей партии.

-121--2771400-

Я только что ответил на вопрос о том, как убедиться, что XAP-файлы не кэшированы браузером, что может помочь:
Запретить кэширование Silverlight xap прокси-сервером

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

1
ответ дан 6 December 2019 в 02:24
поделиться
..

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

Если да, и я признаю, что это не было много думал, если, например, вы должны внести изменения в веб-службу, которые нарушают текущий релиз, вы могли бы иметь новую версию веб-службы бок о бок, так что пользователи не будут выбрасывать до тех пор, пока таймер истек, и единица работы завершена? Или это также говорит об очевидном?

0
ответ дан 6 December 2019 в 02:24
поделиться

Я бы порекомендовал вам использовать решение, подобное упомянутому в приложении Arch Guide:

The Guide Глава Я имею в виду см. «Вопросы развертывания».

  • Разделите приложение на логические модули, которые можно кэшировать отдельно и которые можно легко заменить , не требуя от пользователя загрузки всего приложения. снова.
  • Версии ваших компонентов.
0
ответ дан 6 December 2019 в 02:24
поделиться

Рассматривали ли вы сохранение дуплексного режима опроса WCF канала, который предупреждает приложение, когда ему нужно перезагрузить? Кроме того, вы можете направлять вызовы WCF прямо в виртуальный каталог, содержащий «сопряженные» вызовы. Например:

Приложение Silverlight, размещенное в «xxxx \ Default.aspx» Silverlight обращается к WCF в «xxxx \ Version2 \ DataPortal.svc» DataPortal.svc обращается к GAC (или в противном случае базовая) сборка, которая может определить, какая версия может обрабатывать какие вызовы.

Таким образом, если вы обновитесь до «x.x.x.x \ Version3 \ DataPortal.svc», вы все равно сможете выполнять вызовы для версии 2, предполагая, что эти вызовы содержат код для преобразования их в концепцию версии 3.

Это помогает в тех случаях, когда ваше бизнес-приложение имеет динамическую загрузку xap («основной», «клиентский», «инвентарный» и т. Д.), И вы хотите выпустить их независимо.

0
ответ дан 6 December 2019 в 02:24
поделиться

Для серверного кода, то есть конечных точек, все работает как обычно. для xap, я думаю, у вас есть несколько вариантов в зависимости от того, как вы справляетесь со связью. У вас может быть запрос, содержащий номер версии, и если сервер был обновлен, заставьте некоторый код перезагрузить клиента, немного неуклюжий, беспорядочный, но выполнимый. Возможно, более чистым решением было бы управлять сеансом клиентов, который предположительно является неотъемлемой частью запросов к backedn. При развертывании новой версии вы можете аннулировать сеанс клиента, возможно, принудительно обновив страницу с помощью настраиваемой логики. Если ваш протокол является push-базой, вы можете отправить клиенту команду делать то, что вы хотите, для многих систем, которые работают весь день, вполне вероятно, что эта инфраструктура будет существовать (если вы хорошо ее построили :)). Например, наш уровень обслуживания абстрагируется от моделей репозиториев и моделей представлений, в нашем случае мы могли бы отправить выход из системы или, возможно, конкретную команду, чтобы задействовать некоторую настраиваемую логику на клиенте, сообщающую, что приложение обновляется, и обновить ваш браузер, когда закончите. Наша оболочка легкая, поэтому наши модули (в основном другие xap) могут обновляться вовремя для обновления.

0
ответ дан 6 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: