AJAX Asenkron ve Senkron Meselesi



AJAX’i Anlamak yazısında
AJAX’i tarif ederken açılımının Asenkron Javascript ve XML olduğunu
söylemiştik. Buradaki Javascript’i ve XML’i mutlaka bir yerlerden
duymuşsunuzdur fakat Asenkron neyin nesi hiç merak ettiniz mi? Neden
senkron değil de asenkron? Asenkron ve senkron arasındaki fark
nedir? Birbirlerine karşı avantajları ve dezavantajları var mıdır?
Yazımızda bu sorulara cevap arayacak, AJAX tanımı içerisinde neden
Asenkron kullandığını belirlemeye çalışacağız.

30 saniyede AJAX yazısında da belirtildiği gibi AJAX tekniğinin
çekirdeğini XMLHttpRequest adı verilen nesne oluşturmaktadır. Bu
nesne sayesinde sayfalar arası etkileşim kurabiliyoruz.
XMLHttpRequest nesnesi hem asenkron (eş zamanlı) hem de senkron (eş
zamansız) olarak çalışabilen bir yapı üzerine kurulmuştur. Şimdi bu
yapının hangi durumlarda nasıl kullanılması gerektiğine bakalım.

1. Senkron Çalışma
Senkron çalışırken aynı zaman diliminde yalnızca 1 işlem
yapabiliyoruz. Web tarayıcımızdan uzaktaki web sunucusuna gönderilen
istek, web sunucusunda işlenir ve tekrar geldiği yoldan web
tarayıcımıza geri döner. Elbette bu işlem belli bir zaman alır.
Senkron çalışıyorken bu zaman diliminde başka bir istek
gönderemiyoruz.

Senkron çalışma, özellikle web sunucusu aynı bilgisayarda ise veya
yakın olan bir LAN üzerindeyse sağlıklı çalışabilir. Fakat web
sunucusu ağır bir yük altındaysa veya web tarayıcısı web sunucusuyla
yavaş bir bağlantı üzerinden etkileşime geçtiyse kötü bir performans
verecektir. Çünkü web tarayıcımız içerisindeki JavaScript motoru,
gönderdiği istek tamamlanıncaya kadar bloke edilir ve web tarayıcısı
donmuş bir şekilde isteğin tamamlanmasını bekler. Bu zaman diliminde
kullanıcı, gönderilen isteği iptal de edemez. Bu yüzden web
sayfasındaki başka bir noktaya tıklayamaz veya başka bir sekmeye
geçiş yapamaz.Resimde de görüldüğü gibi web tarayıcısından çıkan 1 nolu istek, web
sunucusuna iletiliyor. Alınan istek işlendikten sonra web
tarayıcısına geri gönderiliyor. Ve bu zaman diliminde başka bir
isteğe yer verilmiyor.

2. Asenkron Çalışma
Asenkron çalışırken ise aynı zaman diliminde birden fazla işlem
yapılabiliyor. Örneğin web sayfasında bir form doldurdunuz. Formdaki
bilgiler AJAX ile gönderiliyorken işlemin bitmesini beklemek zorunda
değilsiniz. O zaman diliminde web sayfasının başka bir yerinde
bulunan anket’i cevaplayabilirsiniz. Çünkü senkron çalışıyorken
bloke edilen JavaScript motoru, asenkron çalışıyorken serbesttir ve
başka isteklerin gönderilmesine müsaade eder. Yani aynı zaman dilimi
içerisinde birden fazla isteği kabul edebilir.Resimde de görüldüğü gibi aynı zaman dilimi içerisinde 4 adet istek
yapılmış. Kullanıcı bu isteklerin tamamlanmasını beklemek zorunda
değil. İstekler tamamlana dursun, siz web sayfasında özgürce
dolaşmaya devam edebilirsiniz.

Hangi yöntem kullanılmalı?
Eğer uygulamanızda bir işlem önceliği mecbur tutuluyorsa senkron
çalışmalısınız. Eğer 1 nolu istek tamamlanmadan 2 nolu isteğe
kesinlikle geçilmemesini istiyorsanız asenkron çalışma size ters
düşecektir.

Ayrıca web tarayıcısı ile web sunucusu arasındaki bağlantı yavaşsa
kesinlikle senkron çalışmaktan uzak durun. Örneğin buradaki videoda
yavaş bir bağlantıyla beraber senkron çalışmanın verdiği olumsuz
durum gösterilmiştir.

Fakat bir işlem önceliğinin mecbur tutulmadığı web uygulamalarında
senkron çalışma önerilmez. Örneğin form ve anket birbiriyle ilişkili
olmadığı sürece ziyaretçiye "ilk önce formu doldurun daha sonra
anketi cevaplayın" şeklinde mecburi bir işlem yaptıramazsınız.
Kimileri ilk önce formu doldurmak isteyecek kimileri de ilk önce
anketi cevaplamayı tercih edecektir.

Kısacası internet üzerinde çalışacak bir uygulama hazırlayacaksak
asenkron çalışmalıyız. Hem ziyaretçilerin web tarayıcıları
donmayacaktır hem de aynı anda birden fazla işlem yapılarak zaman
kaybı giderilecektir. İlerleyen günlerde Ajax-Tr sitesinde internet
üzerinde çalışan uygulamalar hazırlayacağımız için biz de asenkron
çalışmayı tercih edeceğiz.

