Programovanie

Ako pracovať so serializáciou v .Net

Pri práci s aplikáciami budete často musieť ukladať údaje na trvalé alebo nepretrvávajúce úložné médium, aby bolo možné rovnaké údaje získať neskôr. Serializácia, funkcia, ktorú poskytuje CLR, vám môže pomôcť dosiahnuť tento cieľ.

Serializáciu možno definovať ako proces premeny objektu na prúd bajtov, pretrvávajúci stav objektu do pamäte, databázy súboru. Rubom serializácie je deserializácia, ktorá rekonštruuje objekt z prúdu bajtov. Inými slovami, deserializácia je proces premeny serializovaného objektu do pôvodného stavu.

Na prenesenie objektu po drôte je nevyhnutná serializácia - uľahčuje sa prenos objektu po sieti. Preto môžete využiť serializáciu na prenos objektu z jednej domény aplikácie do druhej. Môžete tiež využiť výhody serializácie na vytvorenie klonu objektu.

Serializácia je však tiež nákladná z dôvodu režijných nákladov zdrojov zapojených do serializácie a de-serializácie objektov. Ak chcete pracovať so serializáciou v .Net, mali by ste využiť výhody menného priestoru System.Runtime.Serialization, t. J., Mali by ste tento menný priestor zahrnúť do svojho programu.

Triedu môžete vytvoriť ako serializovateľnú pomocou atribútu [Serializable]. Tu je príklad, ktorý ukazuje, ako môžete použiť tento atribút na triedu.

[Serializovateľné]

verejná trieda Produkt

{

public int productCode;

verejný reťazec productName;

}

Teraz, ak chcete obmedziť serializáciu jedného alebo viacerých členov triedy, môžete použiť atribút NonSerialized, ako je uvedené v útržku kódu uvedenom nižšie.

[Serializovateľné]

verejná trieda Produkt

    {

public int productCode;

verejný reťazec productName;

[Neserializované ()]

verejný dvojitý produktCena;

    }

Rámec .Net poskytuje podporu pre nasledujúce typy serializácie.

  1. Binárne
  2. MYDLO
  3. XML
  4. Vlastné

Binárna serializácia

Binárna serializácia je najrýchlejšia zo všetkých techník serializácie - je možné ju použiť na serializáciu objektu do binárneho toku. Je to typ serializácie, ktorý možno použiť na serializáciu objektu do výstupného toku pri zachovaní identity objektu - informácie o type sa v procese serializácie nestratia. Upozorňujeme, že pri použití binárnej serializácie sa objekt uloží ako celok. Ak chcete pracovať s binárnou serializáciou, mali by ste zahrnúť menný priestor System.Runtime.Serialization.Formatters.Binary.

Serializácia SOAP

Serializácia SOAP (Simple Object Access Protocol) je dobrou voľbou, keď chcete prenášať objekty z jednej aplikácie do druhej, keď tieto aplikácie používajú heterogénne architektúry. Hlavnou výhodou použitia serializácie SOAP je v podstate prenosnosť. Serializáciu SOAP je možné použiť na serializáciu objektu vo formáte SOAP. Pri práci so serializáciou SOAP by ste do svojho programu mali zahrnúť priestor názvov System.Runtime.Serialization.Formatters.Soap. Upozorňujeme, že rovnako ako pri serializácii XML, objekty, ktoré sa serializujú pomocou serializácie SOAP, sa zachovajú ako XML.

Serializácia XML

Serializácia XML je typ serializácie, ktorá sa používa na serializáciu verejných členov inštancie triedy do toku XML. Upozorňujeme, že serializácia XML je v porovnaní s binárnou serializáciou pomalá - v skutočnosti je oveľa pomalšia. Primárnou výhodou XML serializatónu je to, že poskytuje podporu pre rôzne platformy a pretože je textový, je čitateľný a je ho možné tiež upravovať. Môžete využiť výhodu XmlAttribute a nastaviť ju na vlastnosť, aby ste umožnili serializáciu vlastnosti pomocou serializácie XML. Nasledujúci úryvok kódu ilustruje, ako môžete použiť XmlAttribute na vlastníctvo.

[XmlAttribute ("productName")]

verejný reťazec ProductName

{

dostať

  {

vrátiť productName;

  }

nastaviť

  {

productName = hodnota;

  }

}

Ak chcete serializovať a de-serializovať objekt pomocou serializácie XML, môžete použiť XmlSerializer. Nasledujúci úryvok kódu ukazuje, ako môžete serializovať objekt pomocou serializácie XML - všimnite si, ako sa používa XmlSerializer.

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

pomocou (TextWriter textWriter = nový StreamWriter (@ "D: \ Product.xml"))

 {

xmlSerializer.Serialize (textWriter, productObject);

 }

Vlastná serializácia

Môžete využiť vlastnú serializáciu na riadenie toho, ako je možné serializovať a deserializovať inštanciu typu. Vlastnú serializáciu môžete implementovať implementáciou ISerializovateľného rozhrania. Rozhranie ISerializable deklaruje metódu GetObjectData (). Nasledujúci úryvok kódu ilustruje, ako môžete implementovať vlastnú techniku ​​serializácie implementáciou rozhrania ISerializable.

[Serializovateľné]

verejná trieda Produkt: ISerializovateľný

{

public void GetObjectData (informácie SerializationInfo, kontext StreamingContext)

    {

// Obvyklý kód

    }

}