Programiranje

Kako delati s serializacijo v .Net

Pri delu z aplikacijami boste pogosto morali podatke shranjevati na trajnem ali neobstojnem pomnilniškem mediju, da boste lahko iste podatke pozneje pridobili. Serializacija, funkcija, ki jo ponuja CLR, vam lahko pomaga, da to dosežete.

Serializacijo lahko definiramo kot postopek pretvorbe predmeta v tok bajtov, ohranjanje stanja predmeta v pomnilniku in zbirki podatkov datoteke. Obratno pri serializaciji je deserializacija, ki objekt rekonstruira iz toka bajtov. Z drugimi besedami, deserializacija je postopek pretvorbe serializiranega predmeta v prvotno stanje.

Serializacija je potrebna za prenos predmeta prek žice - olajša prenos predmeta po omrežju. Zato lahko uporabite serializacijo za prenos predmeta iz ene domene aplikacije v drugo. Izkoristite lahko tudi serializacijo, da ustvarite klon predmeta.

Vendar je serializacija draga tudi zaradi režijskih sredstev, vključenih v serializacijo in odstranitev serializacijskih predmetov. Če želite delati s serializacijo v .Net, morate izkoristiti imenski prostor System.Runtime.Serialization, tj. Ta imenski prostor vključite v svoj program.

Razred lahko naredite za serijsko uporabo z atributom [Serializable]. Tu je primer, ki prikazuje, kako lahko uporabite ta atribut v razredu.

[Serijski]

izdelek javnega razreda

{

javni int productCode;

javni niz productName;

}

Če želite enemu ali več članom razreda preprečiti serializacijo, lahko uporabite atribut NonSerialized, kot je prikazano v spodnjem delčku kode.

[Serijski]

izdelek javnega razreda

    {

javni int productCode;

javni niz productName;

[Neserizirano ()]

javni dvojni izdelekCena;

    }

Okvir .Net nudi podporo za naslednje vrste serializacije.

  1. Binarno
  2. MILO
  3. XML
  4. Po meri

Binarna serializacija

Binarna serializacija je najhitrejša od vseh tehnik serializacije - z njo lahko serializiramo objekt v binarni tok. Gre za vrsto serializacije, ki jo lahko uporabimo za serializacijo predmeta v izhodni tok ob ohranjanju identitete predmeta - informacije o tipu se v procesu serializacije ne izgubijo. Upoštevajte, da se pri uporabi binarne serializacije objekt shrani v celoti. Če želite delati z binarno serializacijo, vključite imenski prostor System.Runtime.Serialization.Formatters.Binary.

MILA serializacija

Serializacija SOAP (Simple Object Access Protocol) je dobra izbira, če želite prenašati predmete iz ene aplikacije v drugo, če te aplikacije uporabljajo heterogeno arhitekturo. V bistvu je glavna prednost uporabe serializacije SOAP prenosljivost. Serializacija SOAP se lahko uporablja za serializacijo predmeta v obliki SOAP. Za delo s serializacijo SOAP v svoj program vključite imenski prostor System.Runtime.Serialization.Formatters.Soap. Upoštevajte, da se tako kot serializacija XML tudi predmeti, ki so serializirani s serializacijo SOAP, ohranijo kot XML.

Serializacija XML

Serializacija XML je vrsta serializacije, ki se uporablja za serializacijo javnih članov primerka razreda v tok XML. Upoštevajte, da je XML serializacija v primerjavi z binarno serializacijo počasna - pravzaprav je veliko počasnejša. Glavna prednost XML serializaton je v tem, da zagotavlja podporo med platformami in ker temelji na besedilu, je berljiv in ga je mogoče tudi urejati. Izkoristite lahko XmlAttribute in ga nastavite na lastnost, da omogočite serializacijo lastnosti s serializacijo XML. Naslednji delček kode prikazuje, kako lahko XmlAttribute uporabite v lastnosti.

[XmlAttribute ("productName")]

javni niz ProductName

{

dobili

  {

vrni productName;

  }

nastavite

  {

productName = vrednost;

  }

}

Če želite serializirati in odstraniti serializacijo predmeta s serializacijo XML, lahko uporabite XmlSerializer. Naslednji delček kode prikazuje, kako lahko serializirate predmet s serializacijo XML - upoštevajte, kako se uporablja XmlSerializer.

XmlSerializer xmlSerializer = nov XmlSerializer (typeof (Product));

z uporabo (TextWriter textWriter = nov StreamWriter (@ "D: \ Product.xml"))

 {

xmlSerializer.Serialize (textWriter, productObject);

 }

Serializacija po meri

S serializacijo po meri lahko izkoristite nadzor nad tem, kako je mogoče primerek vrste serializirati in deserializirati. Serializacijo po meri lahko izvedete z implementacijo vmesnika ISerializable. Vmesnik ISerializable razglasi metodo GetObjectData (). Naslednji delček kode prikazuje, kako lahko implementirate tehniko serializacije po meri z implementacijo vmesnika ISerializable.

[Serijski]

izdelek javnega razreda: ISerializable

{

javna praznina GetObjectData (informacije o serializaciji Info, kontekst StreamingContext)

    {

// Običajna koda

    }

}

$config[zx-auto] not found$config[zx-overlay] not found