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

Giriş

Microsoft ASP.NET AJAX, client script kullanarak browserdan ASP.NET Web Servisler (.asmx dosyaları) çağrılmasını sağlar. Bu, Web uygulamaları geliştiren kullanıcılara katkı sağlar. Sayfa postback ve refresh yapılmadan server-tabanlı metodlar çağrılabilir çünkü web server ve browser arasında sadece veri alışverişi yapılır.

ASP.NET AJAX, Web servisleri için otomatik olarak Javascript proxy sınıflar (classes) yaratır. Proxy sınıflar ise Sys.Net.WebServiceProxy sınıfından türetilirler. Javasript proxy sınıfına karşılık gelen yada bu sınıfla haberleşen metodu çağırarak bir Web servis çağırabilirsiniz.  Detaylar için bu serinin ikinci makalesine göz gezdirebilirsiniz. (İkinci makale oluşturulduğunda link verilecektir.)

Diğer yandan ASP.NET AJAX, üye kimlik doğrulaması ve profiller gibi ASP.NET uygulama servislerini çağırabilmek için Javascript desteği sağlar.  Detaylar için bkz : ASP.NET Application Services.

Script İçinden Erişilebilir Web Servisler Yapmak

Web servislere script içerisinden erişilebilir ve ScriptServiceAttribute özelliğiyle nitelendirilen Web servis .asmx olmak zorundadır. Özgün metodları script içerisinden çağırmak için ise WebMethodAttribute özelliğiyle nitelendirilmek gerekmektedir.

Aşağıdaki kod bu özellikleri Web servis kodu içerisinde göstermektedir :


[ScriptService]
public class SimpleWebService : System.Web.Services.WebService
{
    [WebMethod]
    public string EchoInput(String input)
    {
        // Metodun geldiği alan
    }
}


Script içerisinden Web servis çağırmak için Web uygulamasının yapılandırılması gerekiyor. Uygulamanın Web.config dosyasında, .asmx Web servislerinin script içerisinden erişilmesini sağlayan, ScriptHandlerFactory HTTP tutucusu oluşturulmalı veya kayıt edilmelidir. Aşağıdaki örnek Web.config elemanına işleyici (handler) eklemeyi gösteriyor :


<system.web>
  <httpHandlers>
    <remove verb="*" path="*.asmx"/>    <add verb="*" path="*.asmx"      type="System.Web.Script.Services.ScriptHandlerFactory"       validate="false"/>
  </httpHandlers>
<system.web>


ASP.NET  Web Sayfası : Client Script Web Servisler

ASP.NET sayfasından client script bir web servis çağırabilmek için sayfaya ScriptManager kontolü eklenmelidir. ScriptManager kontrolünün bir elemanı olan asp:ScriptReference içerisinde yer alan path özelliğiyle Web servisininin yolunu gösterebilirsiniz. Client script içerisinden belirli bir Web servis çağırmak için ServiceReference nesnesi bir Javascript proxy sınıfı üretir bu işlemi yapabilmek içinse ASP.NET 2.0 AJAX uzantılarına talimat verir.

Aşağıdaki kod SimpleWebService.asmx isimli Web servisin ASP.NET Web sayfası içerisinden nasıl çağrıldığını göstermektedir.


<asp:ScriptManager runat="server" ID="scriptManager">
  <Services>
    <asp:ServiceReference
       path="~/WebServices/SimpleWebService.asmx" />
  </Services>
</asp:ScriptManager>


ServiceReference nesnesi sadece aynı domain içerisindeki bir Web servisten referans edilebilir. Web servis yolu, uygulama ve domain yoluyla ilişkili olmalıdır. Mutlak veya tam yollar için ise yolun aynı domain içerisinde yer aldığından emin olmanız gerekir.

ASP.NET Web Sayfasında Static Metod Çağırmak

Bir ASP.NET sayfasına static page metodlar ekleyebilir ve onları Web metod olarak nitelendirebilirsiniz. Daha sonra bu metodları script ile ayrıca .asmx dosyası oluşturmaya gerek olmadan çağırabilirsiniz . Bir sayfadaWeb metod oluşturmak için System.Web.Services namespace ve WebMethodAttribute özelliği her static metoda ayrı olarak eklenmelidir.

Static metodu Web metod olarak çağırabilmek için ScriptManager kontrolünün EnablePage özelliği true olmalıdır.


<asp:ScriptManager ID="ScriptManager1" 
            runat="server" EnablePageMethods="true">
</asp:ScriptManager>



 

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