天天看點

servlet與webservice的差別[轉]

協定不同:servlet 是簡單http請求 webservice可以了解為http+xml協定      
最近項目中有提供或者調用别的接口,在糾結中到底是用servlet還是用webservice,是以上網檢視了下他們以及RMI之間的差別,友善加深了解。

  首先比較下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相對來說速度上的優勢也是不可忽視的。

接下來在看看RMI和webservice中的
 
  rmi的用戶端和服務端都必須是java,webservice沒有這個限制
  webservice是在http協定上傳遞xml文本檔案,與語言和平台無關
  rmi是在tcp協定上傳遞可序列化的java對象,隻能用在java虛拟機上,綁定語言
  RMI是EJB遠端調用的基礎,僅用RMI技術就可以實作遠端調用,使用EJB是為了實作元件,事物,資源池,叢集等功能。
  WebService是通過XML來傳輸資料,可用http等協定是以可在異構系統間傳遞,并且可以穿過防火牆,可在公網上遠端調用