我把學習筆記和學習心得,放到網誌上,歡迎指正。
今天先寫一個最基本的問題,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使用者來說,可以輕易實現多種資料、多種服務的聚合(mashup),因此能夠做出一些以前根本無法想像的事情。
五、Web service的發展趨勢
根據我的觀察,目前Web service有這樣幾種發展趨勢。
* 在資料格式上,XML格式的使用在減少,json等輕量級格式的使用在增多。
* 在設計架構上,越來越多的第三方軟體讓使用者在客戶端(即瀏覽器),直接與雲端對話,不再使用第三方的伺服器進行中轉或處理資料。
(完)