我认为要了解什么是完全 RESTful 服务,您必须了解 RESTful 服务和标准 Web 服务之间的区别。 Oracle 的 JEE6 教程中很好地解释了这一点:
NonRESTful WebServices(在 Java 中为 JAX-WS):大型 Web 服务使用 XML 消息
遵循简单对象访问协议 (SOAP) 标准,这是一种定义
消息架构和消息格式。这样的系统通常包含一个机器可读的
服务提供的操作的描述,写在 Web 服务描述中
语言 (WSDL),一种用于在语法上定义接口的 XML 语言。
SOAP消息格式和WSDL接口定义语言获得了
广泛采用。许多开发工具,例如 NetBeans IDE,可以减少
开发 Web 服务应用程序的复杂性。
基于 SOAP 的设计必须包含以下元素。
■ 必须建立正式合同来描述 Web 服务提供的接口。
WSDL 可用于描述合约的细节,其中可能包括消息、
操作、绑定和 Web 服务的位置。您还可以处理 SOAP
JAX-WS 服务中的消息而不发布 WSDL。
■ 架构必须解决复杂的非功能性需求。许多网络服务
规范解决了这些要求并为它们建立了一个通用词汇表。
示例包括事务、安全、寻址、信任、协调等。
■ 架构需要处理异步处理和调用。在这种情况下,
标准提供的基础设施,例如 Web 服务可靠消息传递
(WSRM) 和 API,例如 JAX-WS,以及它们的客户端异步调用
支持,可以开箱即用。
RESTful Web 服务(在 Java 中作为 JAX-RS)
在 Java EE 6 中,JAX-RS 提供了 Representational State Transfer (RESTful) 的功能
网页服务。 REST 非常适合基本的即席集成场景。 RESTful Web 服务,
通常比基于 SOAP 的服务更好地与 HTTP 集成,不需要 XML 消息
或 WSDL 服务-API 定义。
Project Jersey 是 JAX-RS 规范的生产就绪参考实现。
Jersey 实现了对 JAX-RS 规范中定义的注解的支持,使其
开发人员可以轻松地使用 Java 和 Java 虚拟机构建 RESTful Web 服务
(JVM)。
Web 服务的类型
因为 RESTful Web 服务使用了现有的众所周知的 W3C 和 Internet 工程任务
强制 (IETF) 标准(HTTP、XML、URI、MIME)并拥有轻量级基础架构,
允许使用最少的工具构建服务,开发 RESTful Web 服务成本低
因此采用的门槛非常低。您可以使用开发工具,例如 NetBeans
IDE 以进一步降低开发 RESTful Web 服务的复杂性。
当满足以下条件时,RESTful 设计可能是合适的。
■ Web 服务是完全无状态的。一个很好的测试是考虑交互是否
可以在服务器重新启动后继续存在。
■ 可以利用缓存基础架构来提高性能。如果 Web 服务的数据
return 不是动态生成的,可以缓存,web 的缓存基础设施
服务器和其他中介本身提供的可以用来改进
表现。但是,开发人员必须小心,因为此类缓存仅限于
大多数服务器的 HTTP GET 方法。
■ 服务生产者和服务消费者相互理解上下文和
传递的内容。因为没有正式的方式来描述 Web 服务
接口,双方必须就描述数据的模式达成一致
交换和有意义地处理它的方法。在现实世界中,大多数商业
将服务公开为 RESTful 实现的应用程序也分发所谓的
在流行编程中向开发人员描述接口的增值工具包
语言。
■ 带宽尤为重要,需要加以限制。 REST 特别适用于
有限配置的设备,例如 PDA 和移动电话,其标头开销
并且必须限制 XML 有效负载上的附加 SOAP 元素层。
■ Web 服务交付或聚合到现有网站可以通过以下方式轻松启用
RESTful 风格。开发者可以使用 JAX-RS 和 Asynchronous 等技术
JavaScript with XML (AJAX) 和 Direct Web Remoting (DWR) 等工具包以供使用
Web 应用程序中的服务。与其从头开始,服务可以
使用 XML 公开并由 HTML 页面使用,而无需显着重构
现有的网站架构。现有的开发人员将更有效率,因为他们
添加他们已经熟悉的东西,而不必从头开始
采用新技术。
决定使用哪种类型的 Web 服务
基本上,您会希望使用 RESTful Web 服务在 Web 上进行集成并使用 big
具有先进质量的企业应用程序集成场景中的 Web 服务
服务 (QoS) 要求。
■ WebServices:解决企业中常见的高级 QoS 要求
计算。 [..]
■ RESTfull:使编写应用 REST 样式的部分或全部约束的 Web 应用程序更容易,以在应用程序中引入所需的属性,例如松散耦合
(在不破坏现有客户端的情况下发展服务器更容易),可扩展性(从小处着手
增长)和架构简单性(使用现成的组件,例如代理或 HTTP
路由器)。您会选择为您的 Web 应用程序使用 JAX-RS,因为它更容易
多种类型的客户端使用 RESTful Web 服务,同时使服务器端能够
发展和规模化。客户端可以选择消费服务的部分或全部方面并混搭
它与其他基于 Web 的服务相结合。