Programmering

Sådan arbejder du med serialisering i .Net

Når du arbejder med applikationer, skal du ofte gemme data i et vedvarende eller ikke-vedvarende lagringsmedium, så de samme data kan hentes på et senere tidspunkt. Serialisering, en funktion leveret af CLR, kan hjælpe dig med at opnå dette.

Serialisering kan defineres som processen til konvertering af et objekt til en strøm af bytes, vedvarende objektets tilstand i hukommelsen, en databases fil. Det modsatte af serialisering er deserialisering, der rekonstruerer objektet fra strømmen af ​​bytes. Med andre ord er deserialisering processen med at konvertere et seriel objekt til dets oprindelige tilstand.

Serialisering er nødvendig for at føre et objekt over ledningen - det letter transmission af et objekt over et netværk. Derfor kan du udnytte serialisering til at overføre et objekt fra et applikationsdomæne til et andet. Du kan også drage fordel af serialisering for at oprette en klon af et objekt.

Serialisering er dog også dyr på grund af ressourceomkostningerne, der er involveret i serialisering og de-serialisering af objekter. For at arbejde med Serialization i .Net skal du drage fordel af System.Runtime.Serialization namespace, dvs. du skal medtage dette namespace i dit program.

Du kan lave en klasse, der kan serialiseres ved hjælp af attributten [Serializable]. Her er et eksempel, der viser, hvordan du kan anvende denne attribut på en klasse.

[Serialiserbar]

produkt i offentlig klasse

{

public int produktKode;

public string productName;

}

Hvis du nu vil begrænse et eller flere medlemmer af en klasse til at blive serieliseret, kan du bruge attributten NonSerialized som vist i nedenstående kodestykke.

[Serialiserbar]

produkt i offentlig klasse

    {

offentlig int produktKode;

public string productName;

[NonSerialized ()]

offentligt dobbelt produktPris;

    }

.Net framework giver support til følgende typer serialisering.

  1. Binær
  2. SÆBE
  3. XML
  4. Brugerdefinerede

Binær serialisering

Binær serialisering er den hurtigste af alle serialiseringsteknikker - den kan bruges til at serialisere et objekt til en binær strøm. Det er en type serialisering, der kan bruges til at serialisere et objekt til en outputstrøm, mens objektets identitet bevares - typeoplysningerne går ikke tabt i serieiseringsprocessen. Bemærk, at når du bruger binær serialisering, gemmes objektet i sin helhed. For at arbejde med binær serialisering skal du inkludere System.Runtime.Serialization.Formatters.Binary navneområde.

SOAP-serialisering

SOAP (Simple Object Access Protocol) -serialisering er et godt valg, når du vil overføre objekter fra en applikation til en anden, når disse applikationer bruger heterogene arkitekturer. I det væsentlige er den største fordel ved at bruge SOAP-serialisering bærbarhed. SOAP-serialisering kan bruges til at serialisere et objekt i SOAP-format. For at arbejde med SOAP-serialisering skal du inkludere System.Runtime.Serialization.Formatters.Såbe navneområdet i dit program. Bemærk, at ligesom XML-serialisering opretholdes objekter, der er serialiseret ved hjælp af SOAP-serialisering, som XML.

XML-serialisering

XML-serialisering er en type serialisering, der bruges til at serialisere de offentlige medlemmer af en forekomst af en klasse til en XML-stream. Bemærk, at XML-serialisering er langsom sammenlignet med binær serialisering - faktisk er det meget langsommere. Den primære fordel ved XML serializaton er, at den giver support på tværs af platforme, og fordi den er tekstbaseret, er den læsbar og kan også redigeres. Du kan drage fordel af XmlAttribute og indstille den på en egenskab for at gøre det muligt at serieisere egenskaben ved hjælp af XML-serialisering. Følgende kodestykke illustrerer, hvordan du kan bruge XmlAttribute på en ejendom.

[XmlAttribute ("produktnavn")]

public string Produktnavn

{

  {

returner produktnavn;

  }

sæt

  {

productName = værdi;

  }

}

For at serialisere og de-serialisere et objekt ved hjælp af XML-serialisering kan du bruge XmlSerializer. Følgende kodestykke viser, hvordan du kan serieisere et objekt ved hjælp af XML-serialisering - bemærk, hvordan XmlSerializer bruges.

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

ved hjælp af (TextWriter textWriter = ny StreamWriter (@ "D: \ Product.xml"))

 {

xmlSerializer.Serialize (textWriter, productObject);

 }

Tilpasset serialisering

Du kan udnytte brugerdefineret serialisering til at kontrollere, hvordan en forekomst af en type kan serieiseres og deserialiseres. Du kan implementere brugerdefineret serialisering ved at implementere ISerialiserbar grænseflade. ISerialiserbar grænseflade erklærer metoden GetObjectData (). Følgende kodestykke illustrerer, hvordan du kan implementere brugerdefineret serialiseringsteknik ved at implementere ISerialiserbar grænseflade.

[Serialiserbar]

offentlig klasse Produkt: ISerializable

{

offentlig ugyldighed GetObjectData (SerializationInfo info, StreamingContext context)

    {

// Almindelig kode

    }

}