【问题标题】:What does RESTful web applications mean? [closed]RESTful Web 应用程序是什么意思? [关闭]
【发布时间】:2012-06-20 09:36:51
【问题描述】:

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

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

【问题讨论】:

  • 这可能属于programmers.stackexchange.com,甚至属于Google
  • 广告。 1 不一定。这两种方式是 Big Web Services 和 RESTful Web Services。它比只使用或不使用 SOAP 要复杂一些。可以按照 REST 使用 SOAP。广告。 3 阅读 Roy Fielding 的论文以找出答案。我还推荐阅读 ROA(面向资源的架构),它比 REST 本身的概念更具体一些。它也是最常用的 RESTful 设计。它经常与 REST 本身混淆。
  • 一个 HTTP 服务的网站也不是针对人类的,而是首先针对 HTTP 浏览器 ;) 所以 WWW 服务于超文本文档一个 web 服务。

标签: java php web-services rest


【解决方案1】:
  1. 正确
  2. W3C 将“Web service”定义为“旨在支持网络上可互操作的机器对机器交互的软件系统”。
  3. 完全 RESTful 服务是一种遵循 all 或 Roy Fielding 的论文 Architectural Styles and the Design of Network-based Software Architectures 中列出的架构约束的服务。读起来很长,有很多解释。一个好的开始是熟悉Richardson Maturity Model注意:大多数声称是 RESTful 的 Web 服务在该模型中仅位于 level 2

【讨论】:

    【解决方案2】:

    我认为要了解什么是完全 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 的服务相结合。

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 2014-11-17
      相关资源
      最近更新 更多