AJAX & JSON Mustafa Ahmet KARA
Arkadaşlar tekrar merhabalar, JSON’un tam olarak ne olduğu ve AJAX içerisinde nerede yer aldığıyla ilgili oldukça fazla soru ve yorum geliyor, dolayısıyla bu yazımda veri aktarım formatı olan JSON’un avantajları ve dezavantajlarından bahsederken, başka bir veri aktarım formatı olan XML ile farklılıklarından bahsedeceğim.
JSON’un en hoşuma giden tarafı sadece veri yapılarının aktarımı için tasarlanmış olmasıdır. Fakat XML’e baktığımızda herşey için tasarlanmış olmasıdır, gigabaytlarca veriyi gönderebilr, gelen veriyi valide edebilir, oldukça değişik tipte verileri ifade edebilir, veri öncelikleri, sıralamalarını yapabilir ayrıca insanların anlayabilmesi için daha hoş bir yapıya sahiptir. Kısaca burada bahis konusu edemediğim oldukça fazla sayıda özelliğe sahiptir.
Fakat sadece browser ve sunucu arasındaki AJAX kullanımında XML kullanımı; verilerin sadece aktarılmasında ek yük getiren veri açıklama etiketleri kullanmayı gerektirir. JSON ise bu işlem için daha küçük boyutta veri üretecektir. Bu işlem için SweetXML ve Yaml gibi alternatifler de mevcuttur ama JSON’un JavaScript alt kümesi olduğu için dönüşüm ve kullanım işlemleri oldukça kolaydır.
JSON’un tek bir amaç için ortaya çıkarılmış olması, validasyonların olmaması, XML şemaları gibi özelliklerinin olmaması, geliştirilebilir olmaması; XML ‘e göre verinin aktarım formatına dönüştürülmesinde, aktarılmasında ve tekrar verinin inşasında daha hızlı ve kolay olmasını sağlamaktadır. XML ile bu işler doğal olarak daha karmaşık bir haldedir.
Bunlar JSON tarafında eksiklik olarak görülebilir ama JSON AJAX uygulamalarında gönderilmek istenen veriye en az miktarda eklenti yapılarak, javascript ile rahatça kullanılmasını sağlamak için yapılmıştır. XML’in bu şekilde bir amacı olmamıştır ve olmayacaktır. Ama genişletilmiş bir XML tipi olan SweetXML bunu hedeflemektedir. Ama SweetXML’in yapısı da XML standartlarına da aykırıdır.
XML’in çoklu dil desteği JSON’a göre daha yeteneklidir. Her ne kadar XML Standartlarında belirtilmesede gördüğüm tüm XML-Parser’ler XML dokümanı içinde bulunan encoding ayarlarına göre dil desteğini çok rahat ayarlar. Fakat JSON verisinde varsayılan olarak UTF-8 seçilmiştir ama JSON verisini oluşturan sistem farklı bir dil desteğini teorik olarak kullanamaz. XML ile istediğiniz herhangi bir dil de çalışabilirsiniz. Gerçi Unicode çalışmak var iken başka bir dile ihtiyacımız yok diyenleriniz vardır ama AJAX içerisinde herhangi bir karakteri iki bayt ile ifade etmek yerine tek bayt ile ifade etmek aktarılacak veri boyutunu otomatik olarak yarı yarıya azaltacaktır.
Tecrübelerimden yola çıkarak metin tabanlı ağır olmayan verileri transfer etmek istediğinizde, ve karşı tarafın doğru olarak bu veriyi yorumlayabileceğinden 100% eminseniz, kolay serileştirme ve çok az bir çabayla kolay geri dönüşüm için JSON kullanmanızı önerebilirim. Ama karşı tarafa tam olarak güvenmiyor iseniz ve veri ile garip işlemler yapabileceğinden şüpheneliyorsanız, veri yerine doküman gönderiyorsanız, veya veri uzun süreli yaşayacaksa (saklama ihtiyaçları var ise) XMLi kullanmanızı öneririm.
Tabii ki verinin aktarım formatını binary seçmek en etkili yoldur ama AJAX söz konusu olduğunda şu anda elimizde olan teknoloji ile bu şekilde bir aktarım mümkün değildir.
AJAX doğası gereği browser’lar ile Web Uygulamalar, Web Servisleri arasında asenkron/senkron veri iletişimini sağlar. Bu veri aktarım sürecini ise aşağıdaki adımlarla inceleyebiliriz.
- Veri İsteği; tarayıcı sunucuya parametreler göndererek bir veri kümesi ister.
- Veri Üretimi; sunucuda bulunan program/servis/sunucunun kendisi bir şekilde tarayıcıya gönderilecek olan veriyi üretir.
- Veri Dönüşümü; sunucu bu veriyi tarayıcının anlayabileceği text tabanlı bir formata döndürür. Bu kısımda ise HTML/XHTML, XML,JSON, JavaScript, XPM (XPM2/XMP3), SVG,VML gibi değişik yapıları ifade edebilen text formatlarına döndürür. Resim, Sıkıştırılmış dosyalar gibi binary formatları es geçiyorum çünkü tarayıcıda işleme yeteneğimiz çok sınırlıdır.
- Veri Transferi; tarayıcı XMLHttpRequest ile sunucudan veriyi alır.
- Veri Dönüşümü; gerekli ise browser tarafındaki JavaScript sorumlu kodu veriyi geri dönüştürür.Örnek olarak HTML/XHTML için dönüşüme gerek yoktur.
- Veri Kullanımı; tarayıcı üzerinde çalışan javascript kod parçası gelen veriyi bir şekilde kullanır.
Yukarıdaki süreç tarayıcıdan sunucuya veri gönderiminde de hemen hemen aynı şekilde çalışır. Bu sürece baktığımızda performansı ve kullanımı etkileyecek olan noktaları incelediğimizde, Veri Transfer işleminin en çok performansı etkileyeceğini rahatça söyleyebiliriz ;çünkü bu aşamada fiziksel olarak ayrı iki makine arasında veri transferi gerçeklenmektedir. Veri Transfer işleminin performansını arttırmanın AJAX dünyasında en etkili ve kolay yollarından biri ise aktarılacak veri boyutunu azaltmaktır çünkü aktarım işlemlerini browserlar kendileri hallederler ve bize pek bir imkan sunmazlar. Veri Transferinde da kullanılacak olan formatı değiştirmemiz ise Veri Dönüşüm işlemlerini de değiştirecektir ve toplam performansı etkileyecektir. ( Performans kriteri olarak toplam işlem süresi göz önüne alınmıştır)
Bu kapsamda veri aktarım formatlarını inceler isek HTML/XHTML aslında bir XML alt kümesidir, XML den tek farkı dönüşüm ihtiyacı yoktur direkt olarak kullanılabilir, dolayısıyla XML olarak bu dokümanda bahis konusu edilecektir. XPM,SVG ve VML gibi formatlar resim/vektör aktarım formatlarıdır bunlar özel ihtiyaçlar için veri formatı olduğundan alternatifleri zaten yoktur. Fakat AJAX içerisinde kendi yazdığımız uygulamanın sunucu ve browser arasındaki veri aktarım işlemleri söz konusu olduğunda XML ve JSON birbirlerinin yerine geçebilecek veri formatlarıdır.
Sayfalar: 1 2
Toplamda 5035 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 4 kişi aynı anda okumuş.
Bugün 1 kez okunmuş.
Etiketler: ajax, javascript, json, XML
Trackback Yorumları takip et Baskı Önizleme

