Asp.NET MVC – Ajax
Her ne kadar Asp.NET MVC mimarisinde Asp.NET Web Forms mimarisine kıyasla Server yoğunluğu hafifletilmiş olsada Client tabanlı algoritmalara zaman zaman ihtiyaç duyarız.Günümüz web sitelerinde her hangi bir tetiklenme anında sistemin Server ile etkileşimini ziyaretçilere yansıtmamak programcılar tarafından tercih edilmektedir.JQuery, JavaScript ve Ajax vb. gibi mimariler desteğiyle siteler tasarımsal açıdan dinamikleştirilip kısmi zamanlı çalışmalar tercih edilmektedir.Haliyle bu yazımızda Asp.NET MVC ile Ajax konusunu ele alıp irdeleyeceğiz.
Öncelikle “Ajax nedir?” sorusunun cevabını verelim.
“Asynchronous JavaScript and XML” kelimelerinin baş harflerinden oluşan, Türkçe anlamı “Eş Zamansız Javascript ve XML” olan Client tabanlı bir programlama dilidir.
Burada dikkatinizi çekmek isterim.Client tabanlı diyoruz, yani web sayfalarında JavaScript ve XMLHttpRequest ile etkileşimli uygulamalar oluşturmamızı sağlayan bir teknoloji yapısından bahsediyoruz.
Ajax ne işe yarar?
Asp.NET Web Forms mimarisinde herhangi bir buton ile belirli bir olay tetiklendiği anda sayfanın tamamı Server’a gönderilir ve gerekli işlemler yapıldıktan sonra sonuç yeniden Client tarafına gönderilir.Bildiğiniz gibi biz bu işlemi POST/BACK adıyla nitelendiriyoruz.Bu durumda, sayfanın hepsini kullanmasakta tamamen gönderilmesi performans kaybına sebep olacaktır.Haliyle bu mantık Asp.NET MVC mimarisiyle aşılmış olsada aynı durumdan MVC mimariside muzdariptir.Çünkü tetiklenme anında gerekli Controller çalıştırılsada bütün sayfa POST edilmekte ve yeniden sonuç yüklenmektedir.
Ajax mimarisi ile sayfanın tamamının Server’a gönderilmesine gerek kalmadan belirli alanlarda değişiklikler ve güncellemeler yapılabilir.Bu asenkron bir yapıda olacağından dolayı ziyaretçiler POST/BACK olayını görmeyeceklerdir.(Asp.NET MVC mimarisi POST/BACK mantığıyla çalışmamaktadır.Lakin her hangi bir Server işlemi esnasında sayfanın gidip gelmesini başka bir isimle nitelendirmek pek benzer bir örnek olmayacağından dolayı POST/BACK ismini tercih etmekteyim.)
Peki Asp.NET MVC ile Ajax mimarisini nasıl bir mantıkla kullanabiliriz?
Asp.NET MVC mimarisinde, Ajax mimarisine özel yapılar bulunmaktadır.Bu yapıları kullanarak, View katmanında JavaScript ile Controller katmanı içerisinde belirtilen metodu tetikleyeceğiz ve geri dönen veriyi istediğimiz alanda göstereceğiz.Temel mantık budur.
Ajax mimarisinin özel yapılarına “Html Helper” ve “JavaScript” kütüphanelerinden ulaşabiliriz.
Yani anlayacağınız, Asp.NET MVC mimarisinde Server yapısı genellikle Controller katmanından ibaret olduğu için herhangi bir Server işleminde sayfa yenilenmeden Controller katmanıyla asenkron yapıda iletişim kurabileceğiz.
Asp.NET MVC’de Ajax ile çalışacağımızda hangi kütüphaneler projeye import edilmelidir?
Asp.NET MVC Ajax kütüphaneleri JQuery ile desteklenerek daha sade ve hızlı bir “Ajax Helper” kütüphanesi oluşturulmuştur.Bu kütüphanenin adı “Unobtrusive JavaScript” tir.Bu kütüphaneyi kullanmak için öncelikle web.config dosyasında “AppSettings” altındaki “UnobtrusiveJavaScriptEnabled” alanı “true” değerine sahip olmalıdır.
<appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings>
Ardından ister “_Layout.cshtml” sayfasına istersenizde herhangi bir View sayfasına aşağıdaki kütüphaneleri eklemeniz yeterlidir.
@Scripts.Render("~/Scripts/jquery-1.8.2.min.js", "~/Scripts/jquery.unobtrusive-ajax.min.js")
Evet artık Ajax ve Asp.NET MVC mimarisiyle Ajax’ı kullanma mantığı konusunda bilgiler edinmiş olduk.Bundan sonraki yazılarımda programatik Ajax işlemlerini inceleyeceğiz.
Sonraki yazılarımda görüşmek dileğiyle…
İyi çalışmalar…