2012-06-23 15 views
10

Qualcuno è a conoscenza di schemi di progettazione relativi agli aggiornamenti software? In particolare mi piacerebbe un pattern per convertire vecchi file/impostazioni nella versione più recente.Motivo di progettazione per gli aggiornamenti software

La soluzione migliore che posso pensare sarebbe avere un insieme di regole su come convertire da ogni versione alla prossima versione (ad esempio v1.0 a v1.1, v1.1 a v1.2, .. .). Quindi per convertire i file/le impostazioni nella versione più recente, eseguirai tutte le regole di conversione in ordine.

Questo non mi sembra un modo molto elegante di fare le cose - c'è un modo migliore?

(per il contesto, io sono nella pianificazione iniziale/fasi di progettazione di un'applicazione Metro Win8)

grazie in anticipo

+2

Non lasciatevi ingannare dall'eleganza - la soluzione è la migliore. Cercare di collegare il problema ed essere più "elegante" in realtà crea solo duplicazioni. – tallseth

risposta

5

ho lavorato in un sistema che ha incluso un sistema di controllo delle versioni per la migrazione di un DB l'ultima versione, e ha funzionato così. L'unico miglioramento che abbiamo fatto è che a volte volevamo evitare di passare attraverso tutte le versioni, dal momento che si trattava di un processo lungo, quindi è possibile definire migrazioni da qualsiasi versione a qualsiasi versione se si è nella versione 1.3 e si desidera migrare all'ultima versione la versione e si dispone di script per la migrazione da:

  1. 1,3 a 1.4
  2. 1,4-1,5
  3. 1,5-1,6
  4. 1,6-1,7
  5. 1,7 a 1,8
  6. 1,4-1,7

avrei rilevano automaticamente che si può utilizzare un unico script per andare oltre tre versioni 1,4-1,7 e utilizzare 1, 6 e 5. Questo vale solo se la migrazione è lunga però ...

Se non è necessario eseguire la migrazione dei dati, ma è sufficiente utilizzarli nel formato dell'ultima versione, è possibile ottenere lo stesso utilizzando Adapter Pattern utilizzando la composizione oggetto per trasformare un oggetto con il formato "1.3" in "1.8" msgstr "formato utilizzando una catena di adattatori nel mezzo.

In risposta al commento: Purtroppo, abbiamo dovuto eseguire da 1,4 a 1,7 a mano. Avrai bisogno di qualcosa di abbastanza intelligente per poter comporre script di aggiornamenti ottimizzati da quelli individuali, senza eseguirli in modo sequenziale.

+0

+1 per adattatori impilati – tallseth

+0

+1, grazie per la risposta. Quando hai creato lo script dalla v1.4 alla v1.7, lo hai fatto a mano, o hai usato uno strumento automatico per farlo, dato che mi sembra il tipo di cosa che un ottimizzatore di codice da un compilatore sarebbe bravo a. – stormCloud