Programmēšana

Kā strādāt ar serializāciju .Net

Strādājot ar lietojumprogrammām, jums bieži būs jāuzglabā dati pastāvīgā vai nepastāvīgā datu nesējā, lai tos pašus datus varētu izgūt vēlāk. Serializācija, CLR nodrošināta funkcija, var jums palīdzēt to sasniegt.

Serializāciju var definēt kā objekta konvertēšanas procesu baitu straumē, saglabājot objekta stāvokli atmiņā, faila datubāzē. Serializācijas reversā puse ir deserializācija, kas objektu rekonstruē no baitu straumes. Citiem vārdiem sakot, deserializācija ir process, kurā sērijveida objekts tiek pārveidots sākotnējā stāvoklī.

Serializācija ir nepieciešama, lai objektu nodotu pa vadu - tas atvieglo objekta pārraidi tīklā. Tāpēc, izmantojot objektu pārsūtīšanu no viena lietojumprogrammas domēna uz citu, varat izmantot serializāciju. Varat arī izmantot serializācijas priekšrocības, lai izveidotu objekta klonu.

Tomēr sērijveidošana ir dārga arī resursu pieskaitāmās daļas dēļ, kas saistīta ar objektu serializēšanu un sērijas noņemšanu. Lai strādātu ar Serialization .Net, jums jāizmanto System.Runtime.Serialization nosaukumvietas priekšrocības, t.i., šī vārda vieta jāiekļauj savā programmā.

Jūs varat padarīt klasi seriālizējamu, izmantojot atribūtu [Serializable]. Šis piemērs parāda, kā šo atribūtu var pielietot klasē.

[Serializējams]

sabiedrības klases produkts

{

public int productCode;

public string productName;

}

Tagad, ja vēlaties ierobežot viena vai vairāku klases dalībnieku serializāciju, varat izmantot atribūtu NonSerialized, kā parādīts tālāk sniegtajā koda fragmentā.

[Serializējams]

sabiedrības klases produkts

    {

public int productCode;

public string productName;

[Neserializēts ()]

publisks dubultproduktsCena;

    }

.Net sistēma nodrošina atbalstu šādiem sērijas veidiem.

  1. Binārs
  2. ZIEPES
  3. XML
  4. Pielāgots

Binārā sērijizācija

Binārā serializācija ir visātrākā no visām serializācijas tehnikām - to var izmantot, lai objektu sērijveidotu binārā plūsmā. Tas ir sērijas veids, kuru var izmantot, lai objektu sērijveidotu izvades straumē, vienlaikus saglabājot objekta identitāti - informācija par tipu sērijveidošanas procesā netiek zaudēta. Ņemiet vērā, ka, izmantojot bināro sērijveidošanu, objekts tiek saglabāts kopumā. Lai strādātu ar bināro sērijveidošanu, jums jāiekļauj System.Runtime.Serialization.Formatters.Binary nosaukumvieta.

ZIEPJU serializācija

SOAP (vienkāršā objekta piekļuves protokola) serializācija ir laba izvēle, ja vēlaties objektus pārsūtīt no vienas lietojumprogrammas uz citu, ja šajās lietojumprogrammās tiek izmantotas neviendabīgas arhitektūras. Būtībā SOAP sērijveida izmantošanas galvenā priekšrocība ir pārnesamība. SOAP serializāciju var izmantot objekta sērijveidošanai SOAP formātā. Lai strādātu ar SOAP sērijveidošanu, programmā jāiekļauj System.Runtime.Serialization.Formatters.Soap nosaukumvieta. Ņemiet vērā, ka tāpat kā XML serializācija, objekti, kas tiek serializēti, izmantojot SOAP serializāciju, tiek saglabāti kā XML.

XML serializācija

XML serializācija ir sērijas veids, kas tiek izmantots, lai klases instances publiskos dalībniekus sērijveidotu XML straumē. Ņemiet vērā, ka XML sērijveidošana ir lēna salīdzinājumā ar bināro sērijveidošanu - faktiski tā notiek daudz lēnāk. XML serializaton galvenā priekšrocība ir tā, ka tā nodrošina starpplatformu atbalstu un, tā kā tā ir balstīta uz tekstu, tā ir lasāma un to var arī rediģēt. Varat izmantot XmlAttribute priekšrocības un iestatīt to rekvizītā, lai iespējotu rekvizīta serializāciju, izmantojot XML seriālizāciju. Šis koda fragments parāda, kā īpašumā var izmantot XmlAttribute.

[XmlAttribute ("productName")]

publiskā virkne ProductName

{

gūt

  {

return productName;

  }

komplekts

  {

produkta nosaukums = vērtība;

  }

}

Lai serializētu un de-serializētu objektu, izmantojot XML serializāciju, varat izmantot XmlSerializer. Šis koda fragments parāda, kā objektu var sērijveidot, izmantojot XML sērijveidošanu - ņemiet vērā, kā tiek izmantots XmlSerializer.

XmlSerializer xmlSerializer = jauns XmlSerializer (typeof (Produkts));

izmantojot (TextWriter textWriter = new StreamWriter (@ "D: \ Product.xml"))

 {

xmlSerializer.Serialize (textWriter, productObject);

 }

Pielāgota sērijveidošana

Varat izmantot pielāgotu sērijveidošanu, lai kontrolētu, kā tipa instanci var sērijveidot un deserializēt. Varat ieviest pielāgotu sērijveidošanu, ieviešot ISerializable saskarni. ISerializable interfeiss deklarē metodi GetObjectData (). Šis koda fragments parāda, kā jūs varat ieviest pielāgotu sērijas paņēmienu, ieviešot ISerializable saskarni.

[Serializējams]

publiskā klase Produkts: ISerializējams

{

public void GetObjectData (informācija par SerializationInfo, konteksts StreamingContext)

    {

// Parastais kods

    }

}

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