Makale Özeti

Günümüz web uygulamalarında ajax geliştirme yöntemiyle meydana gelen atlas teknolojisinin temel yapısında çok önemli bir nesne yatmaktadır. Dilerseniz hemen bu nesneyi tanımaya başlayalım..

Makale

Ajax (Asynchronous Javascript and XML) artık web uygulamalarında çok büyük değişikliklere ve güzelliklere yol açtı. Bizde bu güzelliklerden yararlanmak için elbette araştırmalar yapıyoruz ve ajax’ın nimetlerinden faydalanmaya çalışıyoruz. Öncelikle Ajax bir teknoloji değil bir geliştirme yöntemidir. Bu makalemizde Ajax’a değilde XMLHttpRequest nesnesine odaklanmaya çalışacağız.

Öncelikle Ajaxtan biraz bahsedeyim. Ajax, ismini bu yöntemi kullanan topluluklar tarafından almıştır. Bu yöntem sayesinde Javascript dili ve XML aracılığıyla bir sayfayı tamamen sunucuya göndermeden (postback) ya da yeni bir URL çağırmadan sadece sayfamızın belirli bir kısmanı güncelleyerek, sayfanın sunucuya tamamen gidip gelmesini engellemiş oluruz. Dolayısıyla hem zaman kazanmış oluruz, hem de bu boşluğu güzel görsel detaylarla süsleriz.

Ajax’la beraber hayatımıza giren bir yenilikte (aslında yenilik demek biraz yanlış olur) XMLHttpRequest nesnesi. Ajax tipi geliştirme, Microsoft’un birkaç yıl önce geliştirmiş olduğu bir ActiveX bileşeni kullanılarak yapılmakta. Bu bileşenin adı da XMLHttpRequest. Çeşitli rivayetlere göre XMLHttpRequest ilk olarak Internet Explorer’ın 5.0 versiyonunda implemente edilmiş. Yani bu teknik ilk olarak Microsoft tarafından oluşturulmuş ve kullanılmış. Bu tekniğin faydaları görüldükçe de, Opera, Mozilla, Safari, Netscape gibi web tarayıcıları da bu bileşeni kendi browserlarına implemente ettiler. Yani bu bileşenimiz artık tüm popüler browserlarda kullanılmakta.

Ne demiştik sayfa sunucuya gönderilmeden geliyordu. Nasıl geliyor? İşte burada XmlHttpRequest’in faydaları ortaya çıkıyor. Bu nesnemiz asenkron bir şekilde istekte(request) bulunabiliyor ve yine asenkron bir şekilde isteğine karşılık cevap(response) verebiliyor. Örneğin bir web uygulaması geliştiriyoruz. Kullanıcımıza bir button ve bir textbox sunuyoruz. Kullanıcı buttona tıkladığında textbox’a girmiş olduğu veri istemci tarafında çalışan bir script aracılığıyla sunucuya gönderiliyor ve sunucudan cevap geri dönüyor. Ancak tüm bu işlemler sayfanın arkasında yapıldığından diğer içerikler sunucuya gönderilmiyor ve hem sunucu kaynakları boşa kullanılmıyor hem de kullanıcı işlemlerini çok daha hızlı gerçekleştirebiliyor.

Bu arada ASP.Net 2.0 desteği veren hosting firmaları Atlas teknolojisini de desteklemekte. Bizim yapmamız gereken ise uygulamamızın bin klasörü altında Microsoft.Web.Atlas.dll’i bulundurmak. Atlas Framework’ü sistemimize eklediğimizde bin klasörü içerisine Microsoft.Web.Atlas.dll’i otomatik olarak gelecektir. Ayrıca Visual Studio.Net 2005 IDE’sinde Atlas desteği yok. Bunu da http://atlas.asp.net resmi web sitesinden indirebildiğimiz bir eklenti sayesinde elde edip kolayca kurabiliyoruz.

Peki bütün bu açıklamalardan sonra gelelim XMLHttpRequest nesnesinin nasıl kullanılacağına. XMLHttpRequest istemci tarafında yaratıldığı için tarayıcıya farklı isimlerde kullanılır. Internet Explorer tarayıcılarında aşağıdaki javascript koduyla bir XMLHttpRequest nesnesi yaratılabilir;

var xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);

Eğer istemci browserında Msxml2 bileşeni kurulmuşsa bu yeni versiyon kullanılarak aşağıdaki gibi de XMLHttpRequest nesnesi oluşturulabilir;

var xmlhttp = new ActiveXObject(“Msxml2.XMLHTTP”);

Bazı browserlarda ise ancak aşağıdaki kodlarla bir XMLHttpRequest nesnesi oluşturmak mümkündür;

var xmlhttp = new XMLHttpRequest();

Bütün bu detaylardan sonra Ajax yöntemini uygulayan web uygulamalarında bir XMLHttpRequest nesnesi yaratmak genellikle aşağıdaki kod bloğu ile mümkündür. Bu javascript kod bloğunda yapılan iş XMLHttpRequest nesnesinin farklı browserlarda kullanıldığında oluşturulması gerekmektedir. (Gmail’de bu yöntemi kullanmaktadır.) Bizlerde ajax yaklaşımını kullanmak istersek bu javascript fonksiyonundan yararlanmalı ve elimizin altında bulundurmalıyız.

function xmlhttp_olustur()
{
var rdeger=null;
try
{
rdeger=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
rdeger=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc)
{
retdeger=null;
}
}

if(!rdeger && typeof XMLHttpRequest != "undefined")
{
rdeger=new XMLHttpRequest();
}

return rdeger;
}

Bu fonksiyondan sonra kalan tek şey XMLHttpRequest nesnesinin open metodu kullanılarak bir web sayfasına post yada get yöntemi ile istekte bulunmak.

Örnek kullanım : xmlhttpnesnesi.open(“GET”, “MakaleSayisi.aspx”, true);

Şimdi XMLHttpRequest nesnesinin metod ve özelliklerini hazırlamış olduguğum tablolar yoluyla öğrenelim.

XMLHttpRequest konusunda önemli ipuçları:

- XMLHttpRequest nesnelerini kullanarak bir web sayfası üzerinde aynı anda birden fazla asenkron işlemi yapabiliriz. Ancak bunun için birden fazla XMLHttpRequest nesnesi kullanmalıyız. Google Maps uygulaması bunun için en güzel örneklerden biri.

- XMLHttpRequest ile bir asp.net web formunu çağırdığımızda hep aynı sonucu alıyorsak(sık görülen bir problem) mutlaka browserımızda cache’lenmiş veriyi bize yollamaktadır. Bunu önlemek için istekte bulunulan sayfada cache işleminin engellememiz gerekir. Şu kod işimize yarayacaktır;

Response.ContentType = "text/html";

Response.AddHeader("Cache-Control", "no-cache");

XMLHttpRequest’in yaptığı işlem normal bir browserın yaptığı işten çok farklı değil aslında. En büyük farkı asenkron bir şekilde aynı sayfa içinde yapması.

Bu yüzden XMLHttpRequest nesnesi ile sorgulanan web sayfasının html çıktısı ne ise responseText ile alınan o metindir.

Evet böylelikle makalemizin de sonuna geldik. Umarım XMLHttpRequest nesnesi hakkında kafanızdaki soru işaretlerinin bir kısmını da olsa silmiş olmuşumdur.

Ajax’ın nimetlerinden yararlanmaya tam gaz devam etmeniz dileğiyle..

Farklı makalelerde görüşmek üzere.

Yağız GÖNÜLER

yagizgonuler@gmail.com