一個最重要的新的基於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很大程度上仍然上開發人員的事情,需要被提升到業務級別。”