Web service是什麼?

原文:http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html

我認爲,下一代互聯網軟件將建立在Web service(也就是"雲")的基礎上。

我把學習筆記和學習心得,放到網誌上,歡迎指正。

今天先寫一個最基本的問題,Web service到底是什麼?

一、Web service的概念

想要理解Web service,必須先理解什麼是Service(服務)。

傳統上,我們把計算機後臺程序(Daemon)提供的功能,稱爲"服務"(service)。比如,讓一個殺毒軟件在後臺運行,它會自動監控系統,那麼這種自動監控就是一個"服務"。通俗地說,"服務"就是計算機可以提供的某一種功能。

根據來源的不同,"服務"又可以分成兩種:一種是"本地服務"(使用同一臺機器提供的服務,不需要網絡),另一種是"網絡服務"(使用另一臺計算機提供的服務,必須通過網絡才能完成)。

舉例來說,我現在有一批圖片,需要把它們的大小縮小一半。那麼,我們可以把"縮放圖片"看成是一種服務。你可以使用"本地服務",在自己計算機上用軟件縮小圖片,也可以使用"網絡服務",將圖片上傳到某個網站,讓服務器替你縮小圖片,完成後再通過網絡送回給你。這就好比,一件事你可以自己做,也可以交給另一個人去做。肚子餓了,你可以自己做飯,也可以打電話去訂一份比薩,讓店家替你做好送上門。

"網絡服務"(Web Service)的本質,就是通過網絡調用其他網站的資源。

舉例來說,去年我寫過一個"四川大地震圖片牆"它能動態顯示關於四川地震的最新圖片。但是,所有的圖片都不是儲存在我的服務器上,而是來自flickr.com。我只是發出一個動態請求,要求flickr.com向我提供圖片。這種情況下,flickr.com提供的就是一種Web service。如果我把圖片都存放在本地服務器,不調用flickr.com,那麼我就是在使用"本地服務"。

所以,Web service讓你的網站可以使用其他網站的資源,比如在網頁上顯示天氣、地圖、twitter上的最新動態等等。

二、Web Service架構和雲

如果一個軟件的主要部分採用了"網絡服務",即它把存儲或計算環節"外包"給其他網站了,那麼我們就說這個軟件屬於Web Service架構。

Web Service架構的基本思想,就是儘量把非核心功能交給其他人去做,自己全力開發核心功能。比如,如果你要開發一個相冊軟件,完全可以使用Flickr的網絡服務,把相片都儲存到它上面,你只要全力做好相冊本身就可以了。總體上看,凡是不屬於你核心競爭力的功能,都應該把它"外包"出去。

最近很紅的"雲計算"(cloud computing)或者"雲服務"(cloud services),實際上就是Web Service的同義詞,不過更形象一些罷了。它們不說你把事情交給其他計算機去做,而說你把事情交給"雲"去做。

三、本地服務的缺陷

"網絡服務"是未來軟件開發和使用的趨勢,本地服務將用得越來越少,主要因爲以下三個原因:

* 本地資源不足。很多數據和資料,本地得不到,只有向其他網站要。

* 成本因素。本地提供服務,往往是不經濟的,使用專業網站的服務更便宜。這裏面涉及硬件和人員兩部分,即使你買得起硬件,專門找一個人管理系統,也是很麻煩的事。

* 可移植性差。如果你想把本機的服務,移植到其他機器上,往往很困難,尤其是在跨平臺的情況下。

四、Web Service的優勢

除了本地服務的缺點以外,Web Service還有以下的優越性:

* 平臺無關。不管你使用什麼平臺,都可以使用Web service。

* 編程語言無關。只要遵守相關協議,就可以使用任意編程語言,向其他網站要求Web service。這大大增加了web service的適用性,降低了對程序員的要求。

* 對於Web service提供者來說,部署、升級和維護Web service都非常單純,不需要考慮客戶端兼容問題,而且一次性就能完成。

* 對於Web service使用者來說,可以輕易實現多種數據、多種服務的聚合(mashup),因此能夠做出一些以前根本無法想像的事情。

五、Web service的發展趨勢

根據我的觀察,目前Web service有這樣幾種發展趨勢。

* 在使用方式上,RPC和soap的使用在減少,Restful架構佔到了主導地位。

* 在數據格式上,XML格式的使用在減少,json等輕量級格式的使用在增多。

* 在設計架構上,越來越多的第三方軟件讓用戶在客戶端(即瀏覽器),直接與雲端對話,不再使用第三方的服務器進行中轉或處理數據。

(完)

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