Ana içeriğe atla

Ajax Nedir?

Ajax Nedir?
Internette ajax ile ilgili yüzlerce makale bulunuyor, fakat bir tool yada karsilasilan bir hata ile ilgili arama yaptigimizda yüzlerce baslik arasinda kayboluyoruz çogu zaman. Bu yüzden Ajax ile en basitten baslayip tüm içerigi kapsayacak seriler halinde makaleler yazmayi, ve bu makalelerde de karsilasilan hatalari, kullanilan örnekleri, .. vs. derleyip tek kaynaktan kolay erisim imkani sunmayi amaçliyoruz. Bu ilk Makalede adettendir deyip ajax nedir ile basliyoruz.
Ajax etkili ve  interaktif web projelerini çabucak  yapmanizi saglayacak, tüm popüler web browserlarda çalisan ücretsiz bir frameworktür. Asynchronous JavaScript And XML kelimelerinin kisaltmasidir. Aslinda ajax HTML / CSS/ DOM / JavaScript XML / XML/HttpRequest gibi birçok bilesenin birlestirlmesiyle gelistirilmis bir teknolojidir. Bu düsünce önce JSP gelistiricileri tarafindan ortaya atilmis daha sonra da Microsoft tarafindan desteklenmistir. Microsoft ilk önce bunu ATLAS olarak gelistirmis daha sonra da ASP.NET AJAX olarak destegini sürdürmüstür. Yani “Ajax; ne Bir Dil, ne de Bir Kütüphane Degildir. Ajax Sadece Bir Yöntemdir”.
Ajaxda, daha önceden var olan JavaScript ve XML dillerini, web tarayicisinda bulunan XmlHttpRequest nesnesi ile birlikte kullanir. Peki, bu bize ne saglar? Istekler XmlHttpRequest ile gönderilince sunucu ve istemci arasinda tasinan veriler sikistirilmis olur ve aradaki bant genisligi bos yere isgal edilmemis olacagi için ayni anda yapilan birçok islemde daha fazla perfonmans kazancimiz olur.

Peki, avantajlari nelerdir?
Ajaxin sundugu belki de en önemli avantaj, güncellemelerde sayfanin degil istenilen kisimlarin sunucuya gidip gelmesidir. Mesela seçilen ile göre ilçelerin DropDrownList’e gelmesi gerektigini düsünelim. Eger Ajax olmazsa, sayfadaki tüm islemlerle birlikte ile bagli ilçe istegide sunucuya gidecek, cevap alinip sayfa tekrar güncellenecek. Bu sirada eger sayfanin postback(güncellenme) olayi kontrol etmeden pageLoad() kismina bir kod yazmissak bunlarda güncellenecegi için hem extra zaman kaybi hem belki yapilan islemlerin kaybina sebeb olacak. Ama ajax kullanirsak sunucuya sadece ile bagli ilçelerin istegi gidip cevap dönecek ve sadece gerekli DropDrownlist güncellenecek. Böylece hem zaman kazanmis hemde ag trafigini hafifletmis olacagiz. Ayrica ekrandaki güncelleme daha hizli oldugu için kullanicilar için can sikan beklemelerin önüne geçmis oluruz.
Aslinda bu isleri yapmak için javascript da kullanabiliriz. Öyleyse neden ajax? Muhakkakki islemler sirasinda baska bir sayfaya veri veya istek gönderilmeden yapilmiyorsa javascript en hizli kontrol yöntemidir. Ama veritabani sorgusu gibi bir islem yapilacaksa ajax bir adim öne geçiyor. Bu da bizim javascripti her alanda kullanamamamiza neden oluyor. Ve tabi yazinin basinda da belirttigim gibi, javascrip’in farkli browserlarda çikardigi sorunlar ajax da yok çünkü ajax kendi içinde “Browser Compatibility” denen bir kütüphaneyi dahil ederek bu sorunu asmayi hedefliyor.
Ayrica html, asp.net, php vs.. gibi birçok dil varken, yeni bir dil sunmayip,bu diller ile  entegre çalisarak bizi dil ögrenmek için zaman kaybetmekten ve bunun çetrefillerinden kurtariyor. Bu zamanda kullanimini ögrenerek ve denemeler yaparak bir adim öne geçmek mümkün. Belkide ajax’in kisa sürede bu kadar yayginlasmasinin nedeni, birçok dil ile entegre olup sanki yeni bir tool eklenmek kadar kolay ve kisa sürede ögrenilebilmesidir.

