webservice和rest,webservice和restful区别

http://www.itjxue.com  2023-01-17 13:02  来源:未知  点击次数: 

rest具体是怎么实现webservice的

万维网联盟指出,REST是一个如何构建Web服务的模型。REST Web是WWW(基于HTTP)的子集,其中代理提供统一的接口语义,本质上是创建,检索,更新和删除,而不是任意或特定于应用程序的接口,并且仅通过交换表示来操纵资源。那么,现在我们知道REST是什么了,作者将简要列出Roy Fielding在其论文的第五章中提到的所有约束:

客户端-服务器:以这样的方式实施服务:将用户界面关注点(客户端获得可移植性)与数据存储关注点(服务器获得可伸缩性)分离开来。

无状态:在客户端和服务器之间实现通信时,服务器在处理请求时永远不会利用储存在服务器上下文中的任何信息,而与会话相关的所有信息都存储在客户端中。

缓存:当可以(隐式或显式)缓存请求的响应时,客户端应获取缓存的响应。

统一接口:所有REST服务都应依赖组件之间相同的统一设计。接口应与提供的服务解耦。

分层系统:客户端永远不知道它们是直接连接到服务器还是连接到某些中间服务器。例如,请求可以通过代理,该代理具有负载平衡或共享缓存的功能。

webservice和servlet的区别

最近项目中有提供或者调用别的接口,在纠结中到底是用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等协议因此可在异构系统间传递,并且可以穿过防火墙,可在公网上远程调用

webservice和restful的区别

restful是一种架构风格,其核心是面向资源;而webService底层SOAP协议,主要核心是面向活动。

SOAP:简单对象访问协议,很轻量,同时作为应用协议可以基于多种传输协议来传递消息(Http,SMTP等)。

客户端和服务器端的通讯方式

REST 与代理服务器 (Proxy Servers)

一般代理服务器的实现根据 (URI, HTTP Method) 两元组来决定 HTTP 请求的安全合法性。

当发现类似于({username},DELETE)这样的请求时,予以拒绝。

对于 SOAP,如果我们想借助于既有的代理服务器进行安全控制.

REST 与缓存服务器 (Cache Server)

使用 HTTP 协议的 SOAP,由于其设计原则上并不像 REST 那样强调与 Web 的工作方式相一致,所以,基于 SOAP 应用很难充分发挥 HTTP 本身的缓存能力,图 7. SOAP 与缓存服务器 (Cache Server)

总结:

REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。而SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。所以我觉得纯粹说什么设计模式将会占据主导地位没有什么意义,关键还是看应用场景。

成熟度

SOAP虽然发展到现在已经脱离了初衷,但是对于异构环境服务发布和调用,以及厂商的支持都已经达到了较为成熟的情况。不同平台,开发语言之间通过SOAP来交互的web service都能够较好的互通。

REST API 和WebService有哪些不同

WebService是一个相对比较大的概念,基于WEB来提供服务都可以叫WebService,早期的SOAP和现在比较流行的REST API都是WebService的具体实现方式。 所以你这个问题问得不是很好,这两个概念不是同一级别的,没法对比。REST API 和WebService有哪些不同

webservice,soap,rest,wsdl,cxf等的关系是什么?

webservice是一种标准,他可以通过soap或rest的方式来实现。

其中SOAP是基于xml的交互,而rest是基于http协议的交互。

wsdl是webservice的描述语言,描述服务是怎么回事,怎么调用。

cxf是rest实现webservice的Apache框架,是对rest进行了封装

REST API 和WebService有哪些不同?

从基本原理层次上说,REST 样式和 SOAP 样式 Web Service的区别取决于应用程序是面向资源的还是面向活动的。例如,在传统的WebService中,一个获得天气预报的webservice会暴露一个WebMethod:string GetCityWether(string city)。而RESTful WebService暴露的不是方法,而是对象(资源),通过Http GET, PUT, POST 或者 DELETE来对请求的资源进行操作。在 REST 的定义中,一个 Web Service总是使用固定的 URI 向外部世界呈现(或者说暴露)一个资源。可以说这是一种全新的思维模式:使用唯一资源定位地址 URI,加上 HTTP 请求方法从而达到对一个发布于互联网资源的唯一描述和操作。

所以我理解为rest架构定义的webservice实际上定义了一个借口的规范。

REST其实并不是什么协议也不是什么标准,而是将Http协议的设计初衷作了诠释,在Http协议被广泛利用的今天,越来越多的是将其作为传输协议,而非原先设计者所考虑的应用协议。

REST的思想归结以下有如下几个关键点:

1.面向资源的接口设计

所有的接口设计都是针对资源来设计的,也就很类似于我们的面向对象和面向过程的设计区别,只不过现在将网络上的操作实体都作为资源来看待,同时URI的设计也是体现了对于资源的定位设计。后面会提到有一些网站的API设计说是REST设计,其实是RPC-REST的混合体,并非是REST的思想。

2.抽象操作为基础的CRUD

这点很简单,Http中的get,put, post,delete分别对应了read,update,create,delete四种操作,如果仅仅是作为对于资源的操作,抽象成为这四种已经足够了,但是对于现在的一些复杂的业务服务接口设计,可能这样的抽象未必能够满足。其实这也在后面的几个网站的API设计中暴露了这样的问题,如果要完全按照REST的思想来设计,那么适用的环境将会有限制,而非放之四海皆准的。

3.Http是应用协议而非传输协议

这点在后面各大网站的API分析中有很明显的体现,其实有些网站已经走到了SOAP的老路上,说是REST的理念设计,其实是作了一套私有的SOAP协议,因此称之为REST风格的自定义SOAP协议。

4.无状态,自包含

这点其实不仅仅是对于REST来说的,作为接口设计都需要能够做到这点,也是作为可扩展和高效性的最基本的保证,就算是使用SOAP的WebService也是一样。

(责任编辑:IT教学网)

更多

相关导航代码文章

推荐导航代码文章