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

