其實從實現的效果上,它們是很相似的
相同點:
用戶端訪問一個伺服器的url,然後得到返回結果。
我們使用的servlet是基於 http的請求接聽模式的
大部分WebService低層也使用http作為實現。
用戶端方面,
2者都不局限,只要是能夠發送http請求的用戶端,可是是普通application可以是瀏覽器,可是j2me,jese平台甚至是其他語言的任何形式的用戶端。這一點是由http協議的特點決定的。
區別:
但是servlet只能接受一個簡單的http請求,而WebService是發送一個xml作為其請求內容。
作為返回結果,servlet是html頁面,而ws可以是複雜物件甚至使用附件或者mutidata的2進位檔案。
伺服器方面不要一樣,前者需要遵守j2ee的Web Application規範部署在tomcat,weblogic這樣的應用伺服器上。WebService則需要有WSDL檔案來部署服務,或者使用UDDI註冊。
其實一開始我看到這個標題就覺得兩者根本就是不相干的,怎麼能比呢。
這下一分析,因為他們底層的http實現讓他們真的很相似。
WebService的跨平台特性是servlet不能比的
而servlet相對來說速度上的優勢也是不可忽視的。
Top
2 樓gstart(Hawk)回複於 2005-08-08 17:05:38 得分 0
我在本版問了個ejb和web service的問題,都沒有人理會.樓上這位仁兄對servlet和web service的區別講的很好,順便也講一下ejb和web service吧, 我覺得web service 用來代替無狀態會話bean是個不錯的主意呢. web service好像可以部署在tomcat上吧,ejb對運行環境要求則比較苛刻了.
樓上的高手能否指點一下 ejb和web service 分別用在什麼場合比較合適Top
3 樓layueer(愛傷懷,努力升仙)回複於 2005-08-08 17:30:40 得分 0
強頂Top
4 樓jFresH_MaN(十一月的蕭邦-夜曲)回複於 2005-08-08 19:15:06 得分 0
其實我還不會ejb呢,因為我不喜歡ejb這麼累贅的東西。
但是WebService在效率上也是不好的,但是它是在xml的應用之上,那麼必然平台無關語言無關,這是我最喜歡它的地方。
Tomcat裡面可以使用axis(apache的一個ws項目)部署ws,比較簡單。Top
5 樓launch401(烏蘭巴托的夜 那麼靜 那麼靜)回複於 2005-08-09 10:02:35 得分 0
按照JAX-RPC,servlet和stateless session bean都可以封裝成webservices伺服器端組件,分別運行在servlet容器和ejb容器中,實際上可以當作是特殊的servlet和ejb。
只不過用soap傳輸,而不是用http傳輸。Top
6 樓jFresH_MaN(十一月的蕭邦-夜曲)回複於 2005-08-09 10:05:43 得分 0
只不過用soap傳輸,而不是用http傳輸。
---------
soap傳輸的底層實現就是http的請求,soap實際上是使用其固定的xml格式封裝了請求資訊罷了Top
7 樓Adamyong(阿永)回複於 2005-08-12 00:31:33 得分
5
基本上比較同意jFresH_MaN的觀點。soap只是封裝訊息,它和傳輸沒有關係。在使用soap時我們要通過傳輸協議完成,當然用的最多的就是http了。在 soap spec 中並不限定你使用什麼傳輸協議。
為了說明servlet和web service的區別,我大致描述一下axis的實現吧。當一個帶有soap訊息的http請求傳輸到axis時,AxisServlet的doPost方法相應該請求。我們的請求往往是http://localhost:8080/axis/services/ServiceName,按照axis的預設的部署方式,通過http://localhost:8080/axis/services定位到AxisServlet,AxisServlet繼承自HttpServlet,然後通過解析ServiceName定位到請求的是哪一個服務,這些都是axis實現好的。部署的服務你可這樣理解:動態綁定到axis上的一些模組。
。然後Axis通過自己的一系列handler解析http帶的soap訊息,當然你可以實現自己的handler。通過解析soap訊息取得調用的是哪一個方法,然後由soap中的訊息值調用該方法,如果方法是Req-Res方式還要構建返回Soap訊息。Top
8 樓layueer(愛傷懷,努力升仙)回複於 2005-08-12 09:23:59 得分 0
學習Top
9 樓dddddy(隨遇而安)回複於 2005-08-12 18:25:05 得分 0
這個貼子該加入精華了。Top
10 樓dianweihu(忘了)回複於 2005-08-26 12:52:23 得分 0
總結一下(請指正):
Servelt與WebService的異同:
請求:
用戶端訪問一個伺服器的url,只需要發送簡單的httprequest即可。
但servlet只能接受一個簡單的http請求;
而WebService是可以發送一個xml作為其請求內容。
傳輸:
servlet使用http協議傳輸資料。
ws使用固定的XML格式封裝成soap訊息,可以使用http作為底層資料轉送,但並不局限於http協議。
返回結果:
servlet返回的是html頁面;
ws返回的可以是複雜物件甚至使用附件或者mutidata的2進位檔案。
部署:
servlet需要遵守j2ee的Web Application規範部署的應用伺服器上,如tomcat,weblogic,websphere;
WebService則需要有WSDL檔案來部署服務,或者使用UDDI註冊。
優勢:
WebService的跨平台特性是servlet不能比的;
而servlet相對來說速度上的優勢也是不可忽視的。
Top
11 樓simon0512(蟲蟲)回複於 2005-08-27 00:13:35 得分 0
學習
Top
12 樓gaoan(流浪花---不遷怒,不二過.)回複於 2005-08-27 00:38:26 得分 0
學習,
對web service 沒經驗...Top
13 樓ytcx_lt_82(仰天長嘯)回複於 2005-09-01 19:49:49 得分 0
頂啊!受益非淺啊!Top
14 樓metaphy(六千尺外的查拉圖斯特拉)回複於 2005-09-05 09:50:55 得分 0
優勢:
WebService的跨平台特性是servlet不能比的;
而servlet相對來說速度上的優勢也是不可忽視的。
------------------------------------------------
不解,這個"跨平台"是什麼意思?
是說用xml 格式的資料的跨平台?
不過不論從哪裡來看,WebService 好像並沒有多麼大的優勢
Top
15 樓kingofhawks(藍鷹)回複於 2005-09-06 11:57:44 得分 0
呵呵,學習一下不知道的東西.Top
16 樓dianweihu(忘了)回複於 2005-09-07 09:17:03 得分 0
跨平台
與具體的開發平台無關
Servlet必須依賴於java平台
而WS在任何平台下都可以做的,只要符合其描述規範就ok了Top
17 樓irvine007(┣━┫Rvine)回複於 2005-09-07 20:56:46 得分 0
頂~~
Top
18 樓sqlink()回複於 2005-09-07 21:36:23 得分
5
servlet除了可以處理web service之外,還能處理標準的HTML。
不過web service作為rich client的通訊手段其效率實在是太低了,不過相容性到非常的好