Yöntemi seçtim ama nasıl kullanacağım?
30 saniyede AJAX yazısında isteklerin AJAX üzerinden nasıl
gönderileceği açıklanmıştır. Hatırlamak gerekirse http.open(’get’,
‘kontrol.php’) satırıyla yeni bir istek açıyorduk. İşte bu satırın
sonuna eklenen bir bilgi ile uygulamamızın asenkron mu yoksa senkron
mu çalışacağını belirtebiliyoruz. Eğer true bilgisini eklersek
uygulamamız asenkron, false bilgisini eklersek de senkron olarak
çalışacaktır. İlerleyen günlerde yapacak olduğumuz uygulamalarda
asenkron çalışmayı tercih edeceğimiz için şu satırı kullanacağız:
http.open(’get’, ‘kontrol.php’, true)

Yeni yorum gönder

Bu alanın içeriği gizli tutulacak ve açıkta gösterilmeyecektir.
  • Web sayfası ve e-posta adresleri otomatik olarak bağlantıya çevrilir.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Satır ve paragraflar otomatik olarak bölünürler.

Biçimleme seçenekleri hakkında daha fazla bilgi

CAPTCHA
Aşağıdaki resimde yer alan karakterleri kutucuğa doğru olarak yazınız
Image CAPTCHA
Enter the characters shown in the image.

Anket

Web sitesinde hangisi daha önemlidir:

Son Konular

2012-04-10 00:53 - Chrome Pili daha çabuk bitiriyor
2012-03-22 19:47 - Geliştirdiğin kodları satmak ister misin
2012-02-12 23:21 - SMF forumu vbulletin foruma aktarmak
2011-12-14 21:50 - Motorlu araçlar otomobil vergisi sorgulama
2011-12-14 21:47 - Sorgulamalar
2011-12-11 14:33 - Ben az önce ne arayacaktım
2011-09-10 22:51 - DSLR Fotograf Makinası sınıflandırması
2011-09-09 17:33 - ‘Crop Factor’ Nedir, hakkında bilgi
2011-09-09 17:30 - Fotograf Rehberi
2011-08-20 21:30 - Samsung LEDTV'lerde .SRF ve XFS süprizi
2011-08-19 00:45 - 2011 yılının web tasarım trendleri
2011-04-09 20:18 - Alan adları gerçek isim sahiplerine verilecek!
2011-01-13 01:43 - SEO İçin Dikkat Edilmesi Gereken Hususlar
2011-01-13 01:42 - Meta tag SEO Optimization
2011-01-13 01:41 - Google Adsense Hakkında Detaylı Bilgi
2011-01-13 01:40 - Soru Ve Cevaplar ile Google Adsense
2011-01-13 01:39 - Arama motoru Google ve Pagerank
2011-01-13 01:38 - Seo Sözlüğü
2011-01-13 01:37 - Google Arama Özellikleri
2011-01-13 01:36 - Adsense Reklam Yerleşimi
2011-01-13 01:35 - Robots.txt Dosyası Kullanım Robotları Yölendirme Kontrol
2011-01-13 01:34 - Sitenizin Google ve Web deki Yeri
2011-01-13 01:33 - Arama Motoru Bilgi ve İpuçları
2011-01-13 01:31 - Arama Motorları Teknikleri
2011-01-13 01:29 - Google Pagerank Detaylı Anlatım
2011-01-13 01:27 - Sitenize Ziyaretçiler En Çok Hangi Kelimeler İle Gelmiş
2011-01-13 01:25 - Pagerank Nedir?
2011-01-13 01:19 - Fireworks Shadow and Glow
2011-01-13 01:18 - Fireworks Sharpen
2011-01-13 01:16 - Fireworks Other
2011-01-13 01:13 - Fireworks Blur
2011-01-13 01:09 - Fireworks Bevel and Emboss
2011-01-13 01:05 - Fireworks Adjust Color
2011-01-13 01:03 - Fireworks Save as Style
2011-01-13 00:58 - Fireworks Text Menüsü
2011-01-13 00:54 - Fireworks Select Menüsü
2011-01-13 00:54 - Fireworks Modify Menüsü
2011-01-13 00:51 - Fireworks View Menüsü
2011-01-13 00:18 - Fireworks Edit Menüsü
2011-01-13 00:16 - Fireworks File Menüsü
2011-01-13 00:05 - İnternet - Web Tarayıcılar (Browser)
2011-01-13 00:04 - İnternet - Web Server Yazılımları
2011-01-13 00:03 - İnternet ve Web İlişkisi
2011-01-13 00:02 - İnternette Kullanılan Protokoller
2011-01-13 00:01 - İnternet - World Wide Web (WWW) Nedir?
2011-01-13 00:00 - İnternet - URL nedir?
2011-01-12 23:43 - İnternet Backorder Nedir?
2011-01-12 23:34 - İnternet - Virüs Nedir?
2011-01-12 23:32 - İnternet Paypal nedir? Nasıl Kullanılır?
2011-01-12 23:31 - İnternet - DNS Nedir?