Re: Question over serialization
wdhough wrote:
Hi there,
This is really a concept question. I think most of us know how to enable
backwards compatiblity. In other words a file saved in version 1, of our
app, can be opened in version two. This is relatively simple because version
2 is aware of version 1's data structure and so it can open it accordingly.
However what do u think would be the best way to open a version 2 document
in version 1? I know that MS word and lots of other apps can do this, so its
clearly do-able? My app has lots of different objects, all of which have
their own serialise methods. I use a CArchive from a file, and maybe my
understanding of the carchive is weak, but how do you know you've reached the
end of the archive that pertains to the problem.
Take the issue -
Version 1 - The CodeGuru object, saves these attributes.
CString
bool,
int
int
int
Version 2 - The CodeGuru object, saves these attributes.
CString
bool,
int
int
int
bool - saves extra bool for some new feature lets say.
Well if you read in the version 2 document in version 1, i assume you would
get this.
CString - read in fine
bool- read in fine
int- read in fine
int - read in fine
int - read in fine
this would be the end of the first code guru object so you start on the next.
CString - read in wrong because the next type would in fact be a bool.
Do you see what i mean? i hope i have explained this well. Does the
carchive have an end - of - this object flag? or do we as developers have to
implement this
Thanks really interested to see what people have to say on this
Will
Will:
I have never used binary serialization. But if you use XML and your
de-serialization code
(a) Supplies suitable defaults for missing tags
and
(b) Ignores tags it does not recognize
then you will automatically have both forward and backward compatiblity.
David Wilkinson