Serialization ve Deserialization Nedir ?


Merhaba Arkadaşlar;

Bu gün bir öğrencim Serialization ve Deserialization nedir diye bir soru sordu. Aslında çok şaşırdım çünkü web servilerinde uzun zamandır kullanılan ya da nasıl olduğunu bilindiğini zannettiğim bir şeydir. Ona verdiğim cevabı sizlerle paylaşmak istedim;

Serialization: Bir nesnenin saklanacak / transfer edilecek forma dönüştürülme işlemidir. Serileşmenin tersi olarak Deserialization ifadesi kullanılır ve bu da Stream'in (Akış) nesne modeline dönüştürülme işlemidir.

.Net Framework içerisinde bulunan System.Runtime.Serialization namespace'i bu işlemler için kullanılmaktadır. İçerisinde bulunan sınıflar ve araçlar sayesinde, kendi nesnelerimizi istenilen/ihtiyaç duyulan formatta saklama imkanı sunar.

Serialization bize iki temel metot sunar;

  • XML "eXtensiple Markup Language" ve SOAP "Simple Object Access Protokol" Serileştirme işlemleri
  • Binary (ikili) Serialization

Binar Serialization: Tür bağımlılığı açısından önemlidir. İkili serileştirme işlemi, daha çok bir birinden bağımsız iki uygulama arasında, nesne modellerini taşımak için kullanılır. İkili serileştirme işlemi; bir nesnenin durumunun saklama ortamına uygun hale getirilip yazılması süreci olarak tanımlanabilir. İşlem süresince, nesnenin “public” ve “private” öğeleri, sınıfın adı, sınıfı barındıran Assembly’ nin adı saklama ortamına yazılmak üzere “byte” lar akışına çevirilir.
Nesne, Deserialize edildiğinde ise nesnenin tam bir kopyası oluşturulur ve kullanıma sunulur. Binary serialization ile .Net Remoting kullanarak farklı domain içinde bulunan bir bilgisayardaki uygulamalara bile taşınabilir. Bazen Binary Serialization ile bir nesneyi serialize etmek, sürücüde gereğinden çok fazla yer işgal etmeye neden olabilir, çünkü nesnemiz kendi ve içinde bulunan her yapı ve nesne için sürücüde binary header ile fazladan yer işgal eder. Hatta eğer nesnelerden oluşmuş bir array veya collection(IList, ObservableCollection vb…) varsa bunun içinde bulunan her nesne içinde (foreach) bir binary header (o class’ın yapısı) dosyamıza eklenerek dosyanın boyutunu şişirebilir.

XML ve SOAP Serileştirme: Tür esnekliği ile ön plana çıkan bu yapı, çok sık tercih edilmektedir. XML Serileştirme işleminde sadece ortak tipler ve metotlar serileştirilebilir. Bu yapıda verilerimnizi kullanacak olan uygulamayı kısıtlamadan saklayabiliriz. XML ve SOAP açık bir standart yapı olduğundan, aynı zaman da her türlü uygulama ile rahatlıkla okunabildiğinden veri paylaşımı oldukça hızlıdır.

Bu konu ile ilgli örnekleri, internette çok fazla bulabilirsiniz, onun için bir örnek yapmıyorum.

Kolaygelsin.







Blog Posts' Cloud