最近項目中有提供或者調用別的接口,在糾結中究竟是用servlet仍是用webservice,因此上網查看了下他們以及RMI之間的區別,方便加深瞭解。html
首先比較下servlet和webservice下
請求:
servlet:提供了請求/響應模式,是JAVA的一種規範,只能使用於java上,用來替代早期使用的難懂的CGI,是一種無狀態的請求響應,客 戶端訪問一個服務器的url,只須要發送簡單的httprequest便可。 規定了四個範圍:pageContext、request、session、application。必定依賴於各類SERVLET容器,但 servlet只能接受一個簡單的http請求;
WebService最先是微軟提出了一種以XML爲載體網絡信息傳輸的規範,如今幾乎全部的語言與平臺都支持,帶有狀態機制,不依賴於 SERVLET容器,能夠發送一個xml做爲其請求內容,WebService一般是基於http的遠程方法調用(RMI),號稱是能夠反回遠程對象, 通常來講客戶段能夠象調用本地方法同樣調用WebService的方法。
傳輸:
servlet使用http協議傳輸數據,若是你用Servlet返回XML,那個XML的描述框架就是你定的,必須告知使用者具體的說明,沒有統一標準。
webservice使用固定的XML格式封裝成soap消息,可使用http做爲底層數據傳輸,但並不侷限於http協議,方法返回消息是有標準的。
返回結果:
servlet返回的是html頁面;
webservice返回的能夠是複雜對象甚至使用附件或者mutidata的二進制文件。
部署:
servlet須要遵照j2ee的Web Application規範部署的應用服務器上,如tomcat,weblogic,websphere;
WebService則須要有WSDL文件來部署服務,或者使用UDDI註冊。
優點:
WebService的跨平臺特性是servlet不能比的,能夠被各類語言調用;
servlet相對來講速度上的優點也是不可忽視的。java
接下來在看看RMI和webservice中的
rmi的客戶端和服務端都必須是java,webservice沒有這個限制
webservice是在http協議上傳遞xml文本文件,與語言和平臺無關
rmi是在tcp協議上傳遞可序列化的java對象,只能用在java虛擬機上,綁定語言
RMI是EJB遠程調用的基礎,僅用RMI技術就能夠實現遠程調用,使用EJB是爲了實現組件,事物,資源池,集羣等功能。
WebService是經過XML來傳輸數據,可用http等協議所以可在異構系統間傳遞,而且能夠穿過防火牆,可在公網上遠程調用web