首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Rails Active Resource 简化 web 应用程序之间的互操作性(1)

使用 Rails Active Resource 简化 web 应用程序之间的互操作性(1)

简介当今的应用程序不仅需要和基于浏览器的客户端互操作,还需要和其他应用程序互操作。为实现互操作性,web 应用程序通常提供一个 web 服务 API。web 服务 API 通过一个网络(比如 Internet)提供对应用程序的远程访问。直到最近,web 服务 API 还使用重型、复杂的基于 SOAP 的 web 服务集成,这种 web 服务,不仅没有什么优点,而且还需要很长时间才能实现。带有基于 Representational State Transfer (REST) 服务的 Rails 框架有一种更简单、更快捷的方法通过 Active Resource 来实现和使用 web 服务。
在 Rails 实现了 RESTful 以后,现在只需通过一个 Rails 动作就能提供一个特定资源的不同内容类型(或者表示)。这种方法有以下好处:
  • 一个资源的各种表示状态。
  • 对不基于浏览器的 HTML 客户端的附加支持在 Controller 视图中得到了简化。
  • 应用程序之间以及与新客户端之间的互操作性。
在本文中,您将了解 REST、SOAP、Rails Active Resource,以及如何提高多个应用程序之间的互操作性。
Ruby on RailsRuby on Rails(也称为 Rails 或 RoR)是一个用 Ruby 语言编写的开源 web 应用程序框架。Ruby on Rails 旨在帮助开发人员更轻松快捷地开发和部署 web 应用程序,与其他语言和框架相比,Rails 框架进行了几个假设。其目的是使用敏捷开发的方法,实现快速开发。
Rails 框架合并了以下几个包:
  • Active Record:一个对象关系映射层,用于数据库相关访问和功能;
  • Action Pack:一个控制器和视图功能管理器;
  • Action Mailer:一个电子邮件处理器;
  • Active Support
  • Active Resource:提供 web 服务(即 Action Web 服务)。
Web 服务Web 服务是使用开放协议通信的应用程序组件,它们可以被其他应用程序使用。web 服务是简单 APIs ,可以使用 HTML 进行访问,并在承载请求服务的远程系统上执行。web 服务是不同平台上、以不同语言编写、不同系统上的各种应用程序的关键集成点。
REST 不是一个协议;它是利用 World Wide Web 的技术和协议的大型联网软件的一种架构风格。REST 描述如何定义和处理分布式数据对象(或资源),强调简单的信息交换和可伸缩性。REST 架构描述该该架构上应用的 6 个约束。
另一方面,SOAP 是一个协议规范,用于在计算机网络中交换 web 服务的实现中的结构化信息。它依赖 XML 作为其消息格式,通常依赖其他应用程序层协议(RPC 和 HTTP)进行消息协商和传输。SOAP 可以形成 web 服务协议堆栈的基础层,提供用于在其上构建 web 服务的基础消息传递框架。
REST 与 SOAP下表展示了 REST 和 SOAP 之间的一些区别。
RESTSOAP不是协议是协议是创建 web 服务的方法的发展趋势旧方法;主要应用程序已使用 SOAP 来构建与其他应用程序的通信和互操作性。架构:关键资源已确定;它们可能是实体、集合或者其他似乎值得拥有自己的 URI 的对象。标准方法(HTTP 动词)已映射到特定于资源的语义。所有资源都实现相同的统一接口。内容类型的维度支持一个资源的不同表示(例如,XML、HTML、以及纯文本),并允许链接资源表示中的资源。架构:针对消息格式、消息交换模式(MEP)、底层传输协议绑定、消息处理模型以及协议可扩展性的几个规范层。主要用于企业应用程序集成各种类型的应用程序。另一个趋势是集成旧系统。使用 URI 这个非常知名且广泛使用的接口来编写 web 服务的方法系统的关键。任何拥有 HTTP 支持的客户端和服务器应用程序都能使用一个 HTTP GET 命令来轻松调用服务。根据脚本编写的方式,生成的 HTTP 响应可能非常简单,比如只包含几个标准头部和一个文本字符串,该字符串包含给定符号的当前价格。后者,它可能是一个 XML 文档。与基于 SOAP 的服务相比,这个接口方法拥有巨大的优势。
提供相对较强的类型化能力,因为它拥有一组固定的支持数据类型。SOAP 保证,返回值将以一个特定平台中的对应原生类型直接可用。通过基于 HTTP 的 API,返回值需要从 XML 反序列化,然后再设置类型。
请求和响应可以比较短。每个请求和响应都需要一个 XML 包装器。一旦名称空间和类型被声明,SOAP 中的一个 4 或 5 位股票报价需要的类型数可能是 REST 中的相同响应的 10 多倍。 基于 HTTP 的 RESTful API 可以通过简单的 GET 请求来使用。中间代理服务器和反向代理能够轻松缓存它们的响应。 通过坚持简单的语义规模,REST 能够利用客户端和服务器之间的所有缓存级别。
请求使用 POST 且需要创建一个复杂的 XML 请求,这使得响应缓存难以实现。
REST 依赖一个单一的应用程序协议(HTTP)、几个 URI、以及几种通过 XML 标准化的数据格式。它采用成熟的 HTTP 方法(比如 GET 和 POST)来指挥应用程序。REST 开发人员使用 URI 来创建一个公共基础,以便应用程序使用 HTTP 和 XML 来共享数据,而不是为应用程序创建一种机器可读的标准方法来发现和使用远程系统上的应用程序组件(这是 SOAP 用于 web 服务的方法)。REST 开发人员使用 XML 文档而不是应用程序方法调用来告诉分布式程序如何相互使用数据。
REST 支持者指出,使用 SOAP 协议直接访问远程程序的功能必定会遇到 DCOM 和 Common Object Request Broker Architecture 等之前分布式计算架构所遇到的互操作性问题。
返回列表