【注】本文译自:Overview of Resource-Oriented Architectures (ROA) | Developer.com
理解面向资源的架构 (ROA)、其价值以及最佳实际。
面向服务的架构 (Service-Oriented Architecture,SOA) 和面向资源的架构 (Resource-Oriented Architecture,ROA) 是用于实现强壮、可扩大的分布式应用程序架构的架构设计模式。分布式架构由通过定义良好的接口在网络上应用的组件组成。在 ROA 中,这些组件被称为资源,而在 SOA 中,它们被称为服务。本文概述了面向资源的体系结构。
什么是面向资源的架构 (ROA)?
面向资源的架构 (ROA) 是一种架构格调,它扩大了 REST 架构格调,并提供了更宽泛、可扩大、灵便且与传输无关的架构。面向资源的架构 (ROA) 范式建设在资源的概念之上。资源是一个独立的、可辨认的实体,其状态能够被调配一个对立的资源定位符 (URI)。服务代表所申请操作的执行,而资源代表可通过统一的标准化接口进行治理的分布式组件。
面向资源架构的特色之一是与传输无关。因而,必须有特定的机制将面向资源的服务裸露给内部世界。当消费者申请对立资源定位器(Uniform Resource Locator,URL)并指定拜访办法(例如,GET、PUT、POST 和 DELETE)时,该 URL 将转换为绝对的外部 URI。拜访办法被转化为动作。
面向资源的架构仅围绕四个概念建模:
- 资源
- URI
- 表述
- 链接和连通性
以下是面向资源架构的四个属性:
- 可寻址性
- 无状态性
- 连通性
- 对立的接口
面向资源的架构:资源
资源是 ROA 的基石;资源是信息的逻辑示意。例如,学生是数据点的形象汇合,能够用多种形式示意,包含 XHTML、JSON 和 XML。资源名称包含以下内容:
- 资源的类型
- 资源标识符
- 父元素的资源名
- API 服务的名称
资源是 REST 或 RESTful 架构中最重要的信息形象。术语“资源”是指任何可辨认的信息。这些信息能够是文档、计算机、汽车、长期服务(例如“俄亥俄州明天的天气”)、其余资源的汇合、集体、学生等。
每个不可变资源示意都能够通过绝对的对立资源批示符 (URI) 来标识,它可能包含到其余资源以及其余不可变资源的连贯。请留神,一个资源也能够有多个 URI。
每种资源应具备以下特色:
- 是惟一的
- 必须至多有一个表述
- 具备属性,模式能够被拜访并提供上下文
对立资源标识符(URI)
对立资源标识符 (Uniform Resource Identifier,URI) 是蕴含资源名称和地址的字符序列,用于标识逻辑或物理资源。请留神,资源必须具备一个或多个 URI。没有 URI,一条信息不被视为资源,因为它不能被援用或拜访。您能够应用 URI 来标识任何事物,例如事实世界的对象、网页、书籍等。
上面是一个 URI 的例子:语法:: 示例:http://payroll/employee/1234 下表阐明了如何指定资源的绝对 URI:
- 动作
绝对 URI
目标 - Read
/student/3
读取 ID 是 3 的学生记录 - Delete
/student/4
删除 ID 是 4 的学生记录
面向资源架构 ROA 的个性
以下是面向资源的架构的四个根本属性:
可寻址性
可寻址性是面向资源架构的一个基本特征。如果应用程序将其数据集的感兴趣方面公布为服务端点,则能够认为该应用程序是可寻址的。这些服务能够反过来用于解决应用程序的数据。因为 ROA 中的资源应用 URI 公开,因而应用程序应应用 URI 公开其数据。
无状态
无状态是面向资源架构的另一个特色,这意味着该架构中的每个 HTTP 申请都是独立产生的。换句话说,当客户端向服务器申请资源时,客户端必须提供服务器申请胜利所需的所有信息。服务器从不存储来自先前申请的信息,也就是说,服务器上不存储状态信息。如果服务器须要来自较早申请的信息来解决申请,则客户端必须在另一个申请中再次发送该信息。
连通性
在面向资源的架构中,表述是超媒体:蕴含数据和其余资源链接的文档。RESTful Web 服务遵循超媒体作为应用程序状态引擎 (Hypermedia As the Engine Of Application State, HATEOS) 准则。这是数据格式影响应用程序中转换状态的准则。到其余资源的链接嵌入在响应中,但对于雷同的资源,它们可能会依据其以后状态而有所不同。
网络最重要的特色之一是它的互连性。也就是说,互联网上的简直所有信息都通过超链接链接在一起。超链接可用于将互联网上可拜访的任何资源连贯到另一个资源。基于 ROA 构建的应用程序应将其所有资源互相链接,反之亦然。当咱们为资源抉择适合的表述时,咱们能够在应用程序中实现连通性。
对立接口
您应该有一组定义良好的办法来操作应用程序中的资源。例如,HTTP 提供了以下您可能通常须要在任何应用程序中执行的常见操作:
HTTP GET – 获取一个资源
HTTP POST – 创立新资源
HTTP PUT – 批改一个存在的资源
HTTP DELETE – 删除一个存在的资源
HEAD 和 OPTIONS HTTP 办法
上面是您应该理解的另外两个重要的 HTTP 办法:
HTTP HEAD – 用于检索资源的元数据表述
HTTP OPTIONS – 用于查看特定资源反对哪些 HTTP 办法
总结
面向资源的体系结构是无状态的,并以资源为核心。URI 用于标识每个资源。您总是能够在计算机上同时领有同一资源的多个正本。一个资源也能够有多个 URI。