Ajax基礎教程(4)- 實現基本Ajax技術 4.8 訪問Web服務

來源:互聯網
上載者:User

多年以來一直存在一個軟體工程問題:從一台機器調用另一台機器上的服務或方法,即使這些機器使用完全不同的硬體或軟體。對於這個問題,最近提出的解決方案是Web服務。幾年前,Web服務大受吹捧,它的頭上圍繞著耀眼的光環,有些人認為Web服務就是分布式軟體開發的“聖杯”。後來,它的光芒逐漸黯淡下來,Web服務最終找到了自己合適的位置,它是支援異構電腦系統相互操作的一種有用的工具。

Web服務通常用作為電腦系統之間的通訊管道,這與CORBA(公用對象請求代理體繫結構)、RMI(遠程方法調用)或DCOM(分散式元件物件模型)很相似。區別在於,Web服務獨立於具體的開發商,可以採用大量編程工具和平台來實現。為了支援更高層次的互通性,Web服務是基於文本的協議,通常在HTTP之上實現。由於Web服務是基於文本的協議,所以幾乎總能使用某種XML。

最著名的Web服務實現是SOAP(簡易物件存取通訊協定 (SOAP))。SOAP是由W3C管理的規約,它是XML協議,對於如何調用遠程過程給出了定義。

WSDL(Web服務描述語言)文檔也是XML文檔,描述了如何建立Web服務的客戶。通過提供WSDL文檔,Web服務提供者就能很輕鬆地為可能的客戶建立用戶端代碼。WSDL和SOAP通常一同使用,不過不一定非得這樣,因為這兩個規約是分開維護的。

儘管人們在簡化SOAP實現上做出了很大努力,但SOAP還是一個很難使用的技術,因此很受“排擠”,只有在跨平台互通性確實是一個很重要的需求時才會使用SOAP。實現Web服務還有一種更簡單的方法,稱為REST(代表狀態傳輸),它在開發人員中享有越來越高的知名度,這些開發人員一方面希望得到SOAP好處的80%,另一方面只希望付出SOAP代價的20%。

Yahoo!選擇REST作為其公用Web服務的協議。Yahoo!認為基於REST的服務很容易理解,而且很推崇REST的“平易近人”,因為當前大多數程式設計語言都可以訪問REST。實際上,Yahoo!相信,與SOAP相比,REST的門檻更低,使用也更容易。

通過使用REST,建立請求時可以先指定一個服務入口URL,再向查詢串追加搜尋參數。服務將結果返回為XML文檔。這個模式聽上去是不是很熟悉?你說對了,它與本書中你見過的Ajax例子是一樣的。

XMLHttpRequest對象非常適合作為基於REST的Web服務的客戶。使用XMLHttpRequest對象,可以向Web服務非同步地發出請求,並解析得到的XML響應。對於Yahoo! Web服務,XMLHttpRequest對象可以向Yahoo!發出請求,搜尋指定的項。一旦Yahoo!返迴響應,則使用JavaScript DOM方法解析響應,並向頁面動態地提供結果資料。

代碼清單4-15展示了如何使用Ajax技術訪問Yahoo! Web服務,並向頁面提供結果。頁面上的文字欄位允許使用者指定搜尋項。使用者可以使用選擇框來指定需要顯示多少個結果。點擊Submit(提交)按鈕就能啟動搜尋。

不過,先等等!第2章我們曾經說過,XMLHttpRequest對象只能訪問發起文檔(即呼叫指令碼)所在域中的資源。如果試圖訪問其他域的資源,可能因為瀏覽器的安全限制而失敗。怎麼解決呢?

解決辦法有好幾個。在第2章已經瞭解到,瀏覽器實現安全沙箱的方式各有不同。IE會詢問使用者是否允許訪問另一個域中的資源。Firefox則會報告錯誤,自動失敗,雖然可以用專用於Firefox的JavaScript代碼避免這種行為。

還有一個選擇,這也是本例中要採用的方法,就是建立Yahoo!的網關,它與XMLHttp-

Request指令碼在同一個域中。由網關接收來自XMLHttpRequest對象的請求,並把它轉寄到Yahoo! Web服務。Yahoo!做出響應返回結果時,網關再把結果路由傳送到瀏覽器。通過使用這種方法,就能避免使用瀏覽器特定的JavaScript。另外,這種方法也更加健壯,因為你還可以擴充網關,讓它支援其他的Web服務提供者。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.