mehmetduran.com - Paylaşmak Güzeldir...
Asp.net Ajax İşlemlerinde ResponseFormat Belirtimi
Bu yazımda Ajax işlemlerinde ResponseFormat belirtiminden bahsedeceğim. Bu belirtim Ajax işlemlerinde performans, kullanışlılık, kolay kullanım gibi kriterler için önemli. ResponseFormat belirtimini hem Webforms projeleri için hem de MVC projeleri için nasıl yapabileceğimizi göstermeye çalışacağım. ResponseFormat özelliği Ajax işlemlerinde dönen sonucun hangi türde olduğunu belirtir ve XML veya JSON olabilir. Eğer sonuç JSON tipinde olursa sonuç JSON biçimine dönüştürülerek elde edilir. XML tipinde olur ise de XML yapısına dönüştürülerek elde edilir. Şimdi bu yöntemlerin nasıl kullanılacağını ve ne zaman kullanılacaklarını irdeleyelim.

Burada iki yapının daha iyi anlaşılması için daha önce sitemde paylaştığım User Control render eden ve sonucunu string olarak dönderen metotları kullanacağım. Burada aynı işlemde sonucu hem JSON tipinde hem de XML tipinde elde edeceğiz. Kodlarımız (webmetotlarımız) şöyle.

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
    public static string MetotXML()
    {
      return UserControlRender("~/Ajax.ascx");
    }
 
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string MetotJson()
    {
      return UserControlRender("~/Ajax.ascx");
    }

Görüldüğü gibi ResponseFormat özelliğini bu şekilde belirtiyoruz. Bu belirtimi webmethodlara attribute (özellik) atama biçiminde yapıyoruz ve ScriptMethod özelliğini ekliyoruz. Bu özellik içinde de ResponseFormat tipini belirtebiliyoruz. (ScriptMethod özelliği için System.Web.Script.Services namespace'ni kullanıyoruz. Ayrıca ResponseFormat özelliğini belirtmez isek default olarak JSON atanır.)

Paylaştığım kodlar Ajax işlemlerinde en çok kulanılan yöntemlerden biridir. Belirli bir yapının içeriğini elde etme ve bu içeriği sayfada bir yerlerde gösterme yöntemidir. Burada ResponseFormat tipi olarak kullanmamız daha mantıklı olan tip XML'dir. Çünkü string veri işlemlerinde eğer formatımız XML olursa herhangi bir dönüştürme işlemi olmadan verileri elde edebiliyoruz. Eğer JSON olursa elde edilen sonuç JSON türüne dönüştürülür. Bu dönüştürme işlemi bazen sıkıntı yaratabilir. Eğer dönüştürülecek verinin boyutu çok büyük ise sorun çıkabilir. Bu sorunu yaşamamak için projelerimize JSON dönüştürme işlemi için karakter sınırı belirtebiliriz. Bu belirtimi web.config dosyasında şu şekilde yapabiliyoruz.

    // JSON dönüşümü için Web.config dosyasına eklenecek değerler
 
    <system.web.extensions>
      <scripting>
        <webServices>
          <jsonSerialization maxJsonLength="1000000"></jsonSerialization>
        </webServices>
      </scripting>
    </system.web.extensions>

String işlemlerinde XML kullanmak daha mantıklı. Çünkü JSON'da olduğu gibi bir dönüşüm yok. Verileri olduğu gibi elde edip kullanabiliyoruz. Aşağıda hazırladığım kodların çalışır halinin Firebug görüntüsü var. Burada nasıl bir dönüşümün yapıldığını görebiliriz.

Asp.net Ajax İşlemlerinde ResponseFormat Belirtimi

Eğer Ajax işlemlerinde string veri türü değil de başka veri türleri üzerinden çalışıyor isek bu sefer XML yerine JSON kullanmamız daha mantıklıdır. Çünkü JSON tipi hem oluşturma hem de sorgulama performansı açısından XML tipine göre daha iyidir. Aşağıda yazdığım Insan nesnesi üzerinden Ajax işlemi gerçekleştiren ve tipi XML ve JSON olan işlemlerin görüntüsünü bulabilirsiniz.

Asp.net Ajax İşlemlerinde ResponseFormat Belirtimi

Buradaki gibi kullanımlarda (string olmayan kullanımlarda) mantıklı olan JSON tipidir. Çünkü verinin oluşturulması ve sorgulanması XML tipine göre daha iyidir. Elde edilen verileri sorgulamak için jQuery kütüphanesi yeterli. jQuery ile hem JSON tipindeki verileri hem de XML yapısındaki verileri sorgulayabiliyoruz. Bu konuda daha önce yazmış olduğum yazılar incelenebilir.

Asp.net MVC projelerinde ise bu belirtimi ayrıca yapmaya gerek yok. MVC projelerinde zaten bu türde veri dönderen ActionResult türleri tanımlandığı için hangi tipte veri dönderecek isek o türde bir ActionResult kullanmalıyız. Örneğin JSON tipinde veri dönderecek isek JsonResult, XML türde dönderecek isek ContentResult, PartialViewResult vb. ActionResult türlerini kullanabiliriz.

Her iki sonuç türünü de duruma göre kullanabiliriz. Ancak burada dikkat etmemiz gereken noktalar var. Örneğin jQuery Ajax metodunu kullanıyor isek dikkat edilecek noktalardan biri Ajax isteğinde dataType özelliğini ResponseFormat özelliğine uygun olacak biçimde belirtmemiz lazım. Eğer ResponseFormat JSON ise dataType json, XML ise de html veya xml olmalıdır.

Ajax işlemlerinde ResponseFormat belirtimini nasıl yapacağımızı ve hangi durumlarda hangisinin tercih edilmesi gerektiğine değinmeye çalıştım. Bundan sonra Ajax işlemlerinde bu özelliklere dikkat etmekte fayda var diye düşünüyorum.

İyi Çalışmalar.
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Asp.net MVC Areas (Birden Fazla Proje Kullanarak) Jcrop ve Asp.net ile Resimleri Kesme (Örnek Dahil) Asp.net'te Master Page'i Etkin Kullanma Asp.net ile Xml Belgeleri Okuma jQuery Ajax ile Filtreleme İşlemlerinde Zamanlama Kullanma
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Ali Tepe 29 Haziran Salı 2010 23:56 #1
Kardeşim ciddi manada büyük yardımların oluyor. Bundan dolayı teşekkür ederim. Sorum şu table height 100% verdiğimde çalışmıyor. DOCTYPE html PUBLIC...... Bu tagi kaldırıp başka taglar eklediğimde bu seferde css kodlarımda hatalar oluşuyor.Yardımcı olursan çok sevinirim.
Mehmet Duran 30 Haziran Çarşamba 2010 22:53 #2
Merhaba. Ben de teşekkür ederim. Soruna gelince de yaşadığın sorunun doctype tagı ile bir ilgisinin olduğunu sanmıyorum. Bu taga dokunmadan sadece CSS kodlar ile sorunu çözmeye çalışmalısın. Muhakkak bir çözüm vardır. Kodları görmeden çözüm ile ilgili birşey söyleyemem.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Ne edersen kendine, edersin kendi kendine.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009