Makale Özeti

Microsoft .NET Compact Framework’ün başlıca özelliklerinden biri, XML Web Servisleri çağırabilme özelliğidir . .NET Compact Framework XML Web Servislerini iki farklı şekilde destekler: senkronize ve asenkronize. İkisininde avantajları ve dezavantajları vardır. Senkronize çağırılan XML web servislerini kodlamak kolayken, asenkronize çağırılanları kodlamak nispeten daha karmaşıktır.Eğer XML Web Servisine uzun bir süre ulaşılamazsa, senkronize olanlar uygulamanın donmasına sebep olacaktır, oysaki asenkronlar, XML web servisine çağrı devam ettiği sürece kullanıcıyla aradaki bağın devamını sağlar.

Makale


Merhabalar,

 

Microsoft .NET Compact Framework’ün başlıca özelliklerinden biri, XML Web Servisleri çağırabilme özelliğidir . .NET Compact Framework XML Web Servislerini iki farklı şekilde destekler: senkronize ve asenkronize. İkisininde avantajları ve dezavantajları vardır. Senkronize çağırılan XML web servislerini kodlamak kolayken, asenkronize çağırılanları kodlamak nispeten daha karmaşıktır.Eğer XML Web Servisine uzun bir süre ulaşılamazsa, senkronize olanlar uygulamanın donmasına sebep olacaktır, oysaki asenkronlar, XML web servisine çağrı devam ettiği sürece kullanıcıyla aradaki bağın devamını sağlar.

 

XML Web Servisi bir Smart Device projesinde kullanırken başlangıçta bir kaç saniyelik bir gecikme yaşayacaksınız. Eğer asenkron çağrı kullanırsanız, bu gecikme, kullanıcınızın ekranını dondurmayacaktır. Bu gecikme .Net Compact Framework, XML Web Servisleri için bağlantı detaylarını hazırlarken ve cachelerken meydana gelir. Bu, çoğu zaman, uygulamanızı tepkisiz gibi göstrebilir. Sonraki çağrılarda ise XML Web Servisi çok daha yükselmiş bir performans gösterecektir.

 

 

Bu makale, Microsoft Visual Studio .NET 2003 ile Smart Device uygulamaları oluşturma bilgisine sahip olduğunuzu varsaymaktadır.

 

Web Servis Çağırımı

 

Bir Smart Device projesinde XML Web Servisi kullanmak için, Projenize Web Referansı eklemelisiniz. Web referansı, projenin XML Web servisini kullanmasına yetkidir. Projenize Web referansı eklediğinizde, Visual Studio .NET otomatik olarak, her biri  XML Web Servisinin proxy olarak hizmet edicek methodları olan bir proxy class oluşturur. Bu proxy class’ı Solution Explorer’da gizlidir. Uygulamanız, XML Web Servisine giriş için, kendi kodlarınızla değiştirmeyeceğiniz, otomatik olarak oluşturulmuş bir class kullanmaktadır.

 

Bir Projeye Web Referansı Eklemek İçin ;

  1. Solution Explorerda, XML Web Servisini kullanacak projeyi seçin.
  2. Project menüsünde “Add Web reference” ı seçin.
  3. Kullanmak istediğiniz Web Servisinin adresini yazın ve “GO” butonuna basın.

 

Web referans diyalog kutusu eklemek için ;

  1. Web Referans Name (web referans adı) alanına, seçilen Web Servisine ulaşmak için yazacağınız kodda kullanacağınız bir isim girin.
  2. Uygulamanızda XML Web servisine refrans yaratmak için Add Reference (Referans Ekle) butonuna basın. Solution Explorerda Web referanslarının altında seçilen proje için yeni referans görünecek.

 

Web Referansı eklediğinizde Visual Studio .NET in oluşturduğu Proxy class’ı aynı zamanda Web Servisine senkronize ve asenkronize giriş methodlarını da içerir. Şimdi bunun nasıl yapıldığına bakıcaz J

 

 

Senkronize XML Web Servis çağırımı yapmak

 

XML Web Servisine senkronize çağrılar yaparken, çağrılan thread XML Web Servisi çağrı methodunun sonucunu dönene kadar bloke olur. Eğer sunucuda çağırdığınız method fazla işlem zamanı gerektirmiyorsa ve sonucu hızlıca dönüyorsa, senkronize çağrılar kullanışlıdır. Ek olarak, senkronize XML Web Servis çağrılarını uygulamak asenkronize olanlardan daha kolaydır. Ama yine de .NET Compact Framework uygulamasından, sonuç dönene kadar uygulamanızın kitlenmesine ve kullanıcı arayüzünün donmasına sebep olacaktır. XML Web Servisini çağırırken,önemli bir gecikme dikkatinizi çekecektir.

 

XML Web Servisine senkronize bir çağrı yapmak için, bir proxy class yaratıyor ve sonra diğer classlarda olduğu gibi bu proxy class’ın methodlarını çağırıyorsunuz. Aşağıdaki kod örneği, SQL serverla gelen örnek PUBS database’indeki kitapların bilgilerini dönen, XML Web Servisinin bir Web methoduna senkronize çağrı nın nasıl yapıldığını gösteriyor. Kod daha sonra bir windows formunda, ListView kontrolünün doldurmak için Dataset oluşturacak.

 

 

// ---- Call the XML Web service ----
// Web Service proxy classı yaratma
BookCatalog.Service1 bookcatalog = new BookCatalog.Service1();
// DataSet objesi ve Web Servise çağrı yaratma
// method, GetItems, kitap listesini alma
DataSet ds = bookcatalog.GetItems();
// ------------------------------
 
// ----  DataSeti çalıştırma ----
// Datasette döngü ve her satırın Title_ID ve Title alanlarını ListView a //ekleme
foreach(DataRow drBook in ds.Tables[0].Rows) {
    // Yeni bir ListViewItem yaratmak ve ListView
    ListViewItem book = new ListViewItem();
    // Title_ID alanını Text’e ata
    book.Text = drBook["Title_ID"].ToString();
    // Title alanını ilk SubItem’a ata
    book.SubItem[0].Text = drBook["Title"].ToString();
    // Kitap ListViewItem ını ListView a ekle
    listView1.Items.Add(book);
}
// ------------------------------

 

Hepinize kolay gelsin.

 

HAKAN ULAGAN

Hakan.ulagan@netron.com.tr