Programavimas

Kaip dirbti su serializavimu .Net

Dirbdami su programomis, dažnai turėsite saugoti duomenis nuolatinėje ar neišliekančioje laikmenoje, kad tuos pačius duomenis būtų galima gauti vėliau. Serializavimas, CLR teikiama funkcija, gali padėti jums tai pasiekti.

Serializavimas gali būti apibrėžiamas kaip procesas, kai objektas paverčiamas baitų srautu, objekto būsena išlieka atmintyje, failo duomenų bazėje. Serializacijos atvirkštinė dalis yra deserializacija, kuri rekonstruoja objektą iš baitų srauto. Kitaip tariant, deserializacija yra serijinio objekto pavertimo pradine būsena procesas.

Serializavimas yra būtinas norint perduoti objektą per laidą - tai palengvina objekto perdavimą tinkle. Todėl galite pasinaudoti serija, norėdami perduoti objektą iš vieno programos domeno į kitą. Taip pat galite pasinaudoti serializavimo pranašumais, kad sukurtumėte objekto kloną.

Tačiau serializavimas taip pat yra brangus dėl išteklių, susijusių su objektų nuoseklinimu ir pašalinimu iš serijos. Norėdami dirbti su „Serialization“ .Net, turėtumėte pasinaudoti „System.Runtime.Serialization“ vardų srities pranašumais, t. Y. Turėtumėte įtraukti šią vardų sritį į savo programą.

Naudodami [Serializable] atributą, galite padaryti, kad klasė būtų serijinė. Štai pavyzdys, parodantis, kaip galite pritaikyti šį atributą kurse.

[Serializuojama]

visuomenės klasės produktas

{

public int productCode;

public string productName;

}

Dabar, jei norite apriboti vieno ar kelių klasės narių serijavimą, galite naudoti atributą „Neserializuoti“, kaip parodyta toliau pateiktame kodo fragmente.

[Serializuojama]

visuomenės klasės produktas

    {

public int productCode;

public string productName;

[Neserializuotas ()]

viešas dvigubas produktasKaina;

    }

.Net sistema palaiko šių tipų serijavimą.

  1. Dvejetainis
  2. MUILAS
  3. XML
  4. Pasirinktinis

Dvejetainis serializavimas

Dvejetainis serializavimas yra greičiausias iš visų serializavimo būdų - jis gali būti naudojamas objektui sudaryti į dvejetainę srautą. Tai yra serializavimo tipas, kuris gali būti naudojamas objektui susieti su išvesties srautu išsaugant objekto tapatybę - informacija apie tipą neprarandama atliekant serializavimo procesą. Atkreipkite dėmesį, kad naudojant dvejetainį serializavimą objektas išsaugomas visas. Norėdami dirbti su dvejetainiu serializavimu, turėtumėte įtraukti „System.Runtime.Serialization.Formatters.Binary“ vardų sritį.

SOAP serializavimas

SOAP (paprastas objekto prieigos protokolas) serizavimas yra geras pasirinkimas, kai norite perkelti objektus iš vienos programos į kitą, kai šiose programose naudojamos nevienalytės architektūros. Iš esmės pagrindinis SOAP serijos naudojimo pranašumas yra perkeliamumas. SOAP serizavimas gali būti naudojamas surišant objektą SOAP formatu. Norėdami dirbti su SOAP serializavimu, į savo programą turėtumėte įtraukti System.Runtime.Serialization.Formatters.Soap vardų sritį. Atminkite, kad objektai, kurie yra nuoseklizuojami naudojant SOAP serizavimą, kaip ir XML serizavimas, išlieka XML.

XML serializavimas

„XML Serialization“ yra serializavimo tipas, naudojamas viešiems klasės egzemplioriaus nariams nuoseklinti į XML srautą. Atkreipkite dėmesį, kad XML serizavimas yra lėtas, palyginti su dvejetainiu serializavimu - iš tikrųjų jis yra daug lėtesnis. Pagrindinis „XML serializaton“ pranašumas yra tas, kad jis palaiko įvairias platformas. Kadangi jis yra teksto pagrindas, jis yra skaitomas ir gali būti redaguojamas. Galite pasinaudoti „XmlAttribute“ pranašumais ir nustatyti jį ypatybėje, kad būtų galima nuosekliai sukonfigūruoti nuosavybę naudojant XML nuoseklumą. Šis kodo fragmentas parodo, kaip nuosavybėje galite naudoti „XmlAttribute“.

[XmlAttribute ("productName")]

vieša eilutė „ProductName“

{

gauti

  {

grąžinti productName;

  }

rinkinys

  {

produkto pavadinimas = reikšmė;

  }

}

Norėdami susieti ir panaikinti objekto serijos naudojimą, naudojant XML serizavimą, galite naudoti „XmlSerializer“. Šis kodo fragmentas parodo, kaip galite susisteminti objektą naudodami XML serizavimą - atkreipkite dėmesį, kaip naudojamas „XmlSerializer“.

XmlSerializer xmlSerializer = naujas XmlSerializer (typeof (produktas));

naudojant („TextWriter textWriter“ = naujas „StreamWriter“ (@ "D: \ Product.xml"))

 {

xmlSerializer.Serialize (textWriter, productObject);

 }

Pasirinktinis serializavimas

Galite pasinaudoti pasirinktine serija, kad valdytumėte, kaip tipo egzempliorius gali būti nuoseklus ir deserializuotas. Įdiegę „ISerializable“ sąsają, galite įdiegti pasirinktinį serijos tvarkymą. „ISerializable“ sąsaja deklaruoja metodą „GetObjectData ()“. Šis kodo fragmentas iliustruoja, kaip galite įdiegti pasirinktinį serializavimo būdą įdiegdami „ISerializable“ sąsają.

[Serializuojama]

viešoji klasė Produktas: ISerializuojamas

{

public void „GetObjectData“ („SerializationInfo“ informacija, „StreamingContext“ kontekstas)

    {

// Įprastas kodas

    }

}