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

Шаблон проектирования обновлений программного обеспечения

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

Лучшим решением, о котором я могу думать, было бы иметь набор правил для преобразования из каждой версии в следующую версию (например, v1.0 до v1.1, v1.1 - v1.2,...). Затем, чтобы преобразовать файлы/настройки в последнюю версию, вы должны выполнить все правила преобразования в порядке.

Это не кажется мне очень элегантным способом делать вещи - есть ли лучший способ?

(Для контекста я нахожусь на ранних этапах планирования/проектирования приложения Win8 Metro)

Заранее спасибо

4b9b3361

Ответ 1

Я работал в системе, которая включала систему управления версиями для переноса БД на последнюю версию, и она работала именно так. Единственное улучшение, которое мы сделали, заключается в том, что мы иногда хотели избежать прохождения всех версий, поскольку это был длительный процесс, поэтому вы могли определять миграции из любой версии в любую версию если вы в версии 1.3 и хотите перейти на последнюю версию, и у вас есть сценарии для миграции из:

  • 1.3 - 1.4
  • 1.4 до 1.5
  • от 1,5 до 1,6
  • от 1,6 до 1,7
  • от 1.7 до 1.8
  • от 1.4 до 1.7

Я бы автоматически обнаружил, что он может использовать одиночный script, чтобы переходить через три версии с 1.4 на 1.7 и использовать 1, 6 и 5. Это стоит того, если миграция длинна, хотя...

Если вам не нужно действительно переносить данные, но просто используйте его в формате последней версии, вы можете достичь того же, используя Adapter Шаблон с использованием композиции объекта для преобразования объекта с форматом "1.3" в формат "1,8" с использованием цепочки адаптеров в середине.

В ответ на комментарий: К сожалению, нам пришлось делать от 1,4 до 1,7 вручную. Вам понадобится что-то довольно умное, чтобы иметь возможность составлять оптимизированные сценарии обновлений из отдельных, не выполняя их последовательно.