C Sharp Serileştirme (serialization)

  1. Üzeyir
    8
    669
    3/26/2019 11:48:00 AM

    C Sharp da Serileştirme nedir ? , ne amaçla kullanılır ? , nasıl yapılır ? Bir örnek uygulama ile açıklar mısınız ?

    c# .net 2 ay önce 343 Görüntüleme

( 3 ) Cevap

  1. koraydrk
    6
    1759
    3/26/2019 12:23:00 PM

    Serileştirme , İngliz literatüründe Serialization bir objenin / nesnenin veritabanı veya dosyada tutulacağı zaman yada bir ağ üzerinden farklı yada aynı programlama dilleri ile yazılmış sistemlere gönderileceği zaman , SOAP , Binary , Xml veya günümüz teknolojisinde sık kullanılan Json formatına çevirme operasyonuna verilen addır. Bu formatlarla gelen veriyi , tam tersi bir yöntemle objeye / nesneye çevirme işine de Deserialization denir.

    serialization-serilestirme

    Yukarda saydığım 4 tane formattan bir tanesine örnek verelim , nesnemizi önce binary formata çevirelim ,serileştirelim , sonra tekrar deserileştirme yaparak nesneye çevirelim.

    [Serializable]
    public class Uye
    {
        public int Id { get; set; }
        public string UyeAdi { get; set; }
        public string UyeMail { get; set; }
    
    }
    class Program
    {
        static void Main(string[] args)
        {
            Uye uye=new Uye();
            uye.Id = 1;
            uye.UyeAdi = "koray";
            uye.UyeMail = "koray@koray.com";
    
            var binary = Serilestirme(uye);
    
            Uye deSerilestirilenUye = (Uye)DeSerilestirme(binary);
    
            Console.ReadLine();
        }
    
        public static byte[] Serilestirme(object nesne)
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                var binaryFormatter = new BinaryFormatter();
    
                binaryFormatter.Serialize(memoryStream, nesne);
    
                return memoryStream.ToArray();
            }
        }
    
        public static object DeSerilestirme(byte[] binary)
        {
            using (MemoryStream memoryStream = new MemoryStream(binary))
            {
                var binaryFormatter = new BinaryFormatter();
    
                return binaryFormatter.Deserialize(memoryStream);
            }
        }
    
    }
    
  2. cemmm
    4
    855
    3/26/2019 2:25:00 PM

    bende yakın zamanda json formatında yapmıştım , yukardaki Uye sınıfı uzerinden bende json formatında nasıl yapıldığını paylaşayım

    nugetmanager dan önce Newtonsoft.Json ı kurmalısınız

    class Program
    {
        static void Main(string[] args)
        {
            Uye uye = new Uye {Id = 26, UyeAdi = "cem", UyeMail = "cem@cemozen.com"};
    
            //json formatda serileştirme Serialization
            var serializedData = JsonConvert.SerializeObject(uye); 
    
            //json formatı , nesneye geri çevirme , Deserialization
            Uye deserializedObject = JsonConvert.DeserializeObject<Uye>(serializedData);
    
            Console.ReadLine();
        }
    
    }
    
  3. koraydrk
    1
    1759
    5/11/2019 4:03:00 PM

    bende xml serialization ve deserialization a bir örnek vereyim ;

    //nesneden xml e çevirme metodu
    public string XmlSerialize(object objectToSerialize)
    {
        MemoryStream memoryStream = new MemoryStream();          
        XmlSerializer xmlSerializer= new XmlSerializer(objectToSerialize.GetType());         
        xmlSerializer.Serialize(memoryStream , objectToSerialize);                      
        ASCIIEncoding asc = new ASCIIEncoding();
        return asc .GetString(memoryStream .ToArray());
    }        
    
    //xml den nesneye çevirme metodu
    public object Deserialize(Type type, string xml)
    {
        var bytes = Encoding.UTF8.GetBytes(xml);
        MemoryStream memoryStream = new MemoryStream(bytes);         
        XmlSerializer ser = new XmlSerializer(type);
        return ser.Deserialize(memoryStream );
    }
    

Cevabınız