Servlet与WebService关系(整理自CSDN)

http://topic.csdn.net/t/20050808/15/4196029.html
其实从实现的效果上,它们是很相似的  
   
  相同点:  
  客户端访问一个服务器的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相对来说速度上的优势也是不可忽视的。  


基本上比较同意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消息。

总结一下(请指正):  
   
  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相对来说速度上的优势也是不可忽视的。   
   
posted @ 2007-11-07 16:42  jambol  阅读(1367)  评论(0编辑  收藏  举报