Giriş
Son zamanlarda dilden dile dolaşan kelimelerden birisi AJAX. AJAX, Asenkronize JavaScript ve XML ifadesinin yerine geçen bir kısaltma ve uzaktan çağrıları gerçekleştirmek için kullanlan yöntemlerden birisi. “Uzaktan çağrı” müşteri ile sunucu arasında, sayfanın yeniden yüklenmesine veya yenilenmesine gerek olmaksızın enformasyon değiş tokuşu anlamına gelir. Uzaktan çağrı seçeneğini kullandığınızda sunucuya bir geri-bildirim yapılmaz ve dolayısıyla görüntülenecek olan sayfa müşteri tarayıcısına yeniden gönderilmez.
Uzaktan çağrıya niçin ihtiyaç duyarız?
Peki uzaktan çağrıya niçin ihtiyaç duyarız? Farz edelim ki içinde bir sürü veri barındıran – bunların bazıları görüntü dosyaları da olabilir- bir sayfanın görüntülenmesini sağlayacak bir web sayfası yazıyorsunuz ve uzaktan çağrı teknolojisinin herhangi bir sürümünü kullanmıyorsunuz. Başlangıç olarak, bu sayfanın sunucuda oluşturulması ve müşteriye gönderilmesi gereklidir.
Örneğin, diyelim ki sayfa üzerinde bir yerde, kullanıcı bir açılır-menüden bir ülkeyi seçtiğinde ülkenin baş kentinin gösterilmesini istiyorsunuz. Kullanıcı ülkeyi seçtiğinde, ülke isminin sunucuya geri gönderilmesi, ülkenin baş kentinin veri-tabanından çekilmesi ve sonucun müşteriye geri gönderilmesi gerekir. Sorun şu ki tek değiştirdiğimiz şey başkentin adı olsa da, daha sonra tüm sayfayı tekrar sunması ve tüm görüntüleri tekrar yükleyebilmesi için, tüm bir sayfayı baştan yaratmamız ve müşteriye geri göndermemiz gerekecektir. Tek değiştimek istediğimizin küçük bir tekst parçası olmasına rağmen yaşadığımız ne kadar da etkisiz bir süreç!
AJAX’la ise sadece yeni veriler gönderilir. Bu bize normalde kaybedeceğimiz bir sürü kaynağı kurtarma şansı sunuyor. Bu kaynaklar arasında web sunucusunun CPU zamanı (geri gönderilen sayfa çok daha küçük olduğundan), network trafiği (özelikle yavaş modem bağlantıları veya mobil telefonlar/GPRS kullanıldığında önem kazanıyor), ve hatta müşteri tarafındaki CPU döngüleri (HTML’in tekrar yüklenmesi ve kırılma noktasından talep edilmesi gerelmediğinden) yer alır. Yanıtlar AJAX sayesinde çok daha süratli olacaklardır ve bu da daha zengin bir kullanıcı deneyimi sunar.
Aldatmaca
Şu ana dek yazılanlardan uzaktan çağrının muhteşem bir teknoloji olduğu anlaşılıyor… peki o zaman sorun ne? Microsoft merkezli dünyada uzaktan çağrı sadece ASP.NET 2.0 ile gerçekleştirilebiliyor. Eğer bir web araması yaparsanız AJAX’ı ASP.NET 2.0’a nasıl uygulayabileceğiniz konusunda bir sürü makaleye ulaşabilirsiniz, ancak .NET 2.0 değil de daha eski bir sürüm kullanıyorsanız AJAX’ı o kadar da kolay uygulayamazsınız. İşte size alternatif.
Bu makale uzaktan çağrıyı AJAX ve XMLHttpRequest objesi olmadan gerçekleştimenin bir yolunu sunuyor. Aşağıda gösterilen teknik klasik ASP’de de kullanılabilir ve neredeyse tüm uzaktan çağrı ihtiyaçlarını karşılamaktadır. Gerçek kodları yazmaya başlamadan önce sizi bu prosedürün AJAX’ın tamaen yerini alabilecek bir süreç olmadığı ve ASP.NET sunucu kontrolleri ile tam bir uyumlulukta çalışmadığı konusunda uyarmamız gerekiyor.
Kod
Örnek kodu anlayabilmeniz için en azından temel bir HTML, JavaScript, CSS, ve ASP.NET bilgisine sahip olmanız gerekiyor.
Bir açılır-menü (Dropdown List) ile ülkelerin bir listesini gösteren küçük bir uygulama düşünün. Bir ülkeyi seçtiğinizde ve gönder tuşuna bastığınızda uygulama sunucuya gidecek veri-tabanını tarayacak ve size ülke ile ilgili detayları verecek olsun.
Burada biz de benzer bir uygulamayı örnekleyeceğiz ancak bu sefer asenkronize (uzaktan) çağrı yöntemini kullanacağız ve işleyişi basit tutmak adına sadece ülkenin baş kentinin geri dönmesini sağlayacağız. Ayrıca bu kodları okuyan kişilerin kafalarını bir sürü veri-tabanı erişim kodu ile karıştırmamak adına baş kentleri sert kod (hard-code) ile gireceğiz.
Listing 1: NoAjax1.aspx
function callServer() { serverData.innerHTML = ''; }
Yukarıdaki listelemede S1 adlı bir açılır-menü listemiz olduğunu görebilirsiniz. Bu menüde 3 farklı ülke (USA, UK, INDIA) yer alıyor ve açılır-menüye bir Değişiklik-Yapıldığında (OnChange) durumu ekledik. Ne zaman bir opsiyonu seçecek olursanız, o zaman bu durum sekmesi çalışmaya başlayacaktır. Söz konusu durum sekmesi müşteri tarafındaki “callserver” adlı JavaScript fonksiyonunu çağıracaktır. Bu yürütme, açılır menü listesindeki seçili nesne ne zaman değişikliğe uğrarsa o zaman sayfanın güncellenmesine neden olacaktır. Eğer fonksiyonun sadece kullanıcı bir butona bastığında gerçekleşmesini istiyorsanız, aynı kolaylıkla normal bir gönder butonu ve bir “Gönderildiğinde (OnSubmit)” durum yöneticisi ekleyebilirsiniz.
İpucu: Bu fonksiyona istediğiniz ismi verebilirsiniz.
Makalenin devamını AJAX Kullanmadan Uzaktan Çağrı Yapmak – 2 başlığı altında okuyabilirsiniz.



Kaynak : 