ASP.NET AJAX : Client Script Web Servisler (2)

Giriş

Bu makalemizde “ECMAScript (JavaScript) ile bir Web servis nasıl çağırılır” konusunu işleyeceğiz. Uygulamanızda ASP.NET AJAX Web servislerini kullanmanızı sağlamak için, server asenkron iletişim katmanı otomatik olarak Javascript proxy sınıflarını meydana getirir. Sayfa içinde <asp:ScriptManager> altında yer alan <asp:ServiceReference> elementi her bir Web service için bir proxy sınıfı oluşturur.

Web servisin bir metodunu çağırmak için, oluşturulan Javascript proxy sınıfıyla ilişkili metodu çağırırsınız. Proxy sınıfları Web servisleriye dönüşümlü olarak haberleşir.

Web Servis Metodlarını Çağırmak

Scriptten çağrılan bir web servis asenkrondur. İstek sonucunda dönen değeri elde etmek için, başarıyla geri dönüş (callback) sağlandı fonksiyonunu (success) sağlamanız gerekir.Web metoddan dönen değer, istek başarıyla sonlandığında geri dönüş fonksiyonu içerisine aktarılır. Diğer taraftan hataları (handle errors) yakalamak için, başarısız geri dönüş fonksiyonunu sağlamalısınız. Ek olarak, geri dönüş fonksiyonu içerisinde kullanmak için kullanıcı içerik bilgisini de iletebilirsiniz.

Aşağıda Web servis çağırma tipleri listelenmiştir  :

  • Geri dönüş değer olmayan bir Web Servis çağırmak
  • Geri dönüş değer olan bir Web Servis çağırmak
  • Parametre alan bir Web servis metodu çağırmak
  • HTTP GET olayını tetikleyerek bir Web servis çağırmak
  • XmlDocument nesnesi döndüren bir Web Servis metodu çağırmak

Örnekleri görmek için tıklayınız.

Geri Dönüş Fonksiyonunu Default Özellik Olarak Belirlemek

Önceki örnekte, proxt sınıfları kullanarak üretilen Web servis metodlarını çağırmayı inceledik. Başarılı geri dönüş fonksiyonu, hatalı geri dönüş fonksiyonu ve kullanıcı içeriğini parametre ekleyerek iletmek hakkında bilgiler verdik. Örnekler linkini tıklayarak detayları dikkatli inceleyiniz.

Alternatif olarak, başarılı geri dönüş fonksiyonunu, hatalı geri dönüş fonksiyonunu ve kullanıcı içeriğinin default özellikler olarak belirleyebilirsiniz. Çağırma işleminde, proxy sınıfının Web servis metodlarını daha sonra script içerisinde parametre olarak vermeden de çağırabilirsiniz. Bu işlem Web servis metodlarını çağırırken satır veya söz dizimi (syntax) konusunda sadelik sağlar.

Aşağıdaki örnekte, “Web servis proxy sınıfı nasıl default özellik olarak belirlenir ve sonrasında Web servis metodu nasıl çağrılır” gösterilmektedir.


MyNameSpace.MyService.set_defaultSucceededCallback(SucceededCallback);
MyNameSpace.MyService.set_defaultFailedCallback(FailedCallback);
MyNameSpace.MyService.set_defaultUserContext("my context");
MyNameSpace.MyService.myServiceMethod(param1, param2);

Web Servis Metod Çağrıldığında Hataları Yakalamak

Sıradaki örnek Web servis metodunda ortaya çıkan hatalar nasıl yakalanır. Hataları yakalamak için tek bir parametre alan hatalı geri dönüş fonksiyonu oluşturmanız gerekiyor.Bu parametre Web servis tarafından gönderilen hata nesnesini içerecektir.

Aşağıda verilen linkte, Web servis metodu çağırıldığında bir hata meydana gelmişse hatalı geri dönüş fonksiyonu nasıl oluşturulur görebilirsiniz.

Örnekler için tıklayınız

Çoklu Web Servis Metodlarından Bir Tane Geri Dönüş Fonksiyonu Çağırmak

Çoklu Web servis metodu çağrıldığında sadece bir tane başarılı geri dönüş sağlandı fonksiyonu tanımlayabilirsiniz. Çağrıcıların arasını ayırma fonksiyonu için, kullanıcını bilgilerini bu fonksiyona iletebilirsiniz veya çağrılan metodun adını test edebilirsiniz. Kullanıcı bilgisi ve cağırılan metodun adı geri dönüş fonksiyonu içerisinde mevcuttur. Aşağıdaki linkte ki  örnekte görebilirsiniz.

 Örnek link için tıklayınız

Kompleks tipleri iletmek ve geri döndürmek

Web servis metod geriye kompleks bir tip döndürüyorsa, başarılı geri dönüş fonksiyonu, server tipine karşılık gelen   bir JavaScript nesnesi biçiminde geri dönen değer alır. Aşağıdaki linkte geriye kompleks  döndüren bir Web servis metot örneği gösterilmektedir.

Örnek link için tıklayınız

Aşağıdaki linkteki örnek ise kompleks tiplere karşılık gelen parametrelere sahip Web servis metodlarının nasıl çağrıldığını görebilirsiniz. Tipler için Proxy sınıfları otomatik olarak yaratılacaktır.  Client script tip örneğini oluşturmak üzere metod çağrısına parametrelerin iletilmesini sağlar.

Örnek link için tıklayınız

Dizi veya Generic Tipinde Parametreleri İletmek

Bir Web servis metod T tip listelerinin dizilerini veya generic olarak tiplendirilmiş parametleri  veya geri dönüş değerini (return value) destemiyor olabilir. Bu durumda ASP.NET AJAX client script ile T tipini kullanmak için proxy sınıfılarını meydana getirir. Bununla beraber, bir generic tip birden fazla argüman veya değişkene sahipse, mesela Dictionary<string, <T> gibi, ASP.NET AJAX tipler için proxy sınıflarını üretmeyecektir.

ASP.NET AJAX T tipi için proxy sınıfı oluşturmak için, Web servis sınıfı T tipini kullanabilmek için  GenerateScriptTypeAttribute özelliğiyle nitelendirilmiş olmalıdır.

Aşağdaki örnek parametreler generic veya dizi olarak tiplendildiğinde client script tarafından bir Web servis metodun nasıl çağrılacağını göstermektedir.

 Örnek link için tıklayınız

Enumerator Tipinde Parametre İletmek

Bir enumerator tipine otomatik olarak oluşturulan proxy sınıfını kullanarak erişebilir.

Not : Oluşturulan proxy sınıf örneğini kullanarak enumeratorlara erişemessiniz.

Tama olarak  ne demek istendiğini aşağıdaki örnekte daha iyi anlayabilirsiniz.

 Örnek link için tıklayınız

Makalenin ilk serisi için tıklayınız

Muavenet

Web teknolojilerine merak salmış bir bilgisayar mühendisinin yazıları

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir