WebMethod'larla AJAX Sayfalarını Daha da Hızlandırın!

ASP.NET AJAX istemci ve sunucu merkezli çalıştığı için mimarisi gereği sayfada asenkron postback işlemi başlatsak dahi sunucu tarafında sayfamızın yaşam döngüsü tam olarak çalışmakta ve sayfa baştan itibaren üretilmekte, fakat istemciye sadece UpdatePanel'in içeriği gönderilmektedir. Bu işleyiş aslında kötü bir durum gibi gözükse de ASP.NET sayfa mimarisi açısında gerekli bir işlemdir ki; çoğu noktada faydalarını da görebiliriz. Olayın diğer tarafına bakacak olursak sayfanın sunucu tarafında baştan üretilmesi biraz da olsa yavaşlığa sebep olacaktır. Eğer sayfanızda bir kontrolün içeriğini asenkron olarak güncellemek ve bu işlemi hızlı bir şekilde yapmak istiyorsanız sunucu tarafında çalışacak static metotlar oluşturarak istemci tarafında hazırlayacağınız basit JavaScript fonksiyonlarıyla da asenkron güncelleme işlemini gerçekleştirebilirsiniz. Metot static olduğu için sunucuda sayfanın nesne örneği üretilmeden de çağrılabilir bir metot olacaktır. Metot ile ilgili en önemli husus ise System.Web.Services isim alanı altındaki WebMethod niteleyici (attribute) sınıfını uygulaması gerekeceğidir. Böylece istemcide hazırlanan JavaScript fonksiyonu bu metodu asenkron olarak çağırabilecektir. Metot HTML içeriği güncelleyeceği için string değer döndürmelidir. Aşağıda sayfamızın code-behind kısmına yazabileceğimiz örnek metot bulunmaktadır.

[System.Web.Services.WebMethod]

public static string KareKok(int sayi)

{

    return Math.Sqrt(sayi).ToString();

}

Gelelim istemci tarafında yapacaklarımıza. Burada en ilgi çekici durumlarımızdan birisi UpdatePanel'e ihtiyaç duymadan da bu işlemi yapabilmemiz. Bir diğer ayrıntımız ise ScriptManager ile ilgili. Sunucu tarafında yazılmış WebMethod attribute'unu uygulayan static metodu çağırabilmemizi sağlayan PageMethods isimli JavaScript fonksiyonunu kullanabilmek için ScriptManager'ın EnablePageMethods özelliğini true olarak ayarlamamız gerecektir. Yine istemci tarafında çalışacağımız için sunucu kontrolleri yerine HTML kontrolleri kullanmamız da herhangi bir sakınca yok. İstemci tarafında hazırladığım kodları aşağıda görebilirsiniz.

<head id="Head1" runat="server">

    <title>Untitled Page</title>

    <script language="javascript">

        function AsenkronMetotCagir()

        {

            // Sunucudaki static metodu çağırıyoruz. Sonucu IslemBitti metoduna iletiyoruz

            PageMethods.KareKok(form1.txtSayi.value, IslemBitti);

        }

        function IslemBitti(deger)

        {

             // İşlemin sonucunu sonuc adındaki span etiketine yazdırıyoruz

            document.getElementById('sonuc').innerHTML = deger;

        }

    </script>

</head>

<body>

<form id="form2" runat="server">

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

    <input type="text" id="txtSayi" />

    <input type="button" value="Karekök Bul" onclick="AsenkronMetotCagir();" />&nbsp;<br />

    <span id="sonuc"></span>

</form>

</body>

Bu şekilde sunucu tarafında sayfanın baştan üretilmesine gerek kalmadan çok daha hızlı bir şekilde asenkron güncelleme işlemleri yapabilmekteyiz. Buradaki en büyük sıkıntılarımızdan birisi ise HTML kodunu kendimizin oluşturması gerekeceğidir. Eğer gridview, detailsview gibi kompleks bir kontrolün çıktısını elde etmek istiyorsak ilgili kontrolleri programatik olarak oluşturup RenderControl metodu ile de HTML çıktılarını istemciye yine static metot aracılığıyla gönderebiliriz.

12 Kasım 2007 Pazartesi 13:48

Yorum - RSSYorumlar (2)

Etiket:
Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

ASP.NET 3.5 ile Gelen Yenilikler

Önümüzdeki günlerde resmen duyrulacak olan Visual Studio 2008 ve .NET Framework 3.5 ile birlikte ASP.NET'te 3.5 sürümüne ulaşmış olacak. Öncelikli olarak şunu belirtmeliyim ki bu sürümde ASP.NET 1.1'den ASP.NET 2.0'a geçişteki gibi köklü yenilikler olmayacak. Fakat gelen yenilikler içerisinde AJAX ve LINQ'nun olduğunu belirtecek olursak aslında bizi oldukça önemli yeniliklerin de beklediğini söyleyebilirim. Dikkatimi çeken noktalardan biri ASP.NET Futures paketi ile gelen bazı kontrollerden şu an için Microsoft'un sitesinde bahsedilmemesiydi. Önceki postumda yer alan .NET Framework 3.5 Namespace ve Class'ları listesinde de yer almayan bu kontroller sanırım başka bir bahara bırakıldı. ASP.NET 3.5 ile gelecek yenilikleri aşağıdaki başlıklarla sizlere aktarmaya çalışacağım.

ASP.NET AJAX Entegrasyonu
ASP.NET AJAX, ASP.NET ortamında hızlı ve kolay bir şekilde AJAX uygulamaları geliştirmemizi sağlayan ücretsiz bir AJAX framework'üdür. ASP.NET 2.0'ın ardından duyrulan ve bu yılın başında resmi sürümü çıkarılan AJAX Extension'ları ASP.NET 3.5 ile mimariyle bütünleşik şekilde geliyor. Visual Studio 2008'de açılan ASP.NET 3.5 web uygulamasında AJAX Extension kontrollerini kullanarak hızlı şekilde AJAX uygulamaları geliştirebiliyoruz. Bu sürümü ile birlikte bazı eksiklikler ve sorunlar giderilerek artık ASP.NET AJAX'ın sunucu kontrolleriyle tam uyumlu şekilde çalışması da sağlanıyor. Visual Studio 2008 ile birlikte Control Toolkit'te yer alan kontrollerin varolan sunucu kontrollerine çok kolay şekilde entegre edilebilmesi de işimizi kolaylaştıracak bir yenilik olarak göze çarpıyor.

LINQ (Language Integrated Query)
.NET Framewrok 3.5 ile birlikte artık web uygulamalarında da Linq hayatımıza girecek. Linq dil ile bütünleşik olarak sorgulamalar yapmamızı sağlayan bir query şeklidir diyebilirim. Veritabanında SQL query'leri kullanarak nasıl sorgulamalar yapıyor ve sorgu sonucunu elde edebiliyorsak, artık C# veya VB.NET gibi bir dil ile de uygulama içerisindeki bir nesnenin içeriği ile ilgili SQL sorgu cümlelerine benzer şekilde sorgulamalar gerçekleştirebileceğiz. ASP.NET 3.5 ile gelen kontrollerden biri olan LinqDataSource kontrolü de bu tip sorgulamaların sonucunu bir veri kontrolüne (GridView, DataList gibi) bağlayabilmemizi sağlıyor.

ListView ve DataPager Kontrolleri
LinqDataSource
kontrolü dışında ListView ve DataPager adında iki yeni kontrol daha geliyor. ListView veri ekleme, güncelleme, silme, sayfalama gibi işlemleri yapabilen ve GridView kontrolüne oldukça benzer bir kontrol. GridView'daki en büyük sıkıntılarımızdan biri görüntülenecek olan verilerin HTML arayüzlerini tasarlamakta karşılaştığımız sorunlardı. ListView kontrolü ise yapısındaki template'ler aracılığıyla verilerin görüntüleneceği arayüzün HTML kodlarını dilediğimiz gibi oluşturabilmemizi sağlıyor. DataPager kontrolü ise ListView ile yapılan işlemlerde kayıtların esnek şekilde sayfalandırılması işleminde kullanılıyor. Bu kontrolün yaptığın temel işlemin sayfalama kısmının ne şekilde görüntüleneceği ve çalışağını belirlemek olduğunu söyleyebilirim. Örneğin sayfa numaralarının görüntüleneceği kısma bir TextBox kontrolü ekleyip yazılan numaradaki sayfaya gidilmesi işlemini DataPager kontrolü ile oldukça kolay şekilde gerçekleştirebiliyoruz.

Web Servislerinde WCF Desteği
Web servisleri artık .NET Framework 3.0 ile gelen WCF (Windows Communication Foundation) desteği ile geliştirilebiliyor. JSON kullanılan AJAX uygulamalarında ve RSS kaynaklarından veri sağlanması gibi işlemler artık WCF ile daha da kolay şekilde gerçekleştirilebilecek.
6 Kasım 2007 Salı 01:03

Yorum - RSSYorumlar (0)

Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Bağlantılar



Takip Et

RSS Feed twitter friendfeed

Seminer/Webiner Programım

  • Seminer-WebinerASP.NET 4.0 WebForms Yenilikleri (Microsoft İstanbul Ofisi)
    29 Mayıs 2010

  • Seminer-WebinerVisual Studio 2010 Yenilikleri (Osmangazi Üniversitesi)
    15 Mayıs 2010

  • Seminer-WebinerASP.NET AJAX ile Zengin Internet Uygulamaları Geliştirme (Microsoft İstanbul Ofisi)
    3 Mayıs 2010

>> Etkinlik Takvimi