|
|
|
| TÜRKİYE'NİN BİLGİ TEKNOLOJİLERİ DERGİSİ | BİZE ULAŞIN | DÜNYA YAYINCILIK A.Ş. |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
||
|
|
||
![]() ![]() ![]()
Web sitenizi dergimizde tanıtmak, BYTE Dergi, CD, TV ve Online ile ilgili görüş ve önerilerinizi bizlere ulaştırmak için
Okur hattı bölümünü kullanabilirsiniz. ![]() ![]() |
Makaleler
C# ve Serileştirme (Serialization)
C# ve Serileştirme (Serialization)
Verilerimizi ortam bağımsız saklamak için serileştiriyoruz.
Kendi verinizi kendiniz saklayın: Binary serileştirme ile ilgili son örneğimiz, tıpkı bir veritabanı kullanır gibi kendi verimizi saklayıp daha sonra istediğimiz zaman erişebileceğimiz bir uygulama. Uygulamamızda, Storage sınıfı saklayacağımız veriyi biçimlendirmek için kullanacağımız sınıf olmakla beraber bu örnekte içerisinde sadece temel metodları barındırmaktadır. Veri saklamak için klasik Hashtable yapısını kullanacağız. C# için bir konsol uygulaması başlatıyoruz ve yeni bir sınıf ekleyip adını “Storage.cs” olarak ayarlıyoruz. Storage.cs: //istedigimiz program datasini kaydetmek icin, serializable bir class yaratiyoruz [Serializable] //constructor metodumuz, deseriazlize edildigi zaman //yeni bir datayi saklamak istedigimizde, kullanacagimiz metod. public void AddData(object data, string identifier) //herhangi bir data silmek istedigimizde, bu metod yardimimiza kosuyor. public void RemoveData(string identifier) //hashtable icerisindeki bir verinin, key ini aramak icin public string GetIdentifier(object data) return null; //storageData hashtableimizi dondurecek property. public Hashtable storage } #region Herhangi bir verinin HashTable icerisinde olup olmadigini degerlendir { private bool isExists(string idToSearch) { return false; #endregion Storage sınıfımız hazır olduğuna göre artık bu sınıfı kullanarak saklanan veriyi serileştiren uygulamamızı yazabiliriz.
class Class1 { //storage nesnemizin ornegini olusturuyoruz. private static Storage sakla; //ikili (binary) serilestirme icin interface ornegini tanimliyoruz. private static IFormatter IBinaryBicimle; //serilestirilmis datayi hangi dosyada saklayacagimiz. private static string storageFileName = "myDatabase.bin"; //dosyaya yazmak icin kullanacagimiz strem private static Stream isle; [STAThread] static void Main(string[] args) { Console.WriteLine("Serilestirme ornek projesi, by scriptMan"); //storage nesnemize saklanacak verileri yaziyoruz sakla = new Storage(); for(int i=0; i<50; i++) { sakla.AddData(i,"saklanan"+i); } Console.WriteLine("Serilestirme islemine baslamak icin bir tusa basin"); Console.ReadLine(); DoSerialize(); //serilestir Console.WriteLine("Serilestirme tamamlandi, Serilestirilen veriyi okumak icin bir tusa basiniz"); Console.ReadLine(); PurgeData(); //deserialize et, ve ekrana yaz. Console.ReadLine(); } private static void PurgeData() { //serilestirilmis nesneyi geri cagirip, datayi ekrana basalim IBinaryBicimle = new BinaryFormatter(); isle = new FileStream(storageFileName,FileMode.Open,FileAccess.Read); sakla = (Storage) IBinaryBicimle.Deserialize(isle); isle.Close(); System.Collections.Hashtable serializedHashTable = sakla.storage; foreach(string strData in serializedHashTable.Keys) { Console.WriteLine("Key: {0} Data: {1}",strData,serializedHashTable[strData]); } } private static void DoSerialize() { //binaryformatter nesnesinin bir ornegini aliyoruz.. IBinaryBicimle = new BinaryFormatter(); //filestream kullanarak, olusturacagimiz dosyayi belirliyoruz.. isle = new FileStream(storageFileName,FileMode.Create,FileAccess.Write); //serilestirme icin yapmamiz gereke tek sey, binaryformatter nesnemizin.. //serialize metodunu cagirmak ;) IBinaryBicimle.Serialize(isle,sakla); isle.Close(); //program icerisinde olusturdugumuz hashtable' in icini temizliyoruz.. //bolece serilestirilmis nesne tekrar okundugunda, otomatik doldugunu.. //gorebilecegiz. System.Collections.Hashtable htClear = sakla.storage; htClear.Clear(); } } Uygulamamızı çalıştırmadan önce, dahil etmemiz gereken isim uzaylarını da yazmakta fayda görüyorum.
Class1 için;
System.Runtime.Serialization System.Runtime.Serialization.Formatters.Binary System.IO
Storage sınıfı için: System.Collections
Serileştirme yazı dizimizin ikinci bölümünde XML serileştirmenin detaylarına ineceğiz ve örnek uygulamalar geliştireceğiz.
Hepinize iyi çalışmalar. Hakan SÜLÜN Byte Online' ın yazarlarındandır. Kendisine hsulun@byte.com.tr adresinden ulaşabilirsiniz.
|
|
||||||||||||||||
|
|
![]() |
|
| ANA SAYFA | FORUM | ABONE OLUN | BİZE ULAŞIN
Sitelerimiz: pcworld.com.tr | computerworld.com.tr | dunya.com | dunyastore.com
|
©2004 - 2009 BYTE Türkiye |