Serialization ve Deserialization Kullanımı

Murat Süzen
Sep 26, 2016 · 2 min read

.Net ile işlem yaptığımız nesneyi, sınıfı saklamak yada transfer etmek istediğimiz formata dönüştürme işlemine Serialization denir. Serileştirdiğimiz nesneyi yada sınıfı fiziksel olarak diskimize kaydedebilir yada web servisler aracılıyla gönderilebiliriz.Bu serileştirme işlemi sonrasında verilerimizin boyutları küçülecek ve transferlerde performanslı aktarımlar yapabileceğiz. Serialization yapılmış bir nesneyi daha sonra açabilmemiz için ise Deserialization yapmamız gerekmektedir. Serialization BinarySerialization ve SoapSerialization yöntemleri ile yapılabilmektedir. Serileştirme işlemini uygulayabilmek için System.Runtime.Serialization namespace kullanılmaktadır. Bir sınıfın tamamını serileştirmek için [Serialization] özniteliğini kullanmamız gerekmektedir.

BinarySerialization : Serileştirilecek veri .NET ortamında yazılmış bir uygulama ile deserialization yapılacak ise BinarySerialization kullanmak performans açısından faydalı olacaktır. System.Runtime.Serialization.Formatters.Binary namespace içerisinde bulunmaktadır.

SoapSerialization : Serileştirilecek veri .NET ortamında yazılmış bir uygulama ile deserialization yapılmayacak ise SoapSerialization kullanılmasında yarar vardır. System.Runtime.Serialization.Formatters.Soap namespace içerisinde bulunmaktadır.

Örneğimizde iki yöntemide ele alarak oluşturulan veri boyutlarınıda göstereceğiz.

static Stream setSoapFormatter(object data)
{
FileStream stream = new FileStream("Data.soap", FileMode.Create);
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(stream, data);
Console.WriteLine("Data.soap Size: {0} bayt", stream.Length);
stream.Close();
stream.Dispose();
return stream;
}
static object getSoapFormatter()
{
FileStream stream = new FileStream("Data.soap", FileMode.Open);
SoapFormatter formatter = new SoapFormatter();
object data = (object)formatter.Deserialize(stream);
stream.Close();
stream.Dispose();
return data;
}
static Stream setBinaryFormatter(object data)
{
FileStream stream = new FileStream("Data.binary", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, data);
Console.WriteLine("Data.binary Size: {0} bayt", stream.Length);
stream.Close();
stream.Dispose();
return stream;
}
static object getBinaryFormatter()
{
FileStream stream = new FileStream("Data.binary", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
object data = (object)formatter.Deserialize(stream);
stream.Close();
stream.Dispose();
return data;
}
static void Main(string[] args)
{

while (true)
{
Console.Write("Veri girişi yapınız: ");
string getKey = Console.ReadLine();
Console.WriteLine("Stream Data :{0}",getKey);
Stream binaryTemp = setBinaryFormatter(getKey);
Stream soapTemp = setSoapFormatter(getKey);
Console.WriteLine("***********************");
}
}

Örnek sonucuna baktığımızda BinarySerialization yönteminin oluşturduğu veri boyutu açısından önde olduğunu görmekteyiz. Örnek uygulamaya buradan ulaşabilirsiniz.

Murat Süzen

Written by

Main blog is muratsuzen.com

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade