Kaie"s Blog 2.0 beta!
Back to "Top"

My Secret Notebook
 Show "Table of Contents"
Contact Me
Subscribe to my Posts feed
Subscribe to my Comments feed
My Flickr
Back to "Top"
My Secret Notebook
 Show "Table of Contents"
Contact Me
Subscribe to my Posts feed
Subscribe to my Comments feed
My Flickr

Wednesday, December 13, 2006

[AJAX] What is AJAX (1)

之前在堯@部落格中看到了一系列的「AJAX」的文章,筆者以簡易明瞭的條列式方式,一一解說,對於原本半知半解的我,受益良多...透過CC的授權,將文章內容轉戴於底下:
.原文出處:
堯@部落格 -> AJAX漫談
※文章內容:

Ajax(Asynchronous JavaScript + XML)是在2005年二月由Jesse James Garrett在一篇名為Ajax: A New Approach to Web Applications所大力推廣。當時很快就獲得了很大的迴響。但是ajax並不是一項新的技術,而只是運用了過去原本就有的技巧所混合出來的一項概念。早在Garrett提出之前,就有很多人運用這樣的技術,例如Google Map。javascript 和xml的技術混用,我在2000年的一個CMS專案中就曾經運用過(我那時候根本沒聽過什麼ajax),而且其優點就如同Garrett所提,可以充分 改善Web Pages的不足之處。只是早期並沒有這個名詞,很多進階的web developer默默的在運用這部分的技術而已。

在傳統的web架構上面,有很多缺點限制了web application的發展:

  • 互動性不足:傳統的網路架構,是讓使用者在網頁上面點透過連結,跟遠端產 生的頁面一頁一頁的重新載入(Reload),所以每當使用者點了一個連結,就必須呆呆的等待右上方的地球(以前的netscape)或是IE的 Microsoft那面旗子飄玩,然後用戶才知道互動的結果是怎樣。這樣的互動其實在90年代就讓人覺得很方便了,但是在現今一切都要求快狠準的年代,這 樣的互動性很明顯的就達不到我們的標準(這句話可以借給卓榮泰說明一下什麼是動態道德標準)。
  • 校能不足:也由於傳統的web架構,使用者都必須每次把頁面重新的載入一次,所以對於系統的資源就很浪費。通常我們在讀取一個頁面的時候,資料讀進來都還得要經過處裡一下,就像是在我的部落格裡 面,右方的side bar每次讀進來都必須要跑過一次javascript去抓del.icio.us的tag然後轉成看到的樣子。這樣當然很愚蠢啊,因為幾乎都是相同的東 西,只是當初制定web架購,為了讓每一頁的資源都成功的獲得釋放,所以相對的就造成現在的狀況。也就是因為這個先天不良,所以Ajax架構出來的程式, 幾乎都捨棄了下一頁的功能。甚至有些比較狠的,連上一頁也一併拿掉了(javascript就能做到)。這樣一但進到網頁裡面,所有在網頁內做的事情,都 在彈指之間做到了,使用者只覺得網站的互動性很強。不過這點其實也有點trade off,提升互動性的後果,就是離線閱讀(offline mode)會讀不到東西,網站會變的很怪。不過在比例上,現在好像沒看過有人還在用離線閱讀了,畢竟今日的網路價格很便宜,已經不是當初撥接每分鐘計價的 時代了。
  • 介面太過簡單:在傳統的web post的模式,實在做不了太複雜的工作,一個表單的Form要填寫的資料沒辦法太複雜,如果要填寫的頁面資料超過一頁,那往往都是透過post的方式把 資料一頁頁的存在server端,這就很討厭啦,因為為了要能照顧user資料不用白填,所以就必須要追蹤user之前填過的所有資料,session cookie的什麼技術都用上了,為的只是要打破當初制定的那個能提供離線閱讀的架構,囧rz~~~~。
  • 資源浪費:在傳統的web pages上面,你會看到大部分的人都會把相關可以點的東西,越放越多在同一個頁面上,而每次做了一個連結,頁面重讀後,為了讓使用者不知道什麼時候才會 點的功能能夠一覽無遺的準備在那邊讓用戶可以隨時點下去,所以只好再重新送了一次。網路的資源就在這樣的一頁一頁的翻動中,重複著送出一些相同的東西。 (Google在剛出來的時候因為介面相當乾淨,反而獲得了大部分的人的認同,製造出一種很有效率的印象)

在Ajax之前,一份由當時MicroSoft提出的IE4架構裡面(沒錯,就是IE4,1997年),介紹了IE4提供的XML物 件,並讓使用者可以透過javaScript來操作xml物件。記得那時候的瀏覽器Netscape必須要使用object的方式load xml object進來才能進行操作,這點其實非常的不方便,所以我後來做的專案都指定要求客戶的web application架構必須使用IE作為標準瀏覽器,說起來我也算是當時殘害netscape的一個幫兇~~~。而現在ajax所用的技術,再當時就 都有提供了。當時流行的概念是soap,但是由於soap需要大量的伺服器端的協助,所以好像也沒有紅起來。 ajax之所以會大紅大紫,原因還是來自於blog和web 2.0的概念大量的被複製,相對於javascript本身架構並沒有太大的變化,但是web的技術門檻由於提供服務的服務性網站變多,很多服務也都相對 的提供xml做為data source,這點讓有programing能力的blogger趨之若鶩,紛紛的透過ajax技術把服務網站的資料整合到blog裡面。總而言之,就是 整個網路消費市場習慣的改變,才讓ajax因此傳播開來,而這一項沒有發明的發明,隨著web 2.0的散佈,慢慢的在網路界變成一個神話。(沒有發明的發明在90年代指的是SOAP,當時還有很多人出來指稱soap會變成影響網路發展的一個重要指 標,但是呢...,或許現在還沒到檢驗的時候吧,we will see...)