Dezavantajlari?
Elbette özellikle gelistirilmekte olan ve “gelismis” denen tüm yazilimlarda hatalar ve buglar mevcuttur.  Ajax’da da bazi sorunlar ve dezavantajla hatta bazen avantaja dönüsen dezavantajlar vardir.
Ilk olarak herkesin en çok bahsettigi ileri-geri butonu sorunu. Sayfalar dinamik olarak olusturuldu için geri tusuna basildiginda sayfamizin yapisina göre bazen sorunlar çikmakta çünkü tarayici dinamik sayfalari hafizasinda tutmuyor. Bu sorunu asmak için bazi çalismala yapilabilir, ek kodlar, ileri geri butonlarinin pasif yapilmasi vs. ama tabi bu bizim için ek çalisma, ek zaman ve ek bant genisligi demek.
Diger bir dezavantaj da arama motorlarinda indexlenememesidir. Söyleki ajax içerisinde yüklenen verileri sayfanin kaynak kodlarinda göremezsiniz ve arama motorlari da bunu göremeyecegi için indexleyemez. Özellikle ziyaretci sayisinin önemli oldugu ve bunun maddi tarafindan yararlanan siteler için bu gerçekte büyük bir dezavantajdir. Ayni durumun dinamik olusturululan tüm sayfalar içinde geçerli oldugu ve bunun tag vs. gibi yöntemlerle asilabilecegini de unutmamak gerekir. Tabi bu durum bazen avantaja da dönüsebilir. Mesela kisilere özel bilgilerin oldugu sayfalarin arama motorlarinda çikmasini istemeyiz, ya da resmi bir kurum için yapilan web uygulamalarinda içerik gizli olmalidir muhakkak. Bu durumlarda ajax avantaja dönüsmektedir.
Ajaxin javascripten kaynaklanan dezavantajlarini da unutmamak lazim, mesela javascript kullanmak bilgisayari bir parça yavaslatir çünkü javascript kullanicinin bilgisayarinda yorumlanan bir dildir ve yavas bilgisayarlari daha da yavaslatir.
Ajaxin kullandigi XMLHTTPREQUEST bir ActiveX nesnesidir. Bazi bilgisayarlarda ActiveX otomatik engellendigi için ajax çalismayabiliyor. Bunun için çözümler var elbette ama bu hala eski sürüm explorerlar için bir problem
Ajax ile ilgili daha pek çok avantaj ve dezavantaj bulunmakta. Pek çok insan ajaxi kullanmaya çoktan baslamisken, bazilari ise karsi çikiyor.  Fakat özellikle güncellemelerin gerektigi islemlerde, mesela kosula bagli doldurulacak alanlarda, ajax bize birçok kolaylik saglamakta ve bizde bu teknolojiyi daha yakindan incelemek ve anlatmak için ajax konusundaki makelelerimize devam edecegiz.

Yorumlar

Bu blogdaki popüler yayınlar

Linux En Az Sistem Gereksinimi İsteyen Dağıtımları Değerlendirilmesi

Linux İşletim Sisteminin Dağıtımlarının En az sistem gereksinimi isteyen sürümleri, değerlendirilmesi aşağıdadır, Değerlendirilen dağıtımlar şunlardır: Ubuntu Xubuntu Lubuntu Damn Small Linux Linux Mint Fedora Opensuse Debian Rat Hat Suse Linux Suse Linux Sistem Gereksinimleri: Pentium 1-4 ya da Xeon; AMD Duron, Athlon (XP, MP ya da 64), Sempron ya da Opteron 256MB RAM 500MB boş disk alanı 800x600 yada üstü resolution Rat Hat Memory Gerekli: 4 GB of memory Önerilen: 8 GB of memory CPU Gerekli: Intel Core processor, 2.4GHz, 512K cache or equivalent Önerilen: Intel multi-core processor, 2.4GHz dual processor, 512K cache or equivalent Storage 5 GB alan temel kurulum için. 40 GB alan Channel başına. 10 GB alan Cache dizini için(/var/cache/rhn) Disk yapılandırması olarak Raid 5 tavsiye edilir. Database İlk kurulum için 12 GB alan önerilir. Client ve channel hesaplamaları ise, 250 KB alan client system başına, 500 KB alan çhannel başına, ayrıca 230 KB channel da

( C#) Ders 4 - Diziler, Çok Boyutlu Diziler, Düzenli ve Düzensiz Çok Boyutlu Diziler Nasil Kullanilir. foreach Döngüsünün Kullanimi.

C# da Diziler Diziler için ayni tipteki verilerin tutuldugu bir koleksiyon diyebiliriz. Örnegin integer verinin bir yigin seklinde tutulmasi için dizileri kullaniriz. C# da diziler referans tipinde degiskenlerdendir. C# da tanimlanan tüm diziler System.Array sinifindan türemis bir nesnedir. C# da diziler asagidaki gibi tanimlanir. ? 1 <veri tipi>[] <degisken ismi> = new <veri tipi>[<dizinin boyutu>]; 10 adet integer veri tutan bir dizinin tanim ise ? 1 int [] integerDizi = new int [10]; Bir dizinin boyutlari sabittir ve kullanilmadan önce belirlenmelidir. Dizi boyutunu belirlemek için baska bir degiskende kullanabilirsiniz. ? 1 2 int boyut = 10; int [] integerDizi = new int [boyut]; Diziyi tanimlama ve baslangiç degerlerini atama islemini ayri satirlardada yapabilirsiniz. ? 1 2 int [] integerDizi; integerDizi = new int [10]; Ayrica dizileri tanimlarken, dizi içine atmak istedigin

JavaScript ile Popup Pencereleri

Popup pencereleri bir sayfa içinde ek bir pencere açma islemidir. Popup pencereler JavaScript kullanarak açilirlar. Popup pencereler yaygin olarak reklam göstermek amaciyla kullanilir. Diger bir kullanim amaci ise yardim sayfalari tasarlamak içindir. Ihtiyaciniz dogrultusunda farkli amaçlar için kullanilabilirler. Popup pencereler; Sayfa yüklenmesinde,Sayfadan çikildiginda,Kullanici bir linki tikladiginda açilabilir. Sayfa yüklenirken veya kapatilirken bir popup açmak için body etiketi içine asagidaki kodu yazmaniz yeterlidir. Sayfa yüklenirken ? 1 <body onload= "javascript: alert(Load islemi!')" > Sayfa Kapatilirken ? 1 <body onunload= "javascript: alert('UnLoad islemi!')" Link tiklandiginda ? 1 <a href= "javascript: alert('link Tiklandi!')" >Popup Aç!</a> Popup olarak yeni bir pencere açmak istiyorsak window.open() metodunu kullaniriz. Window.open metodun