Koncept serializacije i deserializacije koristi se kad god se podaci koji se odnose na objekte moraju slati iz jedne aplikacije u drugu. Serijalizacija se koristi za izvoz podataka aplikacije u datoteku. Odredišna aplikacija zatim koristi deserializaciju za izdvajanje podataka iz aplikacije za daljnju upotrebu.
Serijalizacija je koncept u kojem se objekti klase C # zapisuju ili serializiraju u datoteke. Recimo da ste imali razred C # pod nazivom Tutorial. A klasa ima 2 svojstva ID i Tutorials name.
Serijaliziranje se može koristiti za izravno upisivanje svojstava podataka klase Tutorial u datoteku. Deserijalizacija se koristi za čitanje podataka iz datoteke i ponovno konstruiranje Tutorial objekta.
Pogledajmo primjer kako to možemo postići.
U našem primjeru izvest ćemo dolje navedene korake na visokoj razini u kodu
- Stvorite klasu pod nazivom Tutorial koja ima 2 svojstva, naime ID i Name
- Zatim ćemo stvoriti objekt iz klase i dodijeliti vrijednost "1" svojstvu ID, a vrijednost ".Net" svojstvu imena.
- Zatim ćemo serializacijom koristiti za serializaciju gornjeg objekta u datoteku koja se zove Example.txt
- Konačno, koristit ćemo deserializaciju za deserializaciju objekta iz datoteke i prikazivanje vrijednosti u konzoli.
Unesite donji kod u datoteku program.cs aplikacije konzole.
Korak 1) Prvi korak je dodavanje klase koja će se koristiti za serializaciju
Objašnjenje koda: -
- Klasa koja treba biti serializirana mora imati atribut [Serializable]. Ovo je ključna riječ u jeziku C #. Ova se ključna riječ zatim pridružuje klasi Tutorial. Ako ne spomenete ovaj atribut, dobit ćete pogrešku kada pokušate serializirati klasu.
- Sljedeća je definicija klase koja će biti serializirana. Ovdje definiramo klasu koja se naziva "Vodič" i pružamo 2 svojstva, jedno je "ID", a drugo "Ime".
Korak 2) U ovom koraku prvo ćemo stvoriti objekt klase Tutorial i serializirati ga u datoteku koja se naziva Example.txt
Objašnjenje koda: -
- Prvo kreiramo objekt klase Tutorial. Zatim dodijelimo vrijednost "1" ID-u, a ".net" svojstvu imena.
- Zatim koristimo klasu oblikovača koja se koristi za serializaciju ili pretvaranje objekta u binarni format. Podaci u datoteci u serializaciji rade se u binarnom formatu. Dalje, kreiramo objekt protoka datoteke. Objekt toka datoteke koristi se za otvaranje datoteke Example.txt za potrebe pisanja. Ključne riječi FileMode.Create i FileMode.Write koriste se za posebno spominjanje da datoteku treba otvoriti radi pisanja.
- Konačno, koristimo metodu Serialize za prijenos binarnih podataka u datoteku. Zatim zatvorimo tok jer je operacija upisa završena.
Korak 3) Konačno, kako bismo osigurali da su podaci prisutni u datoteci, koristimo deserializaciju za deserializaciju objekta iz datoteke.
using System;using System.IO;using System.Linq;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using System.Threading.Tasks;namespace DemoApplication{[Serializable]class Tutorial{public int ID;public String Name;static void Main(string[] args){Tutorial obj = new Tutorial();obj.ID = 1;obj.Name = ".Net";IFormatter formatter = new BinaryFormatter();Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);formatter.Serialize(stream, obj);stream.Close();stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);Tutorial objnew = (Tutorial)formatter.Deserialize(stream);Console.WriteLine(objnew.ID);Console.WriteLine(objnew.Name);Console.ReadKey();}}}
Objašnjenje koda: -
- Stvaramo objekt "stream" da bismo otvorili datoteku Example.txt u načinu samo za čitanje.
- Zatim koristimo klasu formatiranja koja se koristi za deserializaciju objekta koji je pohranjen u datoteci Example.txt. Vraćeni objekt postavljen je na objekt objnew.
- Na kraju, prikazujemo svojstva objekta "objnew" na konzoli pomoću svojstava "ID" i "name".
Kada se postavi gornji kôd i projekt pokrene pomoću Visual Studija, dobit ćete donji izlaz.
Izlaz:-
Iz gornjeg rezultata možete vidjeti da su vrijednosti iz datoteke deserijalizirane pravilno i prikazane u konzoli.
Sažetak
Serijalizacija se koristi za pisanje objekata klase u datoteke.
Deserijalizacija se koristi za oporavak objekata iz datoteke.