DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> AJAX有沒有未來?
AJAX有沒有未來?
編輯:AJAX詳解     
     業應用體系結構的進化歷程,試圖闡述AJAX是B/S架構發展的必然產物,但是,由於AJax賴以生存的JavaScript編程語言的先天不足,AJAX似乎又前途堪憂。對AJax的未來作出了自己的預測。

    1. 什麼是AJax

   AJax的全稱是Asynchronous Javascript and XML,即異步JavaScript和XML。這是一種多項成熟技術的組合,其目的是讓Web應用獲得與用戶快速、即時交互的能力。AJax所組合的技術,包括:
    • Javascript,Java腳本語言(注意,此Java非Sun公司的Java)
    • DHtml,Dynamic HTML,動態Html
    • XML,Extensible Markup Language,可擴展標記語言
    • CSS,Cascading Style Sheets,層疊樣式表單
    • DOM,Document Object Model,文檔對象模型
    • 微軟的稱為XMLHttpRequest的對象

    在AJAX技術下,用戶會感覺到網頁與普通桌面應用一樣,響應迅速,而不是像傳統網頁那樣,任何操作都需要等待頁面的刷新。AJAX是如何做到這一點的呢?有兩個秘密:第一,其實AJAX也會刷新頁面,只不過,AJAX可以只刷新部分頁面,而不是整個頁面;第二,AJax的頁面刷新是異步的,就是說,用戶可以繼續他的其他操作,而不必等候刷新完成。

    當用戶浏覽一個基於AJAX的Web應用時,用戶的請求被提交給一個稱為AJAX引擎(AJAX Engine)的代理,這個AJAX引擎負責接收用戶請求,從Web服務器上獲取響應,並更新浏覽器內容。形象地說,傳統的Web應用中,浏覽器是直接和Web服務器打交道的,而在AJax應用中,浏覽器和Web服務器之間出現了一個來回跑腿的“中介”,而且這個 “中介”相當的勤快,所以,能夠給浏覽器提供更好的服務,從而使用戶獲得更滿意的應用體驗。

    AJAX應用的例子,Google Map是一個典型。打開Google Map網站(http://maps.google.com),會看到一張地圖,對地圖進行放大、縮小以及拖動等操作,網頁的響應十分迅速,看起來好像浏覽器事先加載了整張地圖。其實,浏覽器只是根據你的操作,向服務器請求你所看到的那些數據,並異步地更新你的浏覽器內容,這一切,都拜AJax所賜。

    Javascript和微軟的XMLHttpRequest對象,是AJAX 引擎的兩條腿。當與浏覽器交互時,AJax引擎使用JavaScript語言;而當與Web服務器交互時,則使用微軟的XMLHttpRequest對象。由於AJax引擎依賴微軟的XMLHttpRequest對象技術,所以,早期只有微軟的IE浏覽器支持AJAX。現在,隨著采用AJAX技術的Web應用的不斷湧現,所有主流的浏覽器,例如Firefox、Netscape、Opera、Safari等,也都支持AJax了。

2. 企業應用體系結構的進化歷程

    在筆者看來,AJAX的出現,並非偶然。為了說明這一點,讓我們來回顧一下,計算機應用體系結構的發展歷史,這或許有助於我們揭示AJax的來歷。

    最早的計算機應用,是單機程序,運行在一台計算機上,那時還沒有計算機與計算機之間相互通信的概念,因為單機應用已經足以滿足人們的需要。因此,兩台計算機即使放在同一個實驗室,也是“機”犬相聞,老死不相往來。

    人的欲望是永遠也不會滿足的,單機應用沒有持續多久,兩台計算機之間交換數據的需求,就隨著計算機應用范圍的擴展而出現了。在PC領域,最初的計算機數據交互形式是串口通信,後來,隨著Novell公司著名的NetWare網絡技術的推出,運行在兩台不同機器上的程序,有了可以更方便地交互的渠道,於是出現了客戶機和服務器,即所謂的ClIEnt/Server結構,簡稱C/S結構。C/S結構因其將應用劃分為兩個部分的特點,也被稱為“二端”體系結構。

    C/S結構流行若干年後,人們發現,僅僅劃分“客戶端”和“服務器”兩個角色,已經不敷使用,因為隨著應用復雜度的不斷增加,客戶端和服務器都變得越來越龐大,於是,三端體系結構冒了出來,在服務器和客戶機之間增加了一個稱為“中間件(MiddleWare)”的“端”。在三端體系結構中,原來散布在“客戶端”和“服務器”上的一些功能(主要是應用邏輯),慢慢轉移到了中間件上,這樣就有效地減輕了“客戶端”和“服務器”日益沉重的負擔,系統的架構重新趨於平衡。

    三端體系結構現在仍是企業應用的事實上的標准,這是由三端體系結構的適應性決定的。三個端中,中間件最為靈活,一方面可以擔負一部分客戶端的任務,有助於打造低成本的“瘦”客戶端;另一方面,一些通用的服務也可以從服務器上挪到中間件上,讓服務器的功能更加專一,以提高性能。中間件技術,作為三端體系結構的核心技術,催生了很多以中間件為主要產品的軟件公司,激烈的競爭,使得中間件技術日趨成熟。

    此後雖然出現了所謂的多端(nTIEr)體系結構,本質上還是三端的,其區別只是一個應用中包含了不只一個中間件和服務器,而是多個中間件,多個服務器,甚至多種客戶端。

    3. AJax是B/S結構向三端體系結構進化的產物嗎

    在“客戶端/服務器”體系結構向“客戶端/中間件/服務器”體系結構演變的過程中,隨著互聯網技術的廣泛應用,一種更簡便的體系結構出現了,那就是所謂的“浏覽器/服務器(Browser/Server)”體系結構,簡稱B/S結構。B/S結構一經出現,就因其無需開發客戶端,能大幅度降低企業應用中客戶端部署和維護的成本等優點,迅速獲得了軟件企業及其客戶的青睐。現在,B/S結構是最流行的應用體系結構,不論是大型的企業應用,還是小型的個人應用,B/S結構都是首選的體系結構,幾乎成了IT界的“默認”選擇,甚至我們在談起某某應用時,都不需要特別說明是什麼體系結構了。

    如果將B/S結構看作是C/S結構的變種(可能有人不同意,呵呵,只是筆者個人見解而已),那麼,我們可以發現,B/S結構不是三端體系結構。在B/S結構中,作為“客戶端”的浏覽器和作為“服務端”的Web服務器,是直接交互的,並沒有中間件的介入,企業應用的業務邏輯,要麼駐留在服務器(包括Web服務器、數據庫服務器等)上,要麼以浏覽器作為容器,沒有其他去處。因此,從“端”的角度看,B/S結構其實是“二端”的,像C/S結構一樣。

    如果這個論點是成立的,那麼,C/S結構從“二端”向“三端”的演變,是否預示了,B/S結構也會按照同樣的方式進化,從而在浏覽器和客戶端之間,產生出一個“中間件”呢?

    AJAX的出現,似乎是對這種預示作出的響應。仔細觀察,我們可以在AJAX身上發現中間件的某些特征。首先,AJAX所承載的功能,原本是分布在Web服務器和浏覽器上的,AJAX的介入,減輕了客戶端和服務器的負擔,許多原本需要重載整個頁面的請求-響應處理,現在只需重載部分頁面了;其次,AJAX部分地接管了浏覽器和Web服務器的通信,而通信攔截是中間件的重要特征之一。一方面,AJAX對浏覽器的請求進行預分析,另一方面,AJAX對Web服務器的響應進行預處理,AJax在浏覽器和Web服務器之間,扮演了一個“中介”的角色,與三端體系結構中的中間件非常相似。

    有趣的是,中間件的出現時機和AJAX的出現時機,也大致相同。C/S結構進入企業應用領域若干年後,中間件出現了,而AJAX的出現,也是在B/S結構開始流行後的若干年。具體的時間長度已經不可考證了,不過,可以留意到的是,中間件是在C/S結構應用大量湧現,客戶端和服務器日益膨脹的背景下誕生的,而AJax也是在B/S結構應用如雨後春筍般冒出,網頁上Flash和廣告群魔亂舞,用戶不再滿足於平淡和遲鈍的應用體驗的情形下,在Web應用中嶄露頭角的。

    4. AJax有沒有未來

    如果問一下,Web世界裡誰是炙手可熱的紅人,不少人一定會選擇AJAX了。不錯,AJAX現在確實非常火爆,自從Google開創了AJAX應用的先河之後,在Web領域,應用不論大小,程度不分高低,只要和Web沾邊的,人也好物也好,都要披上一件AJAX的時尚外衣,以示自己沒有落到潮流的後面。AJAX就像一桌美味佳肴,雖然選材未必精良,但色香味俱全,在這樣的誘惑下,程序員們要保持冷靜的態度和清醒的頭腦,殊非不易。其實,洗淨AJAX表面的各味調料,將AJAX的真材實料展示在食客的眼前,我們就會感覺到,AJax的未來並不明朗。

    理由之一,雖然從企業應用體系結構發展的歷史來看,AJax的作為B/S結構的中間件出現,有其必然性,但別忘了,這是有假設條件的,這個假設條件就是,B/S結構可以作為二端結構來看待。這個假設不是所有人都同意的,因為也有一種觀點,是將B/S結構看作三端結構。很簡單,只要將Web服務器往前提一提,B/S結構就變成三端結構了:浏覽器是客戶端,數據庫是服務器端,而Web服務器是中間件。這是非常典型的Web企業應用架構,可是在這個架構下,AJAX沒有地位。AJAX的一部分在浏覽器,另一部分在Web服務器,並沒有獨立出來,它必須依附浏覽器和Web服務器而存在,因此,AJax還不能單獨成為一個端,當然,也就更談不上成為中間件了。

    理由之二,即便大家都同意B/S結構可以視為二端結構,AJAX想要攀升到中間件的地位,仍然面臨許多懸而未決的問題。首先,AJax賴以生存的編程語言是JavaScript,這是一個腳本語言,是解釋性語言,雖然簡單、靈活並且容易上手,但具有解釋性語言的先天不足,比如,執行效率就是JavaScript的一個大問題,在浏覽器上玩些花樣尚可,如果要作為中間件的編程語言,那就有點勉為其難了;其次,腳本語言結構管理能力的低下,也是JavaScript成為中間件編程語言的障礙,用Javascript很難寫出像C++或Java那樣規范、可靠、合理而優美的程序,而且,現今廣為接受的面向對象的編程思想,在JavaScript下要運用起來,似乎也不是特別的自然。

    如此看來,AJAX的未來確實非常迷茫,即使受到越來越多AJAX支持者的追捧,但如果想要走得更遠,似乎也心有余而力不足。AJax問題的症結,就在於JavaScript語言。對於這種語言,一直有兩股勢力在對抗。一種是看好JavaScript,認為其簡單易學、靈活多變而且功能強大;另一種則對JavaScript不屑一顧,甚至根本不願意承認它是一種編程語言。我見過一些非常資深的程序員,對Javascript的態度,可以用“仇視”二字來描述。一種語言同時受到如此截然相反兩種對待,我所知道的,也就只有JavaScript了。

     JavaScript遭受到的如此冰火兩重天的待遇,注定了建立在JavaScript之上的AJAX的尴尬地位。AJAX的未來,很大程度上取決於JavaScript的前途。勝者王侯敗者寇,現在AJAX最關心的,莫過於Javascript面前水火不相容的兩股勢力,誰會是最後的贏家。AJax和JavaScript,一根線上的兩只螞蚱,它們的未來,已經牢牢地綁定在一起,誰又能把它們分開呢?

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved