2009-03-06 24 views

Respuesta

1

Todo esto depende de su aplicación. ¿Es una aplicación distribuida, donde las aplicaciones antiguas pueden encontrar nuevos objetos de datos de una base de datos central u otra fuente? (Al igual que las versiones anteriores de aplicaciones de oficina necesita tener algunas maneras de tratar con formatos de documentos más recientes.)

Si es así, la serialización y deserialización de encargo con el esquema de numeración explícita versión, yo diría. Pondría metadatos explícitos en cada elemento y atributo, indicando si un lector debe entender el elemento/atributo (y los valores predeterminados si no). Por supuesto, esto puede consumir bastante espacio e incrementar la complejidad del código ...

Pero la respuesta realmente depende de por qué está serializando en una base de datos. ¿No estás interesado en usar la base de datos para sus capacidades relacionales? De lo contrario, una solución de mapeo O/R podría ser de interés.

0

No eliminar/cambiar el nombre de las propiedades. Solo agrégalos.

Asigna valores predeterminados a todas las propiedades.

Esto garantizará que el serializador xml pueda deserializar el xml antiguo en un nuevo objeto, y ese objeto tendrá valores "sanos".

0

Lo que Alex Reitbort dice.

También puede implementar la interfaz para manejar ISerializable de

2

tener un número de versión de esquema en el objeto serializado valor antiguo. Con la deserialización personalizada, primero compruebe el atributo de versión y, si resulta ser una versión anterior, actualícelo al esquema más reciente antes de deserializar.

+0

Creo que esta es la solución más flexible. –

2

Look here esta charla sobre las mejores prácticas en el control de versiones de datos de WCF, esto es un poco más específico de lo que realmente desea, pero estos patrones resuelven el mismo problema que el suyo, puede usarlos en cualquier tecnología que desee.

Cuestiones relacionadas