leggevo Microsoft di Best Practices: Data Contract Versioning, e affermare:DataContractSerializer: perché non rimuovere membri?
Non rimuovere componenti di dati nelle versioni successive, anche se il IsRequired struttura è stata lasciata al suo proprietà predefinita di falso nelle versioni precedenti.
Qualcuno può suggerire un motivo per questo? Non elaborano. Dal momento che dicono che va bene aggiungere membri di dati in una versione successiva, sembra che la rimozione sia soddisfacente - in effetti, la versione precedente la vedrebbe come un add.
La differenza, suppongo, è che si supponga di aggiungere nuovi membri alla fine (utilizzando la proprietà Order in DataMemberAttribute), mentre la proprietà rimossa probabilmente non sarà alla fine. Ma dicono anche che i membri mancanti saranno lasciati al loro valore predefinito durante il caricamento, quindi è chiaro che i membri mancanti sono OK.
Cosa mi manca? Quali problemi di versione-interoperabilità dovrei causare (compatibilità diretta e retrocompatibilità) se avessi reso obsoleta una funzionalità del mio prodotto e rimosso la proprietà [DataMember] che ne deriva?
Inoltre, se avessi deciso di non essere interessato alla compatibilità diretta (ad esempio, se non fossi preoccupato per le versioni precedenti che aprono i file più recenti), potrebbero ancora verificarsi tali problemi?