??????從圖2所示可以看出,在Ajax中,每個客戶端表現的頁面可以由多個服務器端頁面共同完成,一個服務器端頁面可以為多個客戶端頁面服務。在這樣的模式下,每個服務器端頁面可以將功能的粒度分的很細,至于這些功能怎么組合,則完全是客戶端的事。通過Ajax引擎,客戶端頁面可以根據用戶的需求來調用服務器端相應的頁面,獲得數據并顯示在頁面上。此時許多服務器端頁面已經不能稱之為頁面,應該稱之為接口。???⑶兩種開發模式的比較??????①傳統Web模式的工作流程??????比起Ajax中的異步的概念,在傳統Web模式中是一種同步的概念:用戶必須等待每個請求,當一個請求完成后才能獲得結果,在使用完這些結果后才會發出新的請求。如時序圖3描述
????????????從圖中可以看到,在傳統的Web開發中,完全是一種請求→刷新→響應的模型,用戶只有等請求完成后才能進行用戶操作,操作完成后才能提交下一個請求,用戶行為和服務器行為是一種同步的關系,需要相互等待,正是這種等待,造成了BS結構客戶端和CS架構客戶端的本質區別。??????②Ajax程序的工作流程??????在基于Ajax的Web程序中,最為重要的特征就是將同步請求轉變為異步請求。這意味著客戶端和服務器端不必再相互等待,而是可以進行一些并發的操作。用戶在發送請求以后可以繼續當前工作,包括瀏覽和提交信息。在服務器響應完成之后,Ajax引擎會將更新的數據顯示給用戶,而用戶則工具響應內容來決定自己下一步的行為,圖4描述了異步Ajax操作的流程。
??????從圖4中可見,在用戶行為和服務器端多了一層Ajax引擎,他負責處理用戶的行為,并轉化為對服務器的請求。同時它接收服務器端返回的信息,經過處理后顯示給用戶。由于Ajax在后臺以異步的方式工作,用戶無需等待服務器的處理,可以進行并發工作,這就在用戶界面層次上更為接近了CS架構的客戶端平臺。 ??????注意:同步和異步只是兩種開發模式的區別中的一個。Ajax還帶來了性能的提高:因為用戶的行為經過了Ajax引擎的處理,使得客戶端可以只獲取需要的數據。DOM模型使得動態改變頁面的層次結構成為可能,這樣動態獲取的數據可以動態的嵌入到頁面之中,避免了數據重復加載帶來的速度和效率問題。服務器端的組織形式則可以將功能劃分的更細,這樣服務器就可以只為有用的數據進行工作,大大提高了運行效率。 3、Ajax中的關鍵技術 ???Ajax是多種技術的一個組合應用,盡管很多技術都已經存在多時并且相當成熟,但卻沒有引起人們足夠重視,對它們的了解一般也都停留在一個很基礎的階段。現在就將對這些技術做一個簡要的介紹,說明他們在Ajax中所起的作用以及如何協同工作的。???⑴JavaScript腳本語言??????頁面設計時常常會加入一些特效,這個是JavaScript的功勞。??????在Ajax中,JavaScript已經從后臺狀態轉移到前臺,發揮著巨大的作用。可以說,JavaScript是Ajax中的黏合劑,它使DOM、XHTML、XML和CSS可以互相協作,并控制他們的行為。??????現在Web程序中基于JavaScript實現很多功能已經具有相當大的實用性了,不再是一些特效或者表單驗證之類的簡單應用了,這些應用所使用的JavaScript技術也是相當專業的。因此,要開發復雜高效的Ajax應用程序,就必須對JavaScript有深入的認識,應該象對待一門新的語言一樣來對待它。???⑵XMLHttpRequest對象??????XMLHttpRequest是一個長期被人忽視的對象,這與它強大的功能不相匹配。借助他可以在網頁的背后和瀏覽器進行異步通訊,而無需刷新整個頁面。XMLHttpRequest對象在JavaScript中創建并使用,客戶端可以僅僅從服務器端獲取它需要的信息;通過DOM和CSS的結合,就可以實現局部刷新的效果;同時還可以通過XMLHttpRequest對象異步提交信息,將用戶的輸入在后臺提交到服務器而無需刷新這個頁面。???⑶可擴展標記語言(XML)??????XML作用很大而且廣為接受,它為跨平臺、跨領域的應用提供了一種通信手段。在Ajax中,它以客戶端和服務器端通信載體的身份出現。按照最初對Ajax的定義,服務器端和客戶端的通信都應該由XML來完成。事實上,使用XML的確可以帶來很多好處,例如數據傳輸非常規范;服務器端和客戶端的開發人員可以很好的協同工作,不用為數據格式的問題而煩惱;可以方便地使用XSLT將XML文檔直接轉換為HTML片斷插入到頁面中。???⑷文檔對象模型(DOM)??????文檔對象模型(DOM)用來表示顯示在瀏覽器上的整個文檔對象及其層次結構。在Ajax中,DOM模型是不可缺少的一部分。使用JavaScript可以訪問文檔中的所有節點,即所有對象。??????通過改變這些對象的屬性,用戶可以控制頁面的局部行為,將動態獲取的數據插入到文檔中,實現局部刷新的目的。用戶還可以利用DOM模型增加和刪除文檔結點,實現界面元素的動態變化。???⑸級聯樣式表技術(CSS)??????CSS最近兩年是熱火朝天,其中一個重要的原因就是使用Web標準進行頁面設計正逐漸成為主流。??????在Ajax中,CSS同樣擔當著界面表現的重任,其重要性甚至超過了傳統的Web程序設計。JavaScript通過XMLHttpRequest對象和服務器進行交互,通常獲取的都是單純的數據,不包括表現元素,而將這些數據插入到文檔本身就是一件非常嚴謹的工作,如果此時還需要使用JavaScript操作標記的屬性來控制其外觀,會使代碼更加復雜而且難以維護,也無法做到使程序開發人員和界面設計人員分工合作,使用CSS則能很好的解決這個問題。CSS知道出現在某個地方的標記應該顯示什么樣式,通過簡單的類屬性和id屬性也很容易決定那些元素應該有怎樣的表現形式。4、使用Ajax帶來的問題???⑴用戶瀏覽習慣改變帶來的問題???⑵對搜索引擎的不友好???⑶前進后退按鈕的失效???⑷刷新定位問題???⑸性能問題???⑹開發難度的加大
Powered by: BlogJava Copyright © 龍~天飛