9

Web 服务是其他程序可以通过 Web (Http) 访问的功能。澄清一点,当您在 PHP 中创建一个输出 HTML 的网站时,它的目标是浏览器,并且通过扩展,人类正在浏览器中阅读页面。Web 服务不是针对人类,而是针对其他程序。

  1. SOAP 和 REST 是创建 WebServices 的两种方式。如果我错了,请纠正我?
  2. 我可以通过哪些其他方式创建 WebService?
  3. 完全 RESTful Web 应用程序是什么意思?
4

2 回答 2

4
  1. 正确的
  2. W3C 将“ Web 服务”定义为“旨在支持网络上可互操作的机器对机器交互的软件系统”。
  3. 完全 RESTful 服务是遵循Roy Fielding 的论文《架构风格和基于网络的软件架构设计》中列出的所有架构约束的服务。读起来很长,有很多解释。熟悉理查森成熟度模型是一个好的开始。注意:大多数声称是 RESTful 的 Web 服务在该模型中仅处于第 2 级。
于 2012-06-20T10:35:43.933 回答
0

我认为要了解什么是完全 RESTful 服务,您必须了解 RESTful 服务和标准 Web 服务之间的区别。Oracle 在 JEE6 教程中很好地解释了这一点:

NonRESTful WebServices(在 Java 中为 JAX-WS):大型 Web 服务使用遵循简单对象访问协议 (SOAP) 标准的 XML 消息,这是一种定义消息架构和消息格式的 XML 语言。这样的系统通常包含由服务提供的操作的机器可读描述,用 Web 服务描述语言 (WSDL) 编写,WSDL 是一种用于在语法上定义接口的 XML 语言。SOAP 消息格式和 WSDL 接口定义语言已得到广泛采用。许多开发工具(例如 NetBeans IDE)可以降低开发 Web 服务应用程序的复杂性。基于 SOAP 的设计必须包括以下元素。

■ 必须建立正式合同来描述 Web 服务提供的接口。WSDL 可用于描述合同的细节,其中可能包括消息、操作、绑定和 Web 服务的位置。您还可以在 JAX-WS 服务中处理 SOAP 消息,而无需发布 WSDL。

■ 架构必须解决复杂的非功能性需求。许多 Web 服务规范解决了这些要求并为它们建立了一个通用词汇表。示例包括事务、安全、寻址、信任、协调等。

■ 架构需要处理异步处理和调用。在这种情况下,标准提供的基础设施(如 Web 服务可靠消息传递 (WSRM))和 API(如 JAX-WS)及其客户端异步调用支持可以开箱即用。

RESTful Web 服务(在 Java 中作为 JAX-RS) 在 Java EE 6 中,JAX-RS 为 Representational State Transfer (RESTful) Web 服务提供了功能。REST 非常适合基本的即席集成场景。RESTful Web 服务通常比基于 SOAP 的服务更好地与 HTTP 集成,不需要 XML 消息或 WSDL 服务-API 定义。Project Jersey 是 JAX-RS 规范的生产就绪参考实现。Jersey 实现了对 JAX-RS 规范中定义的注释的支持,使开发人员可以轻松地使用 Java 和 Java 虚拟机 (JVM) 构建 RESTful Web 服务。

Web 服务的类型 因为 RESTful Web 服务使用现有的著名 W3C 和 Internet 工程任务组 (IETF) 标准(HTTP、XML、URI、MIME),并且具有允许使用最少工具构建服务的轻量级基础架构,因此开发 RESTful Web服务价格低廉,因此采用的门槛非常低。您可以使用 NetBeans IDE 等开发工具来进一步降低开发 RESTful Web 服务的复杂性。当满足以下条件时,RESTful 设计可能是合适的。

■ Web 服务是完全无状态的。一个很好的测试是考虑交互是否可以在服务器重新启动后继续存在。

■ 可以利用缓存基础架构来提高性能。如果 Web 服务返回的数据不是动态生成的并且可以缓存,则可以利用 Web 服务器和其他中介固有的缓存基础结构来提高性能。但是,开发人员必须小心,因为此类缓存仅限于大多数服务器的 HTTP GET 方法。

■ 服务生产者和服务消费者对传递的上下文和内容有相互理解。因为没有正式的方式来描述 Web 服务接口,所以双方必须就描述正在交换的数据的模式以及有意义地处理它的方式达成一致。在现实世界中,大多数将服务公开为 RESTful 实现的商业应用程序还分发所谓的增值工具包,这些工具包用流行的编程语言向开发人员描述接口。

■ 带宽特别重要,需要加以限制。REST 对于配置有限的设备特别有用,例如 PDA 和移动电话,必须限制 XML 有效负载上的标头和附加层 SOAP 元素的开销。

■ 使用 RESTful 风格可以轻松实现 Web 服务交付或聚合到现有网站。开发人员可以使用诸如 JAX-RS 和带 XML 的异步 JavaScript (AJAX) 之类的技术以及诸如 Direct Web Remoting (DWR) 之类的工具包来使用其 Web 应用程序中的服务。无需从头开始,服务可以使用 XML 公开并由 HTML 页面使用,而无需显着重构现有的网站架构。现有的开发人员将更有效率,因为他们正在添加他们已经熟悉的东西,而不是必须从头开始使用新技术。

决定使用哪种类型的 Web 服务

基本上,您会希望使用 RESTful Web 服务进行 Web 集成,并在具有高级服务质量 (QoS) 要求的企业应用程序集成场景中使用大型 Web 服务。

■ WebServices:解决企业计算中常见的高级QoS 要求。[..]

■ RESTfull:使编写应用 REST 样式的部分或全部约束以在应用程序中引入所需属性的 Web 应用程序变得更容易,例如松散耦合(在不破坏现有客户端的情况下更容易发展服务器)、可伸缩性(从小处着手)和增长)和架构简单性(使用现成的组件,例如代理或 HTTP 路由器)。您会选择将 JAX-RS 用于您的 Web 应用程序,因为许多类型的客户端更容易使用 RESTful Web 服务,同时使服务器端能够发展和扩展。客户可以选择使用服务的部分或全部方面,并将其与其他基于 Web 的服务混合。

于 2012-06-20T23:37:23.523 回答