Ajax的異步通信引發的一個隨機性問題

【ajax的簡介】

​​AJAX(異步JavaScript和XML的縮寫)[1]是一組相互關聯的用於創建異步的客戶端Web應用程序的方法。有了Ajax,Web應用程序可以發送數據,並檢索數據,服務器異步(在後臺),而不會干擾現有的網頁的顯示和行爲。通常使用XMLHttpRequest對象檢索數據。儘管名字中含有xml,並不一定必須使用XML(JSON是經常被用來代替),請求的方式不一定必須爲異步的。
Ajax不是一個技術,而是一組技術。HTML和CSS,可以結合用來標記和樣式信息。DOM允許JavaScript訪問動態顯示,並允許用戶交互信息。JavaScript和XMLHttpRequest對象提供了異步瀏覽器和服務器之間交換數據,以避免整頁重新載入的方法。

【可以用的技術】

ajax代表許多web技術,他們可用於實現Web應用程序與後臺的服務器進行通信並且同時不會干擾當前頁面狀態。
    * HTML(或XHTML)和CSS
    *文檔對象模型(DOM)動態顯示和數據交互
    * XML的數據交換,其操縱和XSLT
    * XMLHttpRequest對象異步通信
    * JavaScript來把這些技術結合在一起

JavaScript是不是唯一的客戶端腳本語言,使用其他語言如VBScript也能夠所需的功能,可用於實現Ajax應用程序。JavaScript是最流行的語言,並與大多數現代Web瀏覽器的兼容性,成爲最流行的開發ajax的語言。此外,數據交換並不一定必須需要XML,因此XSLT也不是數據操作所必需的。JavaScript Object Notation(JSON)是經常被用來作爲數據交換,雖然也可用於其他如預先格式化的HTML或純文本格式的替代格式。

【缺點】

【技術上增加開發的複雜度】

*兼容性問題不同【版本】瀏覽器,包括對XMLHttpRequest,javascript,dom,css等技術的支持。

*富客戶端開發時第一,JavaScript語言本身之能力可能不足以處理複雜的業務邏輯。第二,JavaScript的執行性能一向不好。第三,JavaScript訪問服務器數據,仍需適當的服務器端程序之配合。第四,瀏覽器兼容性的問題又出現

*

*破壞瀏覽器的默認行爲比如後退按鈕,加標籤按鈕等

*瘦客戶端thin client)架構。瀏覽器的用戶接口引擎僅用於反映服務器的表現層以及傳達用戶的輸入回到服務器的表現層。由瀏覽器所觸發之事件亦送回服務器處理,根據業務邏輯來更新表現層,然後反映回瀏覽器。因爲所有應用程序完全在服務器執行,數據及表現層皆可直接訪問,程序員只需使用服務器端相對較成熟之程序語言(如Java語言)即可,不需再學習JavaScript/DOM/CSS,在開發應用程序時相對容易。缺點在於用戶接口引擎以及表現層通常以標準組件的形式存在,如需要特殊組件(用戶接口)時,往往須待原框架之開發者提供,緩不濟急。如開源碼Ajax開發框架ZK目前支持XULXHTML組件,尚無XAML之支持

*Ajax是以異步的方式向服務器提交需求。對服務器而言,其與傳統的提交窗體需求並無不同,而且由於是以異步之方式提交,如果同時有多個Ajax需求及窗體提交需求,將無法保證哪一個需求先獲得服務器的響應。這會造成應用程序典型的多進程(process)或多線程(thread)的競爭(racing)問題。程序員因此必須自行處理或在JavaScript裏面動手腳以避免這類競爭問題的發生(如Ajax需求未響應之前,先disable提交按鈕),這又不必要的增加了程序員的負擔。目前已知有自動處理此問題之開發框架似乎只有ZK

 *由於ajax的的完成守客戶的網絡環境影響,網絡太慢時可能導致請求迴應時用戶正在驚醒一個不方便打擾的操作,或者是某些依賴與請求結果的操作具有不確定性。

*ajax的跨域問題。

*用戶禁用javascript則導致功能不可用的問題。


[富客戶端]將業務邏輯及表現層放在瀏覽器,數據層放在服務器:因爲所有的程序以JavaScript執行在客戶端,只有需要數據時才向服務器要求服務,此法又稱爲胖客戶端(fat client)架構。服務器在此架構下通常僅用於提供及儲存數據。此法的好處在於程序員可以充分利用JavaScript搭配業務邏輯來做出特殊的用戶接口,以符合終端用戶的要求。

表現層、業務邏輯、及數據層放在服務器,瀏覽器僅有用戶接口引擎(User Interface engine);此法又稱爲瘦客戶端(thin client)架構,或中心服務器(server-centric)架構



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章