servlet webservice 比较

来源:互联网 发布:数学 知乎 编辑:程序博客网 时间:2024/06/11 09:25
首先比较下servlet和webservice下

请求:   
servlet:提供了请求/响应模式,是JAVA的一种规范,只能使用于java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客户端访问一个服务器的url,只需要发送简单的httprequest即可。 规定了四个范围:pageContext、request、session、application。一定依赖于各种SERVLET容器,但servlet只能接受一个简单的http请求;   
 WebService最早是微软提出了一种以XML为载体网络信息传输的规范,现在几乎所有的语言与平台都支持,带有状态机制,不依赖于SERVLET容器,可以发送一个xml作为其请求内容,WebService通常是基于http的远程方法调用(RMI),号称是可以反回远程对象, 一般来说客户段可以象调用本地方法一样调用WebService的方法。WebService是在DCOM   CORBA等分布式技术之后发展起来的。WebService有一个国际通用的标准SOAP。具体规范发布在   http://www.w3.org/TR/SOAP/ 


传输:   
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等协议因此可在异构系统间传递,并且可以穿过防火墙,可在公网上远程调用。


SOAP:

SOAP是为了在Internet   环境下,实现系统是松散耦合的、跨平台的,与语言无关的,与特定接口无关的,而且要提供对Web   应用程序的可靠访问。  
   
几乎所有的开发工具都可以开发WebService系统,包括Java,C#,甚至基于VCL架构的Delphi。而且   所开发出来的WebService系统,可以方便的被各种客户端调用,包括,浏览器,W32应用程序,还有Java   App。 
  
可以这么说,开发一个WebService系统,把它放到互联网上,生成一个WebService描述文件.wsdl(非常容易),全世界的任何人,使用几乎任何开发工具,引用了这个wsdl,就像引用了一个动态库的头文件一样,方便的调用你的WebService接口,就像调用本地的方法一样。

SOAP=RPC+HTTP+XML

浅谈SOAP: http://www.ibm.com/developerworks/cn/xml/x-sisoap/


0 0
原创粉丝点击