Ajax'ta Uzmanlaşma, Bölüm 8: İsteklerde ve yanıtlarda XML kullanılması
Ajax istemci/sunucu iletişimi hassas bir iş olabilir
Düzey: Orta
Brett McLaughlin (brett@newInstance.com),
Yazar ve Editör, O'Reilly Media Inc.
07 Kasım 2006
Bu dizinin son makalesinde, Ajax uygulamalarınızın sunucuya gönderilen istekleri nasıl XML şeklinde biçimlendirebildiğini gördünüz. Çoğu durumda, bunun neden iyi bir fikir olmadığını da okudunuz. Bu makale, genellikle daha iyi bir fikir olan bir şey üzerine odaklanır: İstemciye XML yanıtlarının gönderilmesi.
Esas olarak yapmamanız gereken şeylerle ilgili makaleler yazmaktan gerçekten hoşlanmıyorum. Böyle makaleler çoğu kez yazılması anlamsız olan şeyleri içerir. Makalenin yarısı bir şeyi açıklamakla geçer, makalenin kalan kısmında da, az önce öğrendiğiniz teknikleri kullanmanın ne kadar kötü bir fikir olduğunu açıklanır. Geçen ayki makale de büyük oranda böyle bir yazıydı (okuma fırsatı bulamadıysanız, Kaynaklar içinde verilen bağlantıyı izleyin). Bu yazıda size, Ajax uygulamalarınızın isteklerinde veri biçimi olarak XML'i nasıl kullanacağınız öğretildi.
Bu makalenin, XML isteklerini öğrenmek için harcadığınız zamanı geri kazanmanızı sağlayacağını umuyorum. Ajax uygulamalarında veri gönderme biçimi olarak XML kullanmanın çok az nedeni varken, bir sunucunun istemciye XML geri göndermesini istemeniz için de birçok neden vardır. Son makalede XML ile ilgili öğrendiğiniz her şey, bu makalede biraz değer kazanmaya başlayacak.
Sunucular çok şey söyleyemez (bazen)
Bir sunucudan XML yanıtı almaya ilişkin teknik ayrıntılara girmeden önce, bir sunucunun bir isteğe yanıt olarak XML göndermesinin neden bu kadar iyi bir fikir (ve bunun, bir istemcinin bu isteği XML olarak göndermesinden nasıl farklı) olduğunu anlamanız gerekir.
İstemciler ad/değer çiftleriyle konuşur
Son makaleden de hatırlayacağınız gibi, istemciler isteklerini ad/değer
çiftlerini kullanarak gönderebildikleri için çoğu durumda XML kullanmalarına gerek
yoktur. Şöyle bir ad gönderebilirsiniz: name=jennifer
. Ardışık ad/değer
çiftleri arasına bir ve (&
) işareti ekleyerek bunları
birleştirebilirsiniz (name=jennifer&job=president
gibi).
Basit metin ve bu ad/değer çiftlerini kullanarak, istemciler birden çok değere sahip
istekleri sunucuya kolayca gönderebilir. XML'in sağladığı ek yapıya (ve ek yüke)
nadiren gereksinim duyulur.
Aslında, bir sunucuya XML göndermenizi gerektirecek neredeyse tüm nedenler iki temel kategoride gruplanabilir:
- Sunucu yalnızca XML isteklerini kabul ediyordur. Bu durumlarda, başka bir seçeneğiniz yoktur. Geçen ayki makalenin temel noktaları, bu tür istekleri göndermek için gereksinim duyacağınız tüm araçları sağlamış olmalıdır.
- Yalnızca XML ya da SOAP isteklerini kabul eden bir uzak API çağırıyorsunuzdur. Bu, gerçekten de önceki noktanın biraz daha özel bir durumudur, ancak kendi başına söz etmeye değer bir noktadır. Google ya da Amazon'daki API'leri bir zamanuyumsuz istekte kullanmak isterseniz, bazı konuları göz önünde bulundurmanız gerekir. Bunlara ve bunun gibi API'lere istek gönderilmesine ilişkin birkaç örneğe gelecek ayın makalesinde değineceğim.
Sunucular ad/değer çiftlerini gönderemez (standart şekilde)
Ad/değer çiftleri gönderdiğinizde, istekleri gönderen Web tarayıcısı ve bu isteğe
yanıt veren ve bir sunucu programını barındıran platform bu ad/değer çiftlerini, bir
sunucu programının kolayca çalışabileceği verilere dönüştürmek için birlikte
çalışır. Neredeyse her sunucu tarafı teknolojisi -- Java™ sunucu
uygulamalarından PHP'ye, Perl'e, Ruby on Rails'e -- bir ada dayalı değerleri almanız
için çeşitli yöntemler çağırmanızı sağlar. Dolayısıyla, name
özniteliğinin alınması önemsizdir.
Diğer yönde farklı bir durum söz konusudur. Sunucu,
name=jennifer&job=president
dizesinin bulunduğu bir uygulamaya
yanıt verdiyse, istemcide iki ad/değer çiftini ayırmak ve daha sonra her bir çifti
bir ad ve değere bölmek için standartlaştırılmış, kolay bir yöntem bulunmaz. Döndürülen
verileri el ile ayrıştırmanız gerekir. Sunucu, ad/değer çiftlerinden oluşan bir
yanıt döndürürse, bu yanıt, noktalı virgüllerle ya da çubuk simgeleriyle ya da diğer
standart dışı biçimlendirme karakterleriyle birbirinden ayrılmış öğelerden oluşan
bir yanıtı yorumlamaktan daha kolay (ya da daha zor) değildir.
|
Bu durumda karşılaşacağınız sorun, yanıtlarınızda düz metin kullanmanızın ve istemcinin bu yanıtı alıp standart bir yolla yorumlamasının (en azından yanıt birden çok değer içerdiğinde) kolay bir yolunun olmamasıdır. Örneğin, sunucunuz yalnızca 42 sayısını geri gönderseydi, düz metin harika olurdu. Peki, TV'deki dizilere (Lost, Alias ve Six Degrees) ilişkin en son seyredilme oranlarını bir defada gönderirse ne olur? Bu yanıtı düz metin kullanarak göndermeye ilişkin birçok yol seçebilirsiniz (birkaç örnek için bkz. Liste 1), ancak hiçbiri, istemcide bir çalışma yapılmadan kolayca yorumlanamaz ve hiçbir tamamen standartlaşmış değildir.
Liste 1. TV seyredilme oranlarına ilişkin sunucu yanıtı (çeşitli sürümler)
show=Alias&ratings=6.5|show=Lost&ratings=14.2|show=Six%20Degrees&ratings=9.1 Alias=6.5&Lost=14.2&Six%20Degrees=9.1 Alias|6.5|Lost|14.2|Six%20Degrees|9.1 |
Bu yanıt dizelerinin nasıl ayrılacağını anlamak çok zor olmasa da, bir istemcinin, noktalı virgüllere, eşittir işaretlerine, çubuklara ve "ve" işaretlerine dayanarak dizeyi ayrıştırması ve bölmesi gerekir. Bu, diğer geliştiricilerin kolayca anlayabileceği ve sağlayabileceği güçlü bir kod yazmak için nadiren kullanılan bir yoldur.
Bu sunucunun istemcilere ad/değer çiftleriyle yanıt vermesi için standart bir yol olmadığını fark ettiğinizde, XML kullanmanın arkasında yatan mantık netleşmeye başlar. Sunucuya veri gönderirken, sunucular ve sunucu tarafında diller çiftleri kolayca yorumlayabildiği için ad/değer çiftleri harika birer seçimdir; istemciye veri döndürürken de XML kullanmak için aynı şey geçerlidir. Birkaç makale önce, XML'i ayrıştırmak için DOM'nin nasıl kullanıldığını görmüştünüz ve sonraki bir makalede XML'i ayrıştırmak için JSON'nin da başka bir seçenek sunduğunu göreceksiniz. Hepsinin üzerinde, XML'i düz metin gibi işleyebilir ve değerleri, bu şekilde alabilirsiniz. Dolayısıyla, bir sunucudan XML yanıtı almanın ve oldukça standartlaşmış kodla verileri çıkarmanın ve bir istemcide kullanmanın birkaç yolu vardır.
Ek bir bonus olarak XML'in anlaşılması genellikle oldukça kolaydır. Örneğin, programlama yapabilen kişilerin çoğu, Liste 2'deki verileri anlayabilir.
Liste 2. TV seyredilme oranlarına ilişkin sunucu yanıtı (XML)
<ratings> <show> <title>Alias</title> <rating>6.5</rating> </show> <show> <title>Lost</title> <rating>14.2</rating> </show> <show> <title>Six Degrees</title> <rating>9.1</rating> </show> </ratings> |
Liste 2'de, belirli bir noktalı virgül ya da kesme işaretinin anlamıyla ilgili herhangi bir gizemli nokta yoktur.
Bu dizinin odak noktası Ajax denkleminin istemci tarafı olduğundan, sunucu tarafındaki bir programın yanıtı XML olarak nasıl oluşturduğu üzerinde ayrıntılı bilgi vermeyeceğim. Ancak, istemciniz XML aldığında bazı özel konuları bilmeniz gerekir.
Birincisi, sunucudan gelen bir XML yanıtını iki temel şekilde işleyebilirsiniz:
- XML olarak biçimlendirilen düz metin
- DOM
Document
nesnesiyle gösterilen bir XML belgesi.
İkincisi, örnek olsun diye bir sunucudan basit bir XML yanıtı aldığınızı varsayın. Liste 3'te yukarıda ayrıntılı olarak verilen aynı TV listesi gösterilmektedir (aslında bu, sizin için yeniden yazılan, Liste 2'dekiyle aynı XML'dir). Bu bölümdeki konularda bu örnek XML'i kullanacağım.
Liste 3. Örnek olarak XML biçimli TV seyredilme oranları
<ratings> <show> <title>Alias</title> <rating>6.5</rating> </show> <show> <title>Lost</title> <rating>14.2</rating> </show> <show> <title>Six Degrees</title> <rating>9.1</rating> </show> </ratings> |
XML ile düz metin olarak çalışma
En azından yeni programlama tekniklerini öğrenme açısından, XML'i işlemenin en kolay seçeneği, XML'i sunucudan dönen herhangi bir metin parçası gibi ele almaktır. Diğer bir deyişle, veri biçimini dikkate almaz ve yalnızca sunucudan gelen yanıtı alırsınız.
Bu durumda, sunucunun size XML olmayan bir yanıt gönderdiğinde yapacağınız gibi
istek nesnenizin responseText
özelliğini kullanırsınız (bkz.
Liste 4).
Liste 4. XML'nin olağan bir sunucu yanıtı olarak işlenmesi
function updatePage() { if (request.readyState == 4) { if (request.status == 200) { var response = request.responseText; // response has the XML response from the server alert(response); } } } |
|
Bu kod parçasında, updatePage()
geri çağrı ve request
,
XMLHttpRequest
nesnesidir. XML yanıtı, response
değişkeninde tümü bir arada dizilmiş bir şekilde ortaya çıkar. Bu değişkeni
yazdırdıysanız, Liste 5'tekine benzer bir kod görmeniz gerekir.
(Liste 5'teki kodun tek, sürekli bir satır olduğuna dikkat edin.
Burada, görüntülenebilmesi amacıyla birden çok satırda gösterilmiştir.)
Liste 5. Yanıt değişkeninin değeri
<ratings><show><title>Alias</title><rating>6.5</rating> </show><show><title>Lost</title><rating>14.2</rating></show><show> <title>Six Degrees</title><rating>9.1</rating></show></ratings> |
Burada belirtilmesi gereken en önemli şey, XML'in tamamının birlikte çalıştığıdır. Çoğu durumda, sunucular XML'i boşluklar ve satır başlarıyla biçimlendirmez; Liste 5'te gördüğünüz gibi tümünü tek bir dize halinde birleştirir. Elbette, uygulamalarınız boşluklarla çok ilgilenmediği için bu, bir sorun oluşturmaz; ancak, okumak biraz zorlaşır.
Bu noktada, bu verileri ayırmak için JavaScript split
işlevini ve
öğe adlarını ve değerlerini almak için temel dize işlemesini kullanabilirsiniz.
Tabii ki bu, size gerçekten sıkıntı verecektir ve böyle bir durumda, dizinin önceki
makalelerinde DOM'ye (Belge Nesne Modeli) bakmak için çok zaman harcadığınız
gerçeği göz ardı edilir.
Bu nedenle, responseText
ile bir sunucunun XML yanıtını kolayca
kullanabileceğinizi ve çıkarabileceğinizi aklınızda tutmanızı öneririm, ancak size
daha fazla kod göstermeyeceğim; biraz sonra da göreceğiniz gibi, DOM'yi
kullanabileceğiniz durumlarda, XML verilerini almak için bu yaklaşımı kullanmamanız
gerekir.
Sunucunun XML biçimli yanıtını diğer metin yanıtları gibi
işleyebilirsiniz, ancak bunu yapmanızı gerektiren herhangi bir neden yoktur.
Birincisi, bu dizinin sadık bir okuruysanız, XML'i işlemek için yararlanabileceğiniz JavaScript
dostu bir API olan DOM'yi nasıl kullanacağınızı biliyorsunuzdur. Daha da iyisi,
JavaScript ve XMLHttpRequest
nesnesi, sunucunun XML yanıtını almak ve
bunu, bir DOM Document
nesnesi biçiminde almak için mükemmel bir
özellik sağlar.
Bunu çalışırken görmek için Liste 6'ya bakın. Bu kod,
Liste 4'e benzer, ancak responseText
özelliğini
kullanmak yerine, geri çağrı responseXML
özelliğini kullanır.
XMLHttpRequest
nesnesinde bulunan bu özellik, sunucunun yanıtını bir
DOM belgesi biçiminde döndürür.
Liste 6. XML'in XML olarak işlenmesi
function updatePage() { if (request.readyState == 4) { if (request.status == 200) { var xmlDoc = request.responseXML; // work with xmlDoc using the DOM } } } |
Artık bir DOM Document
öğeniz var ve bununla, diğer herhangi bir XML ile yaptığınız gibi çalışabilirsiniz.
Örneğin, tüm show
öğelerini alabilirsiniz (bkz. Liste
7).
Liste 7. Tüm show öğelerinin alınması
function updatePage() {
if (request.readyState == 4) {
if (request.status == 200) {
var xmlDoc = request.responseXML;
var showElements = xmlDoc.getElementsByTagName("show");
}
}
}
|
DOM ile daha önce çalıştıysanız, bu size tanıdık gelmeye başlamış olmalı. Şimdiye kadar öğrendiğiniz tüm DOM yöntemlerini kullanabilir ve sunucudan aldığınız XML'yi kolayca işleyebilirsiniz.
Elbette, olağan JavaScript koduna da karıştırabilirsiniz. Örneğin,
Liste 8'deki gibi tüm show
öğelerini
yineleyebilirsiniz.
Liste 8. Tüm show öğelerinin yinelenmesi
function updatePage() { if (request.readyState == 4) { if (request.status == 200) { var xmlDoc = request.responseXML; var showElements = xmlDoc.getElementsByTagName("show"); for (var x=0; x<showElements.length; x++) { // We know that the first child of show is title, and the second is rating var title = showElements[x].childNodes[0].value; var rating = showElements[x].childNodes[1].value; // Now do whatever you want with the show title and ratings } } } } |
Bu göreceli olarak basit kodla, bir XML yanıtını, yalnızca düz, biçimlendirilmemiş metin gibi değil, bir XML gibi işlediniz ve sunucunun yanıtıyla çalışmak için biraz DOM, biraz da basit JavaScript kullandınız. Daha da önemlisi, virgülle ayrılmış değerler ya da çubukla ayrılmış ad/değer çiftleri yerine standartlaşmış bir biçimle (XML) çalıştınız. Diğer bir deyişle, XML'i anlamlı bir yerde kullandınız ve sunucuya istek göndermek gibi anlamsız bir yerde kullanmaktan kaçındınız.
Sunucuda XML oluşturma konusuna fazla değinmesem de, çok fazla açıklama yapmadan küçük bir örnek görebiliriz; böylece, böyle bir durumla nasıl uğraşacağınıza ilişkin kendi düşüncelerinizi oluşturursunuz. Liste 9'da, zamanuyumsuz bir istemciden gelmiş olabilecek bir isteğe yanıt olarak XML oluşturan basit bir PHP komut dosyası gösterilmektedir.
Bu, PHP komut dosyasının XML çıkışını manuel olarak zorla oluşturduğu kaba kuvvet yaklaşımıdır. PHP ve XML yanıtları oluşturabilmenizi sağlayan diğer birçok sunucu tarafı dillerine ilişkin çeşitli araç takımları ve API'ler bulabilirsiniz. Her durumda bu, size en azından XML ile istek oluşturan ve yanıtlayan bir sunucu tarafı komut dosyasının neye benzediğine ilişkin bir fikir verir.
Liste 9. XML döndüren PHP komut dosyası
<?php // Connect to a MySQL database $conn = @mysql_connect("mysql.myhost.com", "username", "secret-password"); if (!conn) die("Error connecting to database: " . mysql_error()); if (!mysql_select_db("television", $conn)) die("Error selecting TV database: " . mysql_error()); // Get ratings for all TV shows in database $select = 'SELECT title, rating'; $from = ' FROM ratings'; $queryResult = @mysql_query($select . $from); if (!$queryResult) die("Error retrieving ratings for TV shows.'); // Let the client know we're sending back XML header("Content-Type: text/xml"); echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; echo "<ratings>"; while ($row = mysql_fetch_array($queryResult)) { $title = $row['title']; $rating = $row['rating']; echo "<show> echo "<title>" . $title . "</title>"; echo "<rating>" . $rating . "</rating>"; echo "</show>"; } echo "</ratings>"; mysql_close($conn); ?> |
Kendi favori sunucu tarafı dilinizi kullanarak benzer bir şekilde XML çıkışı elde edebilmeniz gerekir. Çok sayıda IBM developerWorks makalesi, tercih edilen sunucu tarafı dili kullanılarak bir XML belgesinin nasıl oluşturulacağını anlamanıza yardımcı olur (bağlantılar için bkz. Kaynaklar).
XML'in yorumlanmasına ilişkin diğer seçenekler
XML'i biçimlendirilmemiş metin olarak işlemenin ya da DOM kullanmanın ötesinde, XML ile çalışmaya ilişkin önemli ve sözünü etmeye değer çok popüler bir seçenek daha vardır. Bu seçenek, JavaScript Object Notation'ın (JavaScript Nesne Gösterimi) kısaltması olan JSON'dir ve bu, JavaScript'e eklenen bir serbest metin biçimidir. Bu makalede JSON'yi anlatmak için yeterli yerim kalmadı, bu nedenle, bu konuya önümüzdeki birkaç ay içinde döneceğim; XML ve Ajax uygulamalarından söz eder etmez bu konuyla ilgili bir şeyler duyarsınız, dolayısıyla artık, çalışma arkadaşlarınızın neyle ilgili konuştuklarını bilebilirsiniz.
Genel olarak, JSON ile yapabileceğiniz her şeyi DOM ile de yapabilirsiniz ya da DOM ile yapabileceğiniz her şeyi JSON ile yapabilirsiniz; bu genellikle tercihle ve belirli bir uygulama için doğru yaklaşımı seçmeyle ilgilidir. Şimdilik, DOM ile çalışmaya devam edelim ve sunucunun yanıtını alma bağlamında bunun nasıl kullanılacağını öğrenelim. Birkaç makale içinde JSON üzerinde oldukça uzun duracağım ve bir sonraki uygulamanızda ikisi arasında bir seçim yapmak için hazır olacaksınız. Bu nedenle, bu diziyi izlemeye devam edin: Gelecek makalelerde XML ile ilgili anlatılacak daha çok şey var.
Bu dizinin son makalesinin başlamasından bu yana neredeyse durmaksızın XML ile ilgili konuşuyorum, ancak henüz XML'in Ajax denklemine katkısının yalnızca yüzeyini biraz kazıdınız. Gelecek makalemde, XML göndermek (ve XML almak) isteyebileceğiniz belirli durumlarla ilgili daha ayrıntılı bilgi vereceğim. Özellikle, Web hizmetlerini -- özel olanlar ve Google gibi API'ler -- Ajax etkileşimi ışığında inceleyeceksiniz.
Kısa dönemde en büyük göreviniz, uygulamalarınız için XML'in ne zaman anlamlı olacağı konusunda gerçekten düşünmek olacaktır. Birçok durumda, uygulamanız iyi çalışıyorsa, XML baş ağrılarına neden olan teknoloji terimi olmaktan öteye gitmez ve yalnızca uygulamanızda XML olduğunu söyleyebilmek için XML kullanma isteğinize direnmeniz gerekir.
Sunucunun size gönderdiği verilerin sınırlı olduğu bir durumda ya da virgül veya çubuklarla ayrılmış garip bir biçimde, XML gerçekten büyük yararlar sağlayabilir. Sunucu tarafı bileşenlerinizle çalışarak ya da bu bileşenleri değiştirerek, kesinlikle XML kadar sağlam olmayan bir özel biçimi kullanmak yerine yanıtları daha standart bir şekilde, XML kullanarak döndürmelerini sağlayabilirsiniz.
Sonuç olarak, Ajax'la ilgili teknolojiler hakkında ne kadar çok şey öğrenirseniz, kararlarınız konusunda o kadar dikkatli olmanız gerektiğini unutmayın. Bu Web 2.0 uygulamalarını yazmak eğlencelidir (ve gelecek makalelerde kullanıcı arabirimine dönecek ve yapabileceğiniz bazı güzel şeyleri göreceksiniz), çalışan bir Web sayfasına, ancak yalnızca arkadaşlarınızı etkilemek adına teknoloji eklemediğinizden emin olmak için biraz dikkatli olmanız gerekir. İyi bir uygulama yazabileceğinizi biliyorum, o zaman gidin ve bunu yapın. İşinizi bitirdiğinizde, buraya gelip gelecek ayın makalesini okuyun ve daha çok XML öğrenin.
Bilgi Edinme
-
Ajax'ta
Uzmanlaşma: Bu dizinin önceki makalelerini okuyun.
- developerWorks XML
bölgesi: Çeşitli teknik makaleler ve ipuçları, senaryolar, standartlar ve IBM
Redbook yayınları için developerWorks XML Zone sitesine bakın.
- developerWorks Web Geliştirme
bölgesi: Web 2.0, Ajax, wikis, PHP, mashup'lar ve diğer Web projeleriyle ilgili
kaynaklar bulun.
- developerWorks Açık
kaynak bölgesi: Açık kaynak geliştirme ve uygulamasına ilişkin kaynakları
keşfedin.
- Cache in
with JSON (Bakul L. Patel, developerWorks, Ekim 2006): İstemci tarafındaki
doğrulama meta verilerini önbelleğe almayı öğrenin.
- xml.com: Deneyimli bir XML programcısı
değilseniz, XML konusunda anlaması en kolay çevrimiçi kaynaklardan biriyle başlayın.
- "Write XML
documents with StAX" (Berthold Daum, developerWorks, Aralık 2003): Düşük
düzeyli, imleç tabanlı StAX API'sini verimli bir şekilde kullanarak XML belgeleri
oluşturmaya ilişkin tek bir yöntemle ilgili bu kısa ipucunu okuyun.
- "Servlets
and XML: Made for each other" (Doug Tidwell, developerWorks, Mayıs 2000): Bu
makalede, Java sunucu uygulamalarının XML ile nasıl çalıştığınız ve sunucu tarafında
nasıl XML oluşturduklarını öğrenin.
-
"Using
Python modules xml2sql and dtd2sql" (David Mertz, developerWorks, Haziran 2001):
Python'dan XML ile ilgili daha popüler modüllerin birkaçına ilişkin bu örnekte bir
veritabanı yaratmak ve doldurmak için SQL deyimleri oluşturun.
-
"Build dynamic Java
applications" (Philip McCarthy, developerWorks, Eylül 2005): Java bakış açısını
kullanarak sunucu tarafından Ajax'a bakın.
- "Java object
serialization for Ajax," Philip McCarthy (developerWorks, Ekim 2005): Ağ
üzerinden nesne gönderme ve Ajax ile etkileşimde bulunma konularını Java bakış
açısıyla inceler.
- "Call
SOAP Web services with Ajax" (James Snell, developerWorks,
Ekim 2005): Ajax'ın var olan SOAP tabanlı Web hizmetleriyle bütünleştirilmesine ilişkin bu ileri düzey makaleyi inceleyin; Ajax tasarım şablonunu kullanarak Web tarayıcısı tabanlı SOAP hizmetleri istemcisini nasıl uygulayacağınızı gösterir.
- World Wide Web Consortium'daki DOM Ana Sayfası: DOM ile ilgili her şeyin başlangıç noktasını ziyaret edin.
- DOM
Level 3 Core Specification (DOM Düzey 3 Çekirdek Belirtimi): Çeşitli dillerden Belge Nesne Modeli'nin kullanabileceği tipleri ve özellikleri kullanarak çekirdek DOM'yi tanımlayın.
- ECMAScript
language bindings for DOM (DOM için ECMAScript dil ilişkilendirmeleri): Bir
JavaScript programcısıysanız ve kodunuz için DOM kullanmak istiyorsanız, Düzey 3
Belge Nesne Modeli Çekirdeği tanımlarına ilişkin bu ek ilginizi çekecektir.
- "Ajax:
A new approach to Web applications" (Jesse James Garrett , Adaptive
Path, Şubat 2005): Ajax moniker teriminin ilk kez kullanıldığı bu makaleyi okuyun -- tüm Ajax geliştiricileri bu makaleyi okumalıdır.
- developerWorks
teknik etkinlikleri ve Web yayınları: Teknik geliştiricilere yönelik bu yazılım brifinglerini takip edin.
Ürün ve teknoloji edinme
- Head
Rush Ajax (Brett McLaughlin, O'Reilly Media, 2006):
Bu makaledeki fikirleri Head First yöntemiyle öğrenin.
- Java and
XML, Second Edition (Brett McLaughlin, O'Reilly
Media, Inc., 2001): Yazarın XHTML ve XML dönüşümleriyle ilgili görüşlerini okuyun.
- JavaScript:
The Definitive Guide (David Flanagan, O'Reilly
Media, Inc., 2001): JavaScript ve dinamik Web sayfalarıyla çalışmaya ilişkin kapsamlı yönergeleri inceleyin. Yayınlanacak olan yeni basımda Ajax ile ilgili iki yeni bölüm vardır.
- Head
First HTML with CSS & XHTML (Elizabeth and
Eric Freeman, O'Reilly Media, Inc., 2005): Standartlaşmış HTML ve XHTML ve CSS'yi HTML'ye uygulamayla ilgili daha fazla bilgi öğrenin.
- IBM deneme yazılımı: developerWorks'deki yazılımı doğrudan yükleyerek bir sonraki geliştirme projenizi oluşturun.
Tartışma
- developerWorks
Web günlükleri: DeveloperWorks topluluğuna katılın.
- Ajax forum on developerWorks: AJAX'ı yeni öğrenen ya da etkin olarak kullanan Web geliştiricilerinden oluşan bu forumda yeni bilgiler öğrenin, düşüncelerinizi tartışın, bildiklerinizi paylaşın.
Brett McLaughlin, Logo günlerinden bu yana bilgisayarlarla ilgili çalışmalar yapmaktadır (Küçük üçgeni hatırlıyor musunuz?) Son yıllarda, Java ve XML topluluklarında en çok tanınan yazarlardan ve programcılardan biri oldu. Kendisi, Nextel Communications şirketi için karmaşık kurumsal sistemler uygulaması, Lutric Technologies için uygulama sunucuları yazma görevlerini üstlendi ve en son O'Reilly Media, Inc. için önemli kitaplar yazma ve yayına hazırlama işlerini yürütüyor. Brett'in, yeni kitabı Head Rush Ajax, Ajax'a Head First adlı ödüllü ve yenilikçi bir yaklaşım getiriyor. Son kitabı Java 1.5 Tiger: A Developer's Notebook, Java teknolojisinin en yeni sürümüyle ilgili ilk kitap olma özelliğini taşıyor. Artık bir klasik olan Java and XML adlı kitabı ise, Java dilinde XML teknolojilerinin kullanılması üzerine en açıklayıcı çalışma olmaya devam ediyor. |
Çok şükür bitti :)