Ohjelmointi

Kuinka toimia .Net-sarjallisuuden kanssa

Kun työskentelet sovellusten kanssa, sinun on usein tallennettava tietoja pysyvään tai pysyvään tallennusvälineeseen, jotta samat tiedot voidaan noutaa myöhemmin. Serialisointi, CLR: n tarjoama ominaisuus, voi auttaa sinua saavuttamaan tämän.

Sarjallisuus voidaan määritellä prosessiksi, jolla objekti muunnetaan tavuvirraksi, säilyttäen objektin tila muistiin, tiedoston tietokantaan. Sarjauksen käänteinen puoli on deserialisaatio, joka rekonstruoi kohteen tavuvirrasta. Toisin sanoen deserialisaatio on prosessi, jolla sarjoitettu objekti muunnetaan alkuperäiseen tilaansa.

Sarjaaminen on välttämätöntä, jotta esine voidaan siirtää langan yli - se helpottaa kohteen siirtämistä verkon yli. Siksi voit hyödyntää sarjoitusta siirtääksesi objektin yhdestä sovellusalueesta toiseen. Voit myös käyttää sarjoitusta hyödyntämällä objektin kloonin luomista.

Sarjaaminen on kuitenkin kallista myös esineiden sarjallisuuteen ja sarjojen poistamiseen liittyvän resurssihinnan vuoksi. Jos haluat työskennellä Sarialization in .Net -ohjelmassa, sinun on hyödynnettävä System.Runtime.Serialization-nimitilaa, eli sinun on sisällytettävä tämä nimitila ohjelmaasi.

Voit tehdä luokan sarjoitettavaksi käyttämällä [Serializable] -määritettä. Tässä on esimerkki, joka osoittaa, kuinka voit käyttää tätä määritettä luokassa.

[Sarjattavissa]

julkisen luokan tuote

{

public int productCode;

public string productName;

}

Nyt, jos haluat rajoittaa yhden tai useamman luokan jäsenen sarjointia, voit käyttää NonSerialized-määritettä alla olevan koodinpätkän mukaisesti.

[Sarjattavissa]

julkisen luokan tuote

    {

public int productCode;

public string productName;

[EiSerialisoitu ()]

julkinen kaksinkertainen tuoteHinta;

    }

.Net-kehys tukee seuraavia sarjoitustyyppejä.

  1. Binääri
  2. SAIPPUA
  3. XML
  4. Mukautettu

Binaarinen sarjallisuus

Binaarinen sarjallisuus on nopein kaikista sarjoitustekniikoista - sitä voidaan käyttää objektin sarjallisuuteen binaarivirtaan. Se on eräänlainen sarjoitustyyppi, jota voidaan käyttää objektin sarjallisuuteen ulostulovirtaan säilyttäen samalla objektin identiteetti - tyyppitiedot eivät häviä sarjallisuuden aikana. Huomaa, että kun käytetään binäärisarjaa, objekti tallennetaan kokonaisuudessaan. Binaarisen sarjoituksen käyttämiseksi sinun on sisällytettävä System.Runtime.Serialization.Formatters.Binary-nimitila.

SOAP-sarjallisuus

SOAP (Simple Object Access Protocol) -sarialisaatio on hyvä valinta, kun haluat siirtää objekteja sovelluksesta toiseen, kun nämä sovellukset käyttävät heterogeenisiä arkkitehtuureja. Pohjimmiltaan SOAP-sarjoituksen käytön suurin etu on siirrettävyys. SOAP-sarjoitusta voidaan käyttää objektin sarjallisuuteen SOAP-muodossa. Voit käyttää SOAP-sarjoitusta sisällyttämällä System.Runtime.Serialization.Formatters.Soap-nimitilan ohjelmaasi. Huomaa, että kuten XML-sarjatuotanto, SOAP-sarjatuotannon avulla sarjatuotetut objektit säilytetään XML-muodossa.

XML-sarjanumerointi

XML-serialisaatio on eräänlainen sarjoitustyyppi, jota käytetään luokan esiintymän julkisten jäsenten sarjallisuuteen XML-streamiksi. Huomaa, että XML-sarjallisuus on hidasta verrattuna binaariseen sarjallisuuteen - itse asiassa se on paljon hitaampaa. XML-sarjatuotannon ensisijainen etu on, että se tarjoaa alustojen välisen tuen ja koska se on tekstipohjainen, se on luettavissa ja sitä voidaan myös muokata. Voit hyödyntää XmlAttribute-asetusta ja asettaa sen ominaisuudelle, jotta ominaisuus voidaan sarjoittaa XML-sarjoituksella. Seuraava koodinpätkä kuvaa, kuinka voit käyttää XmlAttribute-ominaisuutta.

[XmlAttribute ("tuotenimi")]

julkinen merkkijono ProductName

{

saada

  {

palaa tuotteen nimi;

  }

aseta

  {

productName = arvo;

  }

}

Voit tehdä objektista sarjallisuuden ja poistaa sen sarjoinnista XML-sarjallisuutta käyttämällä XmlSerializer-ohjelmaa. Seuraava koodinpätkä osoittaa, kuinka voit järjestää objektin XML-sarjoituksella - huomaa, kuinka XmlSerializeria käytetään.

XmlSerializer xmlSerializer = uusi XmlSerializer (typeof (Tuote));

käyttäen (TextWriter textWriter = uusi StreamWriter (@ "D: \ Product.xml"))

 {

xmlSerializer.Serialize (textWriter, productObject);

 }

Mukautettu sarjallisuus

Voit hyödyntää mukautettua sarjoitusta hallitaksesi, kuinka tyypin ilmentymä voidaan sarjoittaa ja deserialisoida. Voit toteuttaa mukautetun sarjoituksen ottamalla käyttöön ISerializable-käyttöliittymän. ISerializable-käyttöliittymä ilmoittaa GetObjectData () -menetelmän. Seuraava koodinpätkä kuvaa, miten voit toteuttaa mukautetun sarjoitustekniikan toteuttamalla ISerializable-käyttöliittymän.

[Sarjattavissa]

public class Tuote: ISerialisoitavissa

{

public void GetObjectData (SerializationInfo-tiedot, StreamingContext-konteksti)

    {

// Tavallinen koodi

    }

}