HOŞ GELDİNİZ καλωσόρισμα

10 Mart 2013 Pazar

C# ve Serileştirme (Serialization)

Serileştirme nedir?

Serialization (yazının bundan sonraki bölümlerinde “serileştirme” adı ile anılacaktır); bir nesnenin saklanacak / transfer edilecek forma dönüştürülmesi işlemidir.
Serileştirmenin tersi olarak adlandırılan Deserialization ise, bir akışın (Stream) nesne modeline dönüştürülmesi işlemi olarak adlandırılır.

.NET Framework içerisinde buluan System.Runtime.Serialization isim uzayından erişebileceğimiz serileştirme sınıfları ve araçları sayesinde, kendi nesnelerimizi istediğimiz formatta saklayabiliriz.
.NET Framework, bize serileştirme için iki metod sunar;
  • XML ve SOAP Serileştirme (XML and SOAP Serialization)
  • İkili Serileştirme (Binary Serialization)
İkili serileştirme, tür bağımlılığı açısından önemlidir. İkili serileştirme işlemi daha çok birbirinden bağımsız iki uygulama arasında nesne modellerini taşımak için kullanılır.

Bu metod ile örneğin; bir nesne modelini diskinizdeki bir dosyaya, yada networkteki başka bir bilgisayara hatta .NET remoting kullanarak farklı bir domain içerisinde bulunan bir bilgisayardaki uygulamalara bile taşıyabilirsiniz.

XML ve SOAP serileştirme ise, tür esnekliği ile ön plana çıkmaktadır. XML serileştirme işleminde sadece ortak özellik ve metodlar serileştirilebilir. Bu modelde verinizi, kullanacak olan uygulamayı kısıtlamadan saklayabilirsiniz. XML ve SOAP açık bir standart olduğundan ve her türlü uygulama tarafından rahatlıkla okunabildiğinden veri paylaşımı oldukça hızlı sağlanabilmektedir.

Binary ve XML serileştirme

İkili (Binary) Serileştirme:

İ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.

XML ve SOAP serileştirme (eXtensible Markup Language & Simple Object Access Protocol)

Xml serileştirme, veri türünü dikkate almaksızın bir nesnenin tüm ortak metodlarını, özelliklerini ve değişkenlerini serileştirir. XML serileştirme ile her uygulamada kullanılabilen nitelikte sınıf örnekleri yaratılabilir.
XML serileştirmenin yıldızının parladığı noktalar ise, klasik Windows uygulamaları ile İnternet uygulamaları arasında iletişim gerektiği durumlar olarak bilinmektedir.
Bir Windows uygulamasında kullandığınız sınıf örneğini, bir Web servisi aracılığı ile Web uygulamanıza taşımanıza olanak sağlayan yegane yöntem XML serileştirmedir.
Aşağıdaki örneği incelediğinizde, XML serileştirme işlemi ile serileştirilen bir nesne modelinin nasıl bir hal alacağını görebilirsiniz.

public class Musteri
{
public string musteriAdi;
}

Yukarıdaki sınıfın bir örneği serileştirildiğinde ise, aşağıdaki hali alacaktır;

Ayhan Yaman


Gördüğünüz gibi, yukarıdaki formata sahip herhangi bir datayı istediğini bir uygulamada kullanmak sizin elinizde. Tür bağımsızlığı bu gibi durumlarda kendisini göstermektedir.
Yine bir örnekle açıklamak gerekirse; Asıl veritabanı yerel bilgisayarınızda bulunan bir müşteri listesini güncel olarak web sitenizde yayınlamanız gerekmekte. Ancak bu ortam hem web sitesinden erişilebilir olmalı, hem de yerel makinenızdaki bir program tarafından okunabilmeli. İşte bu durumda veritabanı içerisindeki verileri XML ile serileştirmeniz hem Web uygulamanız tarafından okunmasını sağlayacaktır, hem de istediğiniz Windows uygulaması tarafından görüntülenebilecektir.

Binary serileştirme hakkında
Serileştirme üzerine bu ilk makalemizde, ikili serileştirme uygulamasına yer verelim ve daha sonrakilerde de XML serileştirmeyi derinlemesine inceleyelim.
İkili serileştirme işlemi en basit yöntem ile nesneye Serializable etiketi verilerek yapılır. Aşağıdaki örneğimizde basit bir sınıf serileştirilmekte ve bir dosyaya yazılmaktadır.

[Serializable]
public class BinarySerial

{
public int sayi1;
public string strName;
}

//aşağıda bu nesnenin bir örneği yaratılmakta ve myFile.bin dosyasına serileştirilmektedir.
BinarySerial nesneOrnegi = new BinarySerial();
nesneOrnegi.sayi1 = 15;
nesneOrnegi.strName = “Hakan”;


