国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

AJAX有沒有未來?

2019-11-18 16:48:39
字體:
供稿:網(wǎng)友

    【IT168 專稿】Ajax是若干成熟技術(shù)的組合,旨在讓用戶從Web應(yīng)用中獲得更加滿意的用戶體驗。本文回顧了企業(yè)應(yīng)用體系結(jié)構(gòu)的進化歷程,試圖闡述AJAX是B/S架構(gòu)發(fā)展的必然產(chǎn)物,但是,由于AJAX賴以生存的javaScript編程語言的先天不足,AJAX似乎又前途堪憂。本文作者從中間件的角度,對AJAX的未來作出了自己的預(yù)測。

    1. 什么是AJAX

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

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

    當(dāng)用戶瀏覽一個基于AJAX的Web應(yīng)用時,用戶的請求被提交給一個稱為AJAX引擎(AJAX Engine)的代理,這個AJAX引擎負(fù)責(zé)接收用戶請求,從Web服務(wù)器上獲取響應(yīng),并更新瀏覽器內(nèi)容。形象地說,傳統(tǒng)的Web應(yīng)用中,瀏覽器是直接和Web服務(wù)器打交道的,而在AJAX應(yīng)用中,瀏覽器和Web服務(wù)器之間出現(xiàn)了一個來回跑腿的“中介”,而且這個 “中介”相當(dāng)?shù)那诳欤裕軌蚪o瀏覽器提供更好的服務(wù),從而使用戶獲得更滿意的應(yīng)用體驗。

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

    JavaScript和微軟的XMLHttPRequest對象,是AJAX 引擎的兩條腿。當(dāng)與瀏覽器交互時,AJAX引擎使用JavaScript語言;而當(dāng)與Web服務(wù)器交互時,則使用微軟的XMLHttpRequest對象。由于AJAX引擎依賴微軟的XMLHttpRequest對象技術(shù),所以,早期只有微軟的IE瀏覽器支持AJAX。現(xiàn)在,隨著采用AJAX技術(shù)的Web應(yīng)用的不斷涌現(xiàn),所有主流的瀏覽器,例如Firefox、Netscape、Opera、Safari等,也都支持AJAX了。

2. 企業(yè)應(yīng)用體系結(jié)構(gòu)的進化歷程

    在筆者看來,AJAX的出現(xiàn),并非偶然。為了說明這一點,讓我們來回顧一下,計算機應(yīng)用體系結(jié)構(gòu)的發(fā)展歷史,這或許有助于我們揭示AJAX的來歷。

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

    人的欲望是永遠也不會滿足的,單機應(yīng)用沒有持續(xù)多久,兩臺計算機之間交換數(shù)據(jù)的需求,就隨著計算機應(yīng)用范圍的擴展而出現(xiàn)了。在PC領(lǐng)域,最初的計算機數(shù)據(jù)交互形式是串口通信,后來,隨著Novell公司著名的NetWare網(wǎng)絡(luò)技術(shù)的推出,運行在兩臺不同機器上的程序,有了可以更方便地交互的渠道,于是出現(xiàn)了客戶機和服務(wù)器,即所謂的Client/Server結(jié)構(gòu),簡稱C/S結(jié)構(gòu)。C/S結(jié)構(gòu)因其將應(yīng)用劃分為兩個部分的特點,也被稱為“二端”體系結(jié)構(gòu)。

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

    三端體系結(jié)構(gòu)現(xiàn)在仍是企業(yè)應(yīng)用的事實上的標(biāo)準(zhǔn),這是由三端體系結(jié)構(gòu)的適應(yīng)性決定的。三個端中,中間件最為靈活,一方面可以擔(dān)負(fù)一部分客戶端的任務(wù),有助于打造低成本的“瘦”客戶端;另一方面,一些通用的服務(wù)也可以從服務(wù)器上挪到中間件上,讓服務(wù)器的功能更加專一,以提高性能。中間件技術(shù),作為三端體系結(jié)構(gòu)的核心技術(shù),催生了很多以中間件為主要產(chǎn)品的軟件公司,激烈的競爭,使得中間件技術(shù)日趨成熟。

    此后雖然出現(xiàn)了所謂的多端(nTier)體系結(jié)構(gòu),本質(zhì)上還是三端的,其區(qū)別只是一個應(yīng)用中包含了不只一個中間件和服務(wù)器,而是多個中間件,多個服務(wù)器,甚至多種客戶端。

    3. AJAX是B/S結(jié)構(gòu)向三端體系結(jié)構(gòu)進化的產(chǎn)物嗎

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

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

    如果這個論點是成立的,那么,C/S結(jié)構(gòu)從“二端”向“三端”的演變,是否預(yù)示了,B/S結(jié)構(gòu)也會按照同樣的方式進化,從而在瀏覽器和客戶端之間,產(chǎn)生出一個“中間件”呢?

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

    有趣的是,中間件的出現(xiàn)時機和AJAX的出現(xiàn)時機,也大致相同。C/S結(jié)構(gòu)進入企業(yè)應(yīng)用領(lǐng)域若干年后,中間件出現(xiàn)了,而AJAX的出現(xiàn),也是在B/S結(jié)構(gòu)開始流行后的若干年。具體的時間長度已經(jīng)不可考證了,不過,可以留意到的是,中間件是在C/S結(jié)構(gòu)應(yīng)用大量涌現(xiàn),客戶端和服務(wù)器日益膨脹的背景下誕生的,而AJAX也是在B/S結(jié)構(gòu)應(yīng)用如雨后春筍般冒出,網(wǎng)頁上Flash和廣告群魔亂舞,用戶不再滿足于平淡和遲鈍的應(yīng)用體驗的情形下,在Web應(yīng)用中嶄露頭角的。

    4. AJAX有沒有未來

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

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

    理由之二,即便大家都同意B/S結(jié)構(gòu)可以視為二端結(jié)構(gòu),AJAX想要攀升到中間件的地位,仍然面臨許多懸而未決的問題。首先,AJAX賴以生存的編程語言是JavaScript,這是一個腳本語言,是解釋性語言,雖然簡單、靈活并且容易上手,但具有解釋性語言的先天不足,比如,執(zhí)行效率就是JavaScript的一個大問題,在瀏覽器上玩些花樣尚可,如果要作為中間件的編程語言,那就有點勉為其難了;其次,腳本語言結(jié)構(gòu)管理能力的低下,也是JavaScript成為中間件編程語言的障礙,用JavaScript很難寫出像C++或Java那樣規(guī)范、可靠、合理而優(yōu)美的程序,而且,現(xiàn)今廣為接受的面向?qū)ο蟮木幊趟枷耄贘avaScript下要運用起來,似乎也不是特別的自然。

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 清原| 司法| 嘉义县| 朝阳市| 宝丰县| 黄浦区| 蓝山县| 晋宁县| 延津县| 定安县| 玛纳斯县| 仪陇县| 中西区| 囊谦县| 子洲县| 烟台市| 绥滨县| 茂名市| 安龙县| 渭南市| 蒙自县| 张北县| 陇川县| 双鸭山市| 宁都县| 高台县| 孙吴县| 平邑县| 罗源县| 达州市| 吴旗县| 长寿区| 璧山县| 苍梧县| 读书| 封丘县| 同心县| 娄烦县| 婺源县| 尉氏县| 安徽省|