ajax|services|web 一個最重要的新的基於Web的技術已經沉寂了很多年,現在卻突然變得相當流行。這主要源於Google和其它網站上一些用它構建的應用程式。這就是Ajax,這種編程技術被用於建立豐富的、基於Web的、與案頭軟體觀感類似的應用程式,但它們是基於瀏覽器的,而且所用資源不多。
分析師說這種技術最終會讓Web services和SOA的前端變得功能強大,而事實上也正在開始朝這個方向前進。有些人相信, Ajax最終會成為SOA和人機互動的Web services的主要使用者介面。只不過是在不遠的將來罷了。
本周,有兩部分專欄來介紹Web services和SOA中Ajax的實現。在第一部分裡,我們來看看什麼是Ajax,它是如何工作的,以及它給Web services和SOA提供的一些好處。在下一部分,我們將談談它被廣泛採用的可能性以及在被採用的過程中會遇到的問題。
Ajax如何工作
理解Ajax首先要明白它不是一個簡單的技術,對它的使用不會被標準或標準體系控制,而且永遠也不會。儘管它是一個熱門話題,但它並不是特別新的技術。
Ajax的意思是非同步JavaScript與XML(asynchronous JavaScript and XML)。它使用了若干項技術來構建豐富的基於Web的應用,使之有傳統型程式一樣的觀感,這包括CSS、JavaScript、XHTML、XML、XMLHttpRequest、文件物件模型以及XSLT。這些應用程式擁有和傳統型程式一樣的互通性和快速回應時間,而不像很多典型Web應用程式一樣響應遲鈍、缺乏動感。
Ajax是如何工作的呢?在一個典型的非Ajax Web應用中,瀏覽器中的一個動作需要觸發達到Web伺服器的Http請求。伺服器處理請求,例如取出資料或幹其它事情,然後把HTML頁面和結果一起返回給用戶端(瀏覽器)。當兩個方向上的請求都在發送或伺服器正在處理資料時,使用者就必須等待。
然而,對於Ajax來說,一切都不一樣。當使用者開啟一個Web頁面,就載入了JavaScript編寫的Ajax引擎。從此刻起,使用者就與引擎互動,這就在使用者和Web伺服器之間扮演了一個中介層。Ajax引擎非同步地工作、獨立於任何伺服器通訊,所以就算當請求和響應在引擎和伺服器之間被來回傳送,使用者還是能與應用程式互動。
同樣重要的是,引擎本身能夠立即處理不需要請求伺服器的動作,例如在記憶體中編輯資料,驗證資料等。這些可以立即進行因為伺服器通訊沒有被調用——這就像傳統型應用程式一樣。
結果,出現了一個豐富的、與案頭應用類似的應用程式,但是它運行在瀏覽器中。
已經有不少Ajax Web 應用了。Google非常積極地利用Ajax構建應用程式,例如Gmail和Google Local(正式名稱是Google Maps)。A9搜尋引擎也使用到它。你會看到越來越多這種應用。
對SOA和Web Serivices意味著什麼
那麼,所有這些對SOA和Web services意味著什麼呢?考慮到Ajax的使用主要是客戶層級的服務,那麼它真的會在企業中找到歸宿嗎?
分析師認為答案是肯定的,儘管這會來的晚一些。ZapThink的進階分析師Ron Schmelzer說,最終Ajax應用會代替現在把Web services和SOA聯絡在一起的企業門戶。
他說:“人們會用Ajax構建的富用戶端代替基於Web的門戶。由於它提供了豐富的功能,你能在企業之間和企業與客戶互動時用到它。”
他指出,銀行Web網站已經開始使用Ajax應用來使它們的客戶更容易地操作金融服務。他說:“他們想讓使用者儘可能有與傳統型程式一樣的體驗。”
Schmelzer還發現Ajax正因為他發現的趨勢而不斷被採用。他說,在SOA中,他正發現一類混合型應用——它既不是瀏覽器也不是傳統型應用程式。它們把二者結合起來,具有分布式應用使用者互動的優點,但由於是分布在Web上的,因此很容易部署。
他相信這種應用將會用Ajax構建。
Kevin Hakman進入Ajax領域已經很長一段時間了,他是General Interface的一位創立者。General Interface是一家富互連網應用程式開發工具供應商,一年前被Tibco Software公司收購。Hakman現在是Tibco負責產品市場的主管,他相信Web services和SOA的將來與Ajax息息相關。
“Ajax之所以重要是因為它使人們用瀏覽器直接於SOA和Web services進行互動,這是讓人們擷取Web services和SOA的最佳方法。”他說。現在,Web services和SOA在機器到機器層級上工作的很好,但是為人們與服務互動而構建的使用者介面卻存在問題。他相信,Ajax就是問題的答案。
當然,今天的Ajax還沒有被廣泛用於Web services和SOA。
Schmelzer說:“Ajax很大程度上仍然上開發人員的事情,需要被提升到業務層級。”
- Ajax: 一個建立Web應用的新途徑
- Ajax的錯誤處理機制探討(2)
- Ajax的錯誤處理機制探討(1)
- 初次體驗.NET Ajax無重新整理技術
- Rails系統中的AJAX開發技術簡析(4)