IFormatter bicimlendirici = new BinaryFormatter();
Stream akis = new FileStream(“myFile.bin”,FileMode.Create,FileAccess.Write);
bicimlendirici.Serialize(akis,nesneOrnegi);
akis.Close();


Nesnemizin dosyadan tekrar alinmasi ise “Deserialization” işlemi ile yapılır;
IFormatter bicimlendir = new BinaryFormatter();
Stream akis = new FileStream(“myFile.bin”,FileMode.Open,FileAccess.Read);
BinarySerial nesnem = (BinarySerial) bicimlendir.Deserialize(akis);
akis.Close();


//aşağıdaki şekilde nesnemizin değerlerini test edebilirsiniz;
Console.WriteLine(“{0}”,nesnem.sayi1);
Console.WriteLine(“{0}”,nesnem.strName);




 

Hiç yorum yok:

Yorum Gönder

En Çok Okunanlar

Etiketler

3G (2) adobe (4) adsl (2) akıllı telefon (40) Amazon (3) android (34) android market (4) Angry Birds (2) Anonymous (3) antivirüs testi (3) Apple (74) application (2) Asus (9) Avea (4) Bilgisayar (13) bilim (42) bilimadamları (13) bim (1) Bing (1) board (1) browser (18) BT (2) Burn (3) CeBIT (2) cep telefonu (75) chrome (13) CISCO (1) CNN (1) Codec (1) da vinci (1) Dell (4) dijital (4) domain (6) donanım (151) doodle (2) download (4) e- mail (8) e-book (2) ege üniversitesi (1) eğitim (38) einstein (1) enerji (4) explorer (1) facebook (63) FIFA (5) fiber (3) fiber ağ (1) fibernet (2) firefox (12) fizy (1) Fotoğraf (10) fotoğraf makinesi (7) fullyfollowme (2) Galaxy Note (5) gmail (4) Google (56) Google Earth (3) google play (8) google+ (8) gsm (3) güvenli internet (19) güvenlik açığı (5) güvenlik tehditi (10) hacker (7) harddisk (4) hotmail (3) HP (12) HTC (3) IBM (1) IEEE (1) iletişim (12) index (1) instagram (6) intel (5) internet (122) internet explorer (8) internet explorer 9 (5) iOS (11) İpad (13) iPad 3 (5) iphone (39) iPhone 4S (1) iPhone 5 (9) İslam ZEYTİN (43) istanbul (3) iTunes (3) kamera (12) KeepVid (2) kitap (4) klavye (2) Laptop (2) Led (4) Led TV (2) LG (9) linkedin (2) Mac (8) marc zuckerberg (2) microsof office 2010 (3) Microsoft (52) Microsoft Security Essentials (2) mobil (101) Motorola (2) mozilla (4) MS (1) MSI (2) müzik (4) Nasa (8) nikon (3) Nintendo (2) nokia (15) Notebook (3) Numara taşıma (1) ODTÜ (4) Ofis (4) operatör (6) oyun (72) oyun köşesi (3) oyuncak (2) padfone (2) Pahalı İnternet (1) panasonic (1) para (3) Pardus (1) PC (8) Pepee (1) Pil (10) Ping (1) Playstation (7) programlama (6) projeksiyon (1) rasat (1) Raspberry pi (3) Rekabet (6) reklam (25) sağlık (14) Samsung (49) Samsung Galaxy (13) Sık Sorulanlar (42) Siber Saldırı (5) sim (5) Sinema (3) skype (15) smart tv (3) sms (3) sony (17) sosyal medya (73) Steve Jobs (3) SUPER 8 (1) suriye (1) şifre (7) Tablet (23) tarayıcı (6) tarih (2) tasarım (3) tehlike (23) Teknoloji (50) telefon (7) Televizyon (4) Tivibu (1) toolbar (1) Toshiba (4) ttnet (14) turkcell (21) türkiye (75) türktelekom (4) tv (12) twitter (21) ultrabook (7) usb (3) uydu (12) uygulama (38) uzay (17) üniversite (30) ürün inceleme (48) Vadofone (7) Vaio (1) Video indirme (5) virus (10) vitamin (1) VLC Media Player (1) Web (5) web kamera (1) web sitesi (8) webcam (1) Wii (3) Windows (37) Windows 8 (44) windows xp (2) X Box (5) yahoo (3) Yama (1) yandex (8) yaşam (2) yazı dizisi (9) yazılım (116) yeni ürün (6) Youtube (17) zararlı (3) Zuckerberg (3) Ελληνική ειδήσεις (5)