.Net Compact Framework 2.0 – Mobil Cihazlarda XML Serialization

Eylül 15, 2008 15:16 tarihinde ekinozcicekciler tarafndan eklenmistir.

Serialization kavramı bilindiği üzere nesnenin herhangi birt zamanında belirtilen “formatter” kullanılarak bellek üzerinde depolanması veyine 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 .NetFramework üzerinde yüzlerce parametresi bulunmaktadır. XML, SOAP ve BinarySerialization olarak 3 farklı format üzerinde incelenebilecek olan bu kavramher birinde farklı avantajlar & dezavantajlar getirmektedir.

Temel hatlarıyla avantajları ve dezavantajlarına baktığımızagöze çarpan en büyük fark XML Serialization’ ın Shallow (Sığ) Serialization,SOAP ve Binary Serialization’ ın ise Deep (Derin) Serialization yapabiliyorolmasıdır. Shallow Serialization’ da Public Member’ lar serialize edilirken ,Private Member’ lar serialize edilmemektedir. Deep Serialization’ da ise tümMember’ 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’ ıngerçekleştirilebildiğini görmekteyiz. Bu makalemizde .Net Compact Framework 2.0platformu ü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 projesiaçarak işe başlıyoruz.

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

Şekildeki formu tasarlayarak uygulamamıza devam ediyoruz :

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

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

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

Şekilde bakıldığı zaman ilginç gelebilme ihtimali olabilecektek metot BilgilerimdenListeElemaniGetir metodu olabilir. Metodun amacı Telefonbilgilerini içerisinde barındıran ve iki SubListViewItem içeren birListViewItem döndürmek olacaktır. Dönen objeyi ListView.Items.Add metodunadirek 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’ aeşitliyoruz.

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

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

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

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

Kaydet button’ una tıklandığında ise çalışan tek satırglobal’ 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’ unabasarak ArrayList’ in oluşmasını sağlıyoruz. İlk noktada TelefonData.xmldö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ündekiTelefonData isimli XML Dökümanımıza bakıyoruz :

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

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

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


3 kişi tarafından 2.3 olarak değerlendirildi

  • Currently 2,333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Yorum ekle




biuquote
  • Yorum
  • Canlı önizleme
Loading