沒接觸過web service今天看了一篇文章轉過來。
在最開始學習Web Service時候,總覺得Web Service和Servlet沒有什么區別,覺得Servlet可以對Http請求進行相應並返回數據,而Web Service只不過是基於SOAP協議和XML對數據進行封裝了,也是采用Http協議來傳輸數據,后來通過慢慢閱讀相關材料,加上實際操作,才發現Web Service和Servlet有很大區別,根本不是在一個層次上的東西,於是對於它們的區別進行總結。
1. 整體概念
Servlet是Java對於Web開發而產生的一項技術,可以說Servlet技術是Java專有的,它是服務器端的技術,客戶端通常是瀏覽器,Servlet提供了請求/響應模式,是JAVA的一種規范,只能使用於Java上,用來替代早期使用的難懂的CGI,是一種無狀態的請求響應,客戶端訪問一個服務器的url,只需要發送簡單的httprequest即可。規定了四個范圍:pageContext、request、session、application。一定依賴於各種Servlet容器,但Servlet只能接受一個簡單的http請求。
WebService最早是微軟提出了一種以XML為載體網絡信息傳輸的規范,現在幾乎所有的語言與平台都支持,帶有狀態機制,不依賴於容器,可以發送一個xml作為其請求內容。WebService通常是基於http的遠程方法調用(RMI),號稱是可以反回遠程對象,一般來說客戶段可以象調用本地方法一樣調用WebService的方法。
可以這么說,開發一個WebService系統,把它放到互聯網上,生成一個WebService描述文件wsdl,全世界的任何人,使用幾乎任何開發工具,引用了這個wsdl,就像引用了一個動態庫的頭文件一樣,方便的調用你的WebService接口,就像調用本地的方法一樣。
2. 數據傳輸
Servlet使用Http協議傳輸數據,如果你用Servlet返回XML,那個XML的描述框架就是你定的,必須告知使用者具體的說明,沒有統一標准。
Webservice使用固定的XML格式封裝成soap消息,可以使用Http作為底層數據傳輸,但並不局限於Http協議,方法返回消息是有標准的。 Web Service的優點在於可以傳遞對象(其實是結構化的數據),從而對異構系統來說更有優勢。
3. 返回結果
Servlet返回的數據比較簡單。
Web Service返回的可以是復雜對象,甚至使用附件或者mutidata的二進制文件。
4. 跨平台性
Servlet依賴於Java平台。
Web Service是跨平台的,無論什么在什么平台使用什么語言開發的Web Service,其他平台上的任何語言都能調用。
總的來說:
Servlet定義的是一套服務於Java Web開發接口,目的是實現Java Web的動態訪問。
Web Service是定義了一套標准(SOAP、WSDL、UDDI),各種語言只要按照這個標准都能實現自己的Web Service,並且其他平台和語言根據Web Service的描述文件WSDL就能夠輕易地訪問這個Web Service。
轉自:http://blog.csdn.net/guoweimelon/article/details/50772919