2012-06-23 8 views
10

Kennt jemand irgendwelche Entwurfsmuster bei Softwareaktualisierungen? Speziell möchte ich ein Muster für die Umwandlung alter Dateien/Einstellungen in die neueste Version.Entwurfsmuster für Softwareupdates

Die beste Lösung, die ich mir vorstellen kann, wäre eine Reihe von Regeln für die Konvertierung von jeder Version zur nächsten Version (zB v1.0 zu v1.1, v1.1 zu v1.2, .. .). Um Dateien/Einstellungen auf die neueste Version zu konvertieren, müssten Sie alle Konvertierungsregeln der Reihe nach ausführen.

Das erscheint mir nicht als eine sehr elegante Art, Dinge zu tun - gibt es einen besseren Weg?

(Für Kontext, bin ich in den frühen Planungs/Entwurfsphasen eines Win8 Metro app)

Vielen Dank im Voraus

+2

Lassen Sie sich von Ihrer Sorge um Eleganz nicht täuschen - Ihre Lösung ist die beste. Der Versuch, das Problem abzukürzen und "eleganter" zu sein, erzeugt tatsächlich nur eine Duplizierung. – tallseth

Antwort

5

ich in einem System gearbeitet, die ein Versionierungssystem umfassten eine DB zu migrieren die neueste Version, und es hat so funktioniert. Die einzige Verbesserung, die wir gemacht haben, ist, dass wir manchmal alle Versionen vermeiden wollten, da es ein längerer Prozess war, so dass Sie Migrationen von jeder Version zu jeder Version definieren können, wenn Sie in Version 1.3 sind und auf die neueste Version migrieren möchten Version und Sie haben Skripte zu migrieren:

  1. 1,3 bis 1.4
  2. 1,4 bis 1,5
  3. 1,5 bis 1,6
  4. 1,6 bis 1,7
  5. 1,7 bis 1,8
  6. 1,4 bis 1,7

ich automatisch erkennen würde, dass es ein einziges Skript drei geht über Versionen 1 1,4 bis 1,7 und verwenden kann, 6 und 5, dass es nur lohnt, wenn die Migration ist langwierig, obwohl ...

Wenn Sie die Daten nicht tatsächlich migrieren müssen, sondern nur im Format der neuesten Version verwenden, können Sie dasselbe mithilfe der Adapter Pattern Objektzusammensetzung erreichen, um ein Objekt mit dem Format "1.3" in "1.8 "Format mit einer Kette von Adaptern in der Mitte.

Als Antwort auf Kommentar: Leider mussten wir die 1,4 bis 1,7 von Hand tun. Sie benötigen etwas, das ziemlich schlau ist, um optimierte Updatescripts von den einzelnen zu erstellen, ohne sie nacheinander auszuführen.

+0

+1 für gestapelte Adapter – tallseth

+0

+1, danke für die Antwort. Wenn Sie das Skript von v1.4 bis v1.7 erstellt haben, haben Sie es manuell gemacht, oder haben Sie ein automatisiertes Werkzeug dafür verwendet, da es mir so vorkommt, als ob ein Code-Optimierer von einem Compiler wäre gut in. – stormCloud