Serialization Kullanımı
Husamettin Elalmis
Merhaba arkadaşlar, bu yazıda sizlere Serialization kavramından bahsecedeğim.
Serialization Nedir?
Serialization, bir objeyi "Serileştirme" demektir.
Serileştirme, objenin belirli bir formatta saklanarak bir ortamda tutulmasıdır.
Ortamdan kasıt, serileştirilmiş bir objenin saklanacağı yerdir
File ortamı olabilir
Bellek ortamı olabilir
Database ortamı olabilir
…
Serileştirme formatları genellikle şunlardır
Binary format
Bu tür dosyaların uzantısına ".bin" veririz. Böylece binary formatında olduğunu vurgulamış oluruz (uzantı herşey olabilir, bin genel bir tercihtir)
XML format
Bu tür dosyaların uzantısına ".xml" veririz. Böylece XML formatında olduğunu vurgulamış oluruz (uzantı herşey olabilir, xml genel bir tercihtir)
Json format
Bu tür dosyaların uzantısına ".json" veririz. Böylece Json formatında olduğunu vurgulamış oluruz (uzantı herşey olabilir, json genel bir tercihtir)
Text format
Bu tür dosyaların uzantısına ".txt" veririz. Böylece text formatında oludğunu vurgulamış oluruz (uzantı herşey olabilir, txt genel bir tercihtir)
Bir dosyayı diske yazmak ve geri okumak, serialization işleminin en yalın halidir.
Bir obje serileştirildiğinde belirli bir formata bürünür
Binary format olabilir
XML format olabilir
Json format olabilir
Bir objeyi geriye serileştirdiğimizde (DeSerialization) bürünmüş olan formattan orjinal olan formata geri döndürmüş oluruz
Bir classı serileştirdiğimizde bu bir formata bürünür
Bürünmüş olan formattan geriye serileştirdiğimizde (DeSerialization) orjinal class verisini elde ederiz
Serialization ve Deserialization kavramı birbirini tamamlayan kavramlardır
Serileştiririz ve zamanı geldiğinde geri okuruz
Neden Serialization Kullanılır?
Serialization'un amacı, bir objeyi başka bir ortama taşımaktır.
Örneğin bir class objesinin içeriğini network ortamında başka bir bilgisayara göndermek istersek bunu Serileştirerek yaparız.
Class objesini bulunduğumuz makinada serileştiririz (Serialization), karşı makinaya göndeririz. Karşı makina bunu geriye çözümler (Deserialization) ve orjinal datayı elde eder
SOAP, WCF, REST servislerinde bir standard haline gelmiştir
SOAP servisleri, verileri XML formatında gönderir/alır.
WCF servisleri genellikle XML formatında verileri gönderir/alır. Senaryoya göre bazen Json da kullanılabilmektedir.
REST servisleri (API) genellikle Json formatında verileri gönderir/alır.
Eski uygulamalar ise genellikle Binary formatında verileri gönderir/alır.
Ram'deki anlik veriyi bir ortama saklama istersek bunu Serialization (serileştirme) işlemi yaparak çözümleriz. Bunun başka bir yöntemi yoktur.
Reflection ile okunarak manuel olarak da serialization yapılabilir, aynı kapıya çıkar. Bir ortama saklamak istersek bunu bir formata büründürmemiz gerekmektedir.
Önemli Notlar
Binary formatında serileştirme için ilgili classların başına [Serializable] attributesi eklenir.
XML formatında serileştirme için XML namespace'inden faydalanılır.
Json formatında serileştirme için Newtonsoft nuget package librarysinden faydalanılır
Serileştirme yöntemleri arasında en efektif ve etkin kullanım, Json formatına aittir. Bu nedenle json formatı standard hale gelmiş durumdadır.
Etkinlik sırasına göre sıralarsak şöyle sıralarız
Json > XML > BinaryFormat > TextFormat
Çıktılar
Uygulamanın çalışır hali
Serileştirilmiş dosya örnekleri
Binary (.bin) dosyaları bu şekilde görünür
XML (.xml) dosyaları bu şekilde görünür
Json (.json) dosyaları bu şekilde görünür
Sonuç
Serialization ve Deserialization işlemlerini sıkça kullanırız
En çok kullandığımız format Json formatıdır
NewtonJson kütüphanesini kullanıyoruz
Buradaki örnekler static kavramsal olarak aktarılmıştır
Bahsi geçen örneklerin tamamı için generic methodların yazılmış hali frameworkumuzde mevcuttur.
Saygılarımla,
Hüsamettin ELALMIŞ – 14.08.2021
husamettin.elalmis@arksoft.com.tr
Last updated