2010-09-27 9 views
1

Nous avons donc une application qui doit enregistrer et charger son état à partir du disque.Enregistrer le format de fichier

Nous avons l'état dans un objet actuellement et cet objet est sérialisé directement au format XML avec l'objet XML sérialiseur. Je suis passé par là avec l'autre développeur sur le projet et il semble penser que c'est la façon idéale de s'y prendre. Il affirme que le fait d'avoir le modèle sur disque exactement comme la représentation en mémoire est idéal. Je pense que la façon dont les données sont sauvegardées sur le disque doit être découplée de sa représentation en mémoire afin que nous puissions modifier l'une ou l'autre sans que ce soit un changement de format pour le format sauvegardé. Sans oublier que le sérialiseur XML exige que tout soit en lecture/écriture, où dans l'objet il peut y avoir de nombreux cas qui doivent être en lecture seule.

La question est là une bonne pratique en ce qui concerne la sérialisation dans les données de la mémoire au format XML. Vaut-il mieux hydrater votre objet directement à partir du XML, ou découpler le processus en utilisant un objet dont le seul but est d'alimenter le sérialiseur XML?

+0

un numéro de version dans le XML et le soutien à lire sur les anciennes versions? – kenny

+1

Quelle est exactement la question? – villecoder

Répondre

0

Il semble que vous souligniez les aspects négatifs de sa solution, mais pas vraiment une bonne alternative.

Donc, soit:

a) Utiliser sa solution jusqu'à ce qu'il ne fonctionne plus

ou

b) Venez avec votre propre solution qui répond aux questions que vous avez soulevées. Une chose qui pourrait valoir la peine d'être explorée: vous pouvez regarder une base de données d'objets comme db4o, qui pourrait gérer l'enregistrement/chargement des objets et la plupart des changements que vous apportez à la classe, mais qui pourrait ne pas être idéale dans le cas où vous voulez pouvoir éditer directement l'état sur le disque (vous pouvez le faire, mais vous devrez passer quelques cerceaux).

+1

J'ai une solution, utilisez un second objet dont le seul but est de représenter les données à sérialiser. De cette façon, l'objet principal peut être plus flexible dans la façon dont les données sont stockées. –

+0

Oh, je vois, vous voulez utiliser une sorte d'objet intermédiaire. Cela pourrait fonctionner. –