Programmering

Hvordan jobbe med serialisering i .Net

Når du arbeider med applikasjoner, må du ofte lagre data i et vedvarende eller ikke-vedvarende lagringsmedium slik at de samme dataene kan hentes på et senere tidspunkt. Serialisering, en funksjon levert av CLR, kan hjelpe deg med å oppnå dette.

Serialisering kan defineres som prosessen med å konvertere et objekt til en strøm av byte, vedvare objektets tilstand i minnet, databasen til en fil. Det motsatte av serialisering er deserialisering, som rekonstruerer objektet fra strømmen av byte. Med andre ord er deserialisering prosessen med å konvertere et serieobjekt til sin opprinnelige tilstand.

Serialisering er nødvendig for å føre et objekt over ledningen - det letter overføring av et objekt over et nettverk. Derfor kan du utnytte serialisering for å overføre et objekt fra ett applikasjonsdomene til et annet. Du kan også dra nytte av serialisering for å lage en klon av et objekt.

Serialisering er imidlertid også kostbar på grunn av ressurskostnadene som er involvert i serialisering og avserialisering av objekter. For å jobbe med Serialization i .Net, bør du dra nytte av System.Runtime.Serialization namespace, dvs. du bør inkludere dette namespace i programmet ditt.

Du kan lage en klasse som kan serialiseres ved hjelp av [Serializable] -attributtet. Her er et eksempel som viser hvordan du kan bruke dette attributtet på en klasse.

[Serialiserbar]

offentlig klasse Produkt

{

offentlig int produktKode;

offentlig streng produktnavn;

}

Nå, hvis du vil begrense et eller flere medlemmer i en klasse fra å bli seriellisert, kan du bruke attributtet NonSerialized som vist i kodebiten gitt nedenfor.

[Serialiserbar]

offentlig klasse Produkt

    {

offentlig int produktKode;

offentlig streng produktnavn;

[NonSerialized ()]

offentlig dobbelt produktPris;

    }

Net Framework gir støtte for følgende typer serialisering.

  1. Binær
  2. SÅPE
  3. XML
  4. Tilpasset

Binær serialisering

Binær serialisering er den raskeste av alle serialiseringsteknikkene - den kan brukes til å serieisere et objekt til en binær strøm. Det er en type serialisering som kan brukes til å serialisere et objekt til en utgangsstrøm mens du bevarer objektets identitet - typeinformasjonen går ikke tapt i serieiseringsprosessen. Merk at når du bruker binær serialisering, blir objektet lagret i sin helhet. For å jobbe med binær serialisering, bør du inkludere System.Runtime.Serialization.Formatters.Binary namespace.

SOAP-serialisering

SOAP (Simple Object Access Protocol) -serialisering er et godt valg når du ønsker å overføre objekter fra ett program til et annet når disse applikasjonene bruker heterogene arkitekturer. I hovedsak er den største fordelen med å bruke SOAP-serialisering bærbarhet. SOAP-serialisering kan brukes til å serieisere et objekt i SOAP-format. For å jobbe med SOAP-serialisering, bør du inkludere System.Runtime.Serialization.Formatters.Såpe navneområdet i programmet ditt. Vær oppmerksom på at i likhet med XML-serialisering, gjenopprettes objekter som serialiseres med SOAP-serialisering som XML.

XML-serialisering

XML Serialization er en type serialisering som brukes til å serialisere de offentlige medlemmene av en forekomst av en klasse til en XML-strøm. Merk at XML-serialisering er treg sammenlignet med binær serialisering - faktisk er det mye tregere. Den primære fordelen med XML serializaton er at den gir støtte på tvers av plattformer, og fordi den er tekstbasert, er den lesbar og kan også redigeres. Du kan dra nytte av XmlAttribute og sette den på en eiendom for å gjøre det mulig å serieisere eiendommen ved hjelp av XML-serialisering. Følgende kodebit illustrerer hvordan du kan bruke XmlAttribute på en eiendom.

[XmlAttribute ("productName")]

offentlig streng Produktnavn

{

  {

returner produktnavn;

  }

sett

  {

productName = verdi;

  }

}

For å serieisere og avserialisere et objekt ved hjelp av XML-serialisering, kan du bruke XmlSerializer. Følgende kodebit viser hvordan du kan serieisere et objekt ved hjelp av XML-serialisering - legg merke til hvordan XmlSerializer brukes.

XmlSerializer xmlSerializer = ny XmlSerializer (typeof (Produkt));

bruker (TextWriter textWriter = ny StreamWriter (@ "D: \ Product.xml"))

 {

xmlSerializer.Serialize (textWriter, productObject);

 }

Tilpasset serialisering

Du kan bruke tilpasset serialisering for å kontrollere hvordan en forekomst av en type kan serieiseres og deserialiseres. Du kan implementere tilpasset serialisering ved å implementere ISerialiserbart grensesnitt. ISerialiserbart grensesnitt erklærer GetObjectData () -metoden. Følgende kodebit illustrerer hvordan du kan implementere tilpasset serialiseringsteknikk ved å implementere ISerialiserbart grensesnitt.

[Serialiserbar]

offentlig klasse Produkt: ISerialiserbar

{

offentlig ugyldig GetObjectData (SerializationInfo info, StreamingContext context)

    {

// Vanlig kode

    }

}

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