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

[email protected]

Last updated