Je to vlastně proces při kterém se ukládají objekty do souboru aby se při dalším spuštění programu mohly znovu načíst a dále používat. Bude to použito k ukládání místností v žvb2. Nejčastěji se provádí XML serializace nebo také binární (zápis informací ve dvojkové formě do souboru). XML je docela fajn a dá se snadno editovat, ale já to moc nemusím, nelíbí se mi jak se to cele prochází při zpracování. Nějaké to node a spol. Binární serializace je mi o dost bližší. Používá jej RunUO které používá žvb1. Každá třída má svou metodu serialize a deserialize ve které provádí zápis ale také čtení z datového proudu. Hodnoty musí být zapsány a potom vyzvednuty ve stejném pořadí to je snad jediné úskalí této metody. Já jsem nakonec vzal právě binární serializaci přímo z RunUO a jen ji trochu promazal a upravil. Snad se to smí. Níže je jakási moje úvaha o tom jaký způsob přesně použít. Jsou v zásadě 3 o kterejch jsem uvažoval aniž bych musel číst nebo hledat řešení od někoho jiného, jak to obvykle dělám.
do jednoho souboru:
bin soubor
Typ komponenty
data
Při chybě nebo ztrátě typu máme totální smůlu a je to celé v háji.
do dvou souboru:
bin soubor idx soubor
data typ
start záznamu
délka záznamu
Při ztrátě typu nebo chybě přeskočíme daný blok a pokračujeme dalším. Při chybě v indexu máme smůlu.
do tří souborů - ala RunUO:
bin soubor idx soubor pdb soubor
data id typu typy podle id
start záznamu
délka záznamu
Při ztrátě typu se prostě jen ignoruje to dané id, při chybě v indexu máme smůlu.
Serialization is process that save objects states into file/s and than load them and use them in future. Most common ways is use XML or writing binary files. XML is quite good, it can be simply edited with normal text editor, but I don't like way of parsing files with nodes. So I choose binary files. I have some good experiencis with this way (žvb 1 emulator RunUO used this) and is possible simply correct errors such as mising type of component or error in getting values. Each class that can be serialized have special constructor and two methods Serialize and Deserialize. Thats all that is requred. Only disandvatage is that variables must be saved and loaded in same order. So I chose binary serialization from RunUO and make some small corrections. I will post another blog entry when I think that is all working properly. Firt, I must choose one of three methods that I know.
to one file:
bin file
Component type
data
When error is occoured all date are lost
to two files:
bin file idx file
data Component type
start position in stream
length of stream
When error is occoured we can easily skip demaged area and try to continue with loading. If error is in index file everything is lost
do tří souborů - ala RunUO:
bin file idx file pdb file
data id of type type of component
start position in stream
length in stream
Same as above but we have types saved in extra file. Missing types can be easily skipped by id.
Žádné komentáře:
Okomentovat