我認為,下一代互聯(lián)網(wǎng)軟件將建立在Web service(也就是"云")的基礎(chǔ)上。
我把學(xué)習(xí)筆記和學(xué)習(xí)心得,放到網(wǎng)志上,歡迎指正。
今天先寫一個最基本的問題,Web service到底是什么?
一、Web service的概念
想要理解Web service,必須先理解什么是Service(服務(wù))。
傳統(tǒng)上,我們把計算機后臺程序(Daemon)提供的功能,稱為"服務(wù)"(service)。比如,讓一個殺毒軟件在后臺運行,它會自動監(jiān)控系統(tǒng),那么這種自動監(jiān)控就是一個"服務(wù)"。通俗地說,"服務(wù)"就是計算機可以提供的某一種功能。
根據(jù)來源的不同,"服務(wù)"又可以分成兩種:一種是"本地服務(wù)"(使用同一臺機器提供的服務(wù),不需要網(wǎng)絡(luò)),另一種是"網(wǎng)絡(luò)服務(wù)"(使用另一臺計算機提供的服務(wù),必須通過網(wǎng)絡(luò)才能完成)。
舉例來說,我現(xiàn)在有一批圖片,需要把它們的大小縮小一半。那么,我們可以把"縮放圖片"看成是一種服務(wù)。你可以使用"本地服務(wù)",在自己計算機上用軟件縮小圖片,也可以使用"網(wǎng)絡(luò)服務(wù)",將圖片上傳到某個網(wǎng)站,讓服務(wù)器替你縮小圖片,完成后再通過網(wǎng)絡(luò)送回給你。這就好比,一件事你可以自己做,也可以交給另一個人去做。肚子餓了,你可以自己做飯,也可以打電話去訂一份比薩,讓店家替你做好送上門。
"網(wǎng)絡(luò)服務(wù)"(Web Service)的本質(zhì),就是通過網(wǎng)絡(luò)調(diào)用其他網(wǎng)站的資源。
舉例來說,去年我寫過一個"四川大地震圖片墻",它能動態(tài)顯示關(guān)于四川地震的最新圖片。但是,所有的圖片都不是儲存在我的服務(wù)器上,而是來自flickr.com。我只是發(fā)出一個動態(tài)請求,要求flickr.com向我提供圖片。這種情況下,flickr.com提供的就是一種Web service。如果我把圖片都存放在本地服務(wù)器,不調(diào)用flickr.com,那么我就是在使用"本地服務(wù)"。
所以,Web service讓你的網(wǎng)站可以使用其他網(wǎng)站的資源,比如在網(wǎng)頁上顯示天氣、地圖、twitter上的最新動態(tài)等等。
二、Web Service架構(gòu)和云
如果一個軟件的主要部分采用了"網(wǎng)絡(luò)服務(wù)",即它把存儲或計算環(huán)節(jié)"外包"給其他網(wǎng)站了,那么我們就說這個軟件屬于Web Service架構(gòu)。
Web Service架構(gòu)的基本思想,就是盡量把非核心功能交給其他人去做,自己全力開發(fā)核心功能。比如,如果你要開發(fā)一個相冊軟件,完全可以使用Flickr的網(wǎng)絡(luò)服務(wù),把相片都儲存到它上面,你只要全力做好相冊本身就可以了。總體上看,凡是不屬于你核心競爭力的功能,都應(yīng)該把它"外包"出去。
最近很紅的"云計算"(cloud computing)或者"云服務(wù)"(cloud services),實際上就是Web Service的同義詞,不過更形象一些罷了。它們不說你把事情交給其他計算機去做,而說你把事情交給"云"去做。
三、本地服務(wù)的缺陷
"網(wǎng)絡(luò)服務(wù)"是未來軟件開發(fā)和使用的趨勢,本地服務(wù)將用得越來越少,主要因為以下三個原因:
* 本地資源不足。很多數(shù)據(jù)和資料,本地得不到,只有向其他網(wǎng)站要。
* 成本因素。本地提供服務(wù),往往是不經(jīng)濟的,使用專業(yè)網(wǎng)站的服務(wù)更便宜。這里面涉及硬件和人員兩部分,即使你買得起硬件,專門找一個人管理系統(tǒng),也是很麻煩的事。
* 可移植性差。如果你想把本機的服務(wù),移植到其他機器上,往往很困難,尤其是在跨平臺的情況下。
四、Web Service的優(yōu)勢
除了本地服務(wù)的缺點以外,Web Service還有以下的優(yōu)越性:
* 平臺無關(guān)。不管你使用什么平臺,都可以使用Web service。
* 編程語言無關(guān)。只要遵守相關(guān)協(xié)議,就可以使用任意編程語言,向其他網(wǎng)站要求Web service。這大大增加了web service的適用性,降低了對程序員的要求。
* 對于Web service提供者來說,部署、升級和維護Web service都非常單純,不需要考慮客戶端兼容問題,而且一次性就能完成。
* 對于Web service使用者來說,可以輕易實現(xiàn)多種數(shù)據(jù)、多種服務(wù)的聚合(mashup),因此能夠做出一些以前根本無法想像的事情。
五、Web service的發(fā)展趨勢
根據(jù)我的觀察,目前Web service有這樣幾種發(fā)展趨勢。
* 在使用方式上,RPC和soap的使用在減少,Restful架構(gòu)占到了主導(dǎo)地位。
* 在數(shù)據(jù)格式上,XML格式的使用在減少,json等輕量級格式的使用在增多。
* 在設(shè)計架構(gòu)上,越來越多的第三方軟件讓用戶在客戶端(即瀏覽器),直接與云端對話,不再使用第三方的服務(wù)器進行中轉(zhuǎn)或處理數(shù)據(jù)。