(13 oy, ortalama 4.38)
# sinan | 06 Ekim 2007, 19:37
bÖYLE FAYDALI BİLGİLER VEDİĞİNİZ İÇİN TEŞEKKÜR EDERİM………
# sinan | 07 Ekim 2007, 15:31
Bu yazılarınızdan dolayı tebrik ediyorum.
# Hakan Bilgin | 22 Ekim 2007, 16:57
Sehirler XML ile böyle daha iyi ve kisa yazilabilir;
XML’i XSLT ile HTML’e cevirmek daha iyidir ve dahada temiz (tabiki JS’lede cevirilebilir). JSON’u ancak javascript ile HTML’e cevirilir. XSLT, JSON’dan daha hizlidir. Birde, XML’i XPath kullanarak hizli ve temiz bilgiler edinilebilir. JSON’la bu tip seyler yapilabilir ama daha yavas vede en önemlisi; ek kutuphanerle ancak.
# Seo | 03 Kasım 2007, 14:59
Tebrik ederim. Çok güzel bir makale hazırlamışsınız. Yavaş yavaş ajax konusuna eğilmenin zamanı gelmişti. sayenizde temelleri atmaya başladık.
Başarılarınızın devamını dilerim.
# eburhan.com » jQuery ve JSON işlemleri | 08 Mart 2008, 10:32
[…] JSON ve XML […]
# İbrahim ZORLU | 26 Mart 2008, 18:27
Çok açıklayıcı ve güzel bir anlatım olmuş. Bu çalışmanız için size çok teşekkür ediyorum.
# Rıdvan | 11 Haziran 2008, 13:53
başlangıç için çok güzel ve açıklayıcı bir giriş… ama bence nasıl olduğu değil NE olduğu konusunda daha fazla durulmalı…. zira insan NE olduğunu bildiğinde NASIL olduğunuda öğrenmenin kapısını açıyor kendine… teşekkürler