2.0 Mobil Cihazlarda XML Serialization

.Net Compact Framework 2.0 – Mobil Cihazlarda XML Serialization

Serialization kavramı bilindiği üzere nesnenin herhangi bir t zamanında belirtilen “formatter” kullanılarak bellek üzerinde depolanması ve yine herhangi bir t zamanında bellek üzerinde depolandığı yerden “serialize” edildiği zaman sürecindeki değerleriyle tekrardan oluşturulma işlemidir.

Olaya bu açıdan bakıldığında serialization işleminin .Net Framework üzerinde yüzlerce parametresi bulunmaktadır. XML, SOAP ve Binary Serialization olarak 3 farklı format üzerinde incelenebilecek olan bu kavram her birinde farklı avantajlar & dezavantajlar getirmektedir.

Temel hatlarıyla avantajları ve dezavantajlarına baktığımıza göze çarpan en büyük fark XML Serialization’ ın Shallow (Sığ) Serialization, SOAP ve Binary Serialization’ ın ise Deep (Derin) Serialization yapabiliyor olmasıdır. Shallow Serialization’ da Public Member’ lar serialize edilirken , Private Member’ lar serialize edilmemektedir. Deep Serialization’ da ise tüm Member’ lar serialize edilebilmektedir.

Bütün bunların yanında .Net Compact Framework’ e baktığımızda .Net Framework ile kıyaslandığında sadece XML Serialization’ ın gerçekleştirilebildiğini görmekteyiz. Bu makalemizde .Net Compact Framework 2.0 platformu üzerinde Mobil Cihazlarda XML Serialization kavramı üzerine basit bir örnek geliştireceğiz.

Konun daha rahat anlaşılabilmesi açısından bu noktada örnek üzerinden gitmek daha faydalı olacaktır.

Standart bir C# Mobile 5.0 Smart Device Application projesi açarak işe başlıyoruz.

Amacımız XmlSerialization kullanarak datalarını mobil cihaz belleği üzerinde depolayan bir telefon defteri geliştirmek olacaktır.

Şekildeki formu tasarlayarak uygulamamıza devam ediyoruz :

Form üzerine yeni telefon bilgisi ekleneceği noktada kullanılacak olan iki adet metin kutusu, 3 adet buton ve iki adet kolon barındıran bir ListView kontrolü ekliyoruz.

Senaryoya göre kullanıcı uygulamayı çalıştırdığında Yükle button’ una basacak ; “eğer var ise” XML Dökümanı üzerinden ArrayList Deserialize edilecek ve içerisindeki tüm TelefonBilgisi objeleri ListView kontrolü içerisine eklenecektir.

İlk olarak kod tarafında şekildeki sınıfı oluşturuyoruz.

Şekilde bakıldığı zaman ilginç gelebilme ihtimali olabilecek tek metot BilgilerimdenListeElemaniGetir metodu olabilir. Metodun amacı Telefon bilgilerini içerisinde barındıran ve iki SubListViewItem içeren bir ListViewItem döndürmek olacaktır. Dönen objeyi ListView.Items.Add metoduna direk gönderdiğimiz noktada işimiz bitmektedir.

Şekildeki kod bloğu üzerinden devam ediyoruz :

Şekilde görülebileceği üzere Form’ umuz yüklendiği noktada global’ de tanımlanan xSER isimli XmlSerializer referansını yeni bir instance’ a eşitliyoruz.

Bu noktada dikkat edilmesi gereken nokta XmlSerializer nesnesinin constructer’ ında nesnenin serialize edebileceği tipleri belirlememiz gerekmektedir. Dikkat edilecek olursa ilk parametrede ArrayList tipi gonderilir iken ikinci parametrede TelefonBilgi isimli tip gönderilmiştir. Tipler doğru gönderilmediği taktirde nesnemiz ne serialize ne de deserialize işlemi gerçekleştirebilecektir.

Yükle button’ una basıldığında ise Mobil Cihazımızın kök klasörü içerisindeki TelefonData.xml isimli döküman aranamakta ; var ise açılmakta yok ise oluşturulmaktadır. Bir sonraki adımda açılan xml dökümanının boyutu incelenmekte ; 0 byte’ tan büyük ise XmlSerializer nesnemiz kullanılarak ArrayList deserialize edilmekte ; değil ise içi boş bir ArrayList objesi oluşturulmaktadır.

Son olarak Kaydetme ve Ekleme işlemlerini gerçekleştiren kod satırlarını belirliyoruz :

Yeni bir telefon eklendiğinde TelefonBilgi sınıfının yeni bir kopyası oluşturulmakta ve gerekli değerler gönderilmektedir. Bir sonraki adımda bu obje ArrayList içerisine eklenmekte ve eş zamanlı olarak ListView içerisine eklenmektedir.

Kaydet button’ una tıklandığında ise çalışan tek satır global’ de tanımlanmış olan XmlSerializer nesnesinin Serialize metodudur.

Hiç vakit kaybetmeden uygulamayı çalıştırıyoruz.

Uygulama ana ekran’ ı üzerinde ilk olarak Yükle button’ una basarak ArrayList’ in oluşmasını sağlıyoruz. İlk noktada TelefonData.xml dökümanı olmadığı için herhangi bir telefon datası gelmemektedir.

Bir sonraki adımda birkaç telefon datası ekliyoruz :

Dataları ekledikten sonra Kaydet Button’ una tıklıyoruz :

Ve hemen gidip mobil cihazımızın kök klasöründeki TelefonData isimli XML Dökümanımıza bakıyoruz :

Dosya başarıyla oluşturulmuş ve 510Byte’ lık bir boyuta sahip. Dosyayı hemen mobil cihaz emülatörümüz üzerinde açıyoruz :

Ve sonuç ! XmlSerializer kullanılarak ArrayList içerisindeki tüm objelerimiz ArrayList halinde xml dökümanına serialize edilmiş durumdadır. Hepsi bu kadar.

Bu makalemizinde sonuna geldik. Başka bir makalede daha görüşmek üzere.

Döküman Arama

Başlık :

Kapat