St.AnGeR
Document Visor..
Genel olarak serialization tanımından bahsetmek konun anlaşılır olması için daha iyi olacağı kanısındayım. Bir nesnenin veri içeriğinin veri depolama aygıtı üzerine kaydedilmesi işlemine verilen addır. Bu bir dosya olduğu gibi, veritabanıda olabilir. Bu nesnenin, söz konusu dosyaya veya veritabanına gönderme işlemine Serilization denir, dosyadan veya veritabanından nesneye geri dönüş işlemine deserilization denir.
Serilization ve Deserilization işleminin birden fazla metodu vardır. Bu metotlar Binary Serilization, Xml Serilization ,Soap Serilization dır. Method farkı gözetmeksizin, tüm serialization ve deserialization işlemeleri uygun formatter sınıfı ile gerçekleşir. Formatter nesnesi, IFormatter arayüzünden türemiştir. Binary Serialization için format farklı iken, Xml ve Soap içinde farklıdır. Yani söz konusu işlem, Serialization için nesne à formatter à dosya, Deserialization için dosya à formatterà nesne şeklinde gerçekleşir.
.Net Framework; CLR tarafında, gizli olarak bir çok işleminde serilazition işlemine başvurur. Binary Serialization, söz konusu nesnenin değerinin bitlere serialize edilmesidir. Bu işlemin gerçekleştirmek için BinaryFormatter isimli bir sınıf mevcuttur. Söz konusu sınıf, System.Runtime.Seralization.Formatters.Binary isim uzayında yer alır.
Şimdi BinarySerilization işlemi ile ilgili bir örnek yapalım. Öncelikle “Urun” isminde yeni bir sınıf ekleyelim ve ürün kod ve adlarını bir hashtable içeresinde saklayarak serialize edelim.
“Urun” sınıfının kodları aşağıdaki gibidir.
TextBox nesneleri için txtUrunKod ve txtUrunAD,Button nesneleri için btnUrunEkle ve btnKaydet ismini verelim.
Form nesnesinin kodları aşağıdaki gibi olacaktır.
Bundan sonra deserialization kısmını yazalım yani, kaydediğimiz dosyanın içeriğini görüntüleyelim
ListBox nesnesnin name özelliğine lbUrunler, Button nesnesinin name özelliğine btnUrunGetir değerini girelim.
Form nesnesinin kodları aşağıdaki gibi olacaktır.
Serilization ve Deserilization işleminin birden fazla metodu vardır. Bu metotlar Binary Serilization, Xml Serilization ,Soap Serilization dır. Method farkı gözetmeksizin, tüm serialization ve deserialization işlemeleri uygun formatter sınıfı ile gerçekleşir. Formatter nesnesi, IFormatter arayüzünden türemiştir. Binary Serialization için format farklı iken, Xml ve Soap içinde farklıdır. Yani söz konusu işlem, Serialization için nesne à formatter à dosya, Deserialization için dosya à formatterà nesne şeklinde gerçekleşir.
.Net Framework; CLR tarafında, gizli olarak bir çok işleminde serilazition işlemine başvurur. Binary Serialization, söz konusu nesnenin değerinin bitlere serialize edilmesidir. Bu işlemin gerçekleştirmek için BinaryFormatter isimli bir sınıf mevcuttur. Söz konusu sınıf, System.Runtime.Seralization.Formatters.Binary isim uzayında yer alır.
Şimdi BinarySerilization işlemi ile ilgili bir örnek yapalım. Öncelikle “Urun” isminde yeni bir sınıf ekleyelim ve ürün kod ve adlarını bir hashtable içeresinde saklayarak serialize edelim.
“Urun” sınıfının kodları aşağıdaki gibidir.
Şimdi kullanacağımız Windows ara yüzünü tasarlıyalım. Form üzerine 2 TextBox, 2 Button ekliyelim.using System;
using System.Runtime.Serialization.Formatters.Binary ;
using System.IO;
using System.Collections;
namespace srlz_cs
{
public class urun
{
private string _urunkod;
private string _urunad;
private Hashtable _urunler= new Hashtable();
public urun()
{
}
public urun(string urunkod,string urunad)
{
_urunkod = urunkod;
_urunad = urunad;
_urunler.Add(_urunkod, _urunad);
}
public string UrunKod
{
get{return _urunkod;}
set {_urunkod=value;}
}
public string UrunAd
{
get{return _urunad;}
set {_urunad=value;}
}
public void urunekle(string urunkod,string urunad)
{
_urunkod = urunkod;
_urunad = urunad;
_urunler.Add(_urunkod, _urunad);
}
public void Kaydet()
{
BinaryFormatter frmtr= new BinaryFormatter() ;
FileStream file= new FileStream("c:\\urunler.vta",FileMode.Create);
frmtr.Serialize(file,_urunler);
file.Close();
}
public ArrayList Ac()
{
BinaryFormatter frmtr = new BinaryFormatter() ;
FileStream file= new FileStream("c:\\urunler.vta",FileMode.Open);
_urunler = new Hashtable();
_urunler=(Hashtable)frmtr.Deserialize(file);
ArrayList uruns= new ArrayList();
foreach (DictionaryEntry urunad in _urunler)
{
uruns.Add(urunad.Key + " " + urunad.Value );
}
return uruns;
}
}
}
TextBox nesneleri için txtUrunKod ve txtUrunAD,Button nesneleri için btnUrunEkle ve btnKaydet ismini verelim.

Form nesnesinin kodları aşağıdaki gibi olacaktır.
Binary dosya içeriği aşağıdaki gibi olacaktır.private void Form1_Load(object sender, System.EventArgs e)
{
vitra = new urun();
}
private void btnUrunEkle_Click(object sender, System.EventArgs e)
{
vitra.urunekle(txtUrunKod.Text, txtUrunAd.Text);
}
private void btnKaydet_Click(object sender, System.EventArgs e)
{
vitra.Kaydet();
}

Bundan sonra deserialization kısmını yazalım yani, kaydediğimiz dosyanın içeriğini görüntüleyelim
ListBox nesnesnin name özelliğine lbUrunler, Button nesnesinin name özelliğine btnUrunGetir değerini girelim.

Form nesnesinin kodları aşağıdaki gibi olacaktır.
private void btnUrunGetir_Click(object sender, System.EventArgs e)
{
urun vitra = new urun();
ArrayList urunler;
urunler=vitra.Ac() ;
int i;
for (i=0;i<=urunler.Count-1;i++)
lbUrunler.Items.Add(urunler);
}