2012-06-23 3 views
10

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

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

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

(для связи, я в начале планирования/проектирования этапов приложение Win8 Metro)

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

+2

Не позволяйте вашему беспокойству об элегантности вас обмануть - ваше решение является лучшим. Попытка сократить проблему и быть более «элегантной» на самом деле просто создает дублирование. – tallseth

ответ

5

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

  1. 1,3 до 1,4
  2. 1,4 до 1,5
  3. 1,5 до 1,6
  4. 1,6 до 1,7
  5. 1,7 до 1,8
  6. 1,4 до 1,7

я автоматически обнаружит, что он может использовать один скрипт для перехода через три версии 1,4 до 1,7 и использовать 1, 6 и 5. Вот только стоит, если миграция является длительным, хотя ...

Если вам не нужно действительно переносить данные, а просто используйте их в формате последней версии, вы можете добиться того же, используя Adapter Pattern, используя композицию объекта для преобразования объекта с форматом «1.3» в «1.8 ", используя цепочку адаптеров посередине.

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

+0

+1 для штабелированных адаптеров – tallseth

+0

+1, спасибо за ответ. Когда вы создали скрипт от версии 1.4 до v1.7, вы делали это вручную или использовали автоматическое средство для его выполнения, поскольку оно поражает меня как нечто вроде того, что оптимизатор кода из компилятора будет хорош в. – stormCloud

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