AUTOSAR_EXP_PlatformDesign - 08 RESTful Communication
【translated by sky8336, 2019.06.07, Shanghai】
8 RESTful Communication
8.1 Overview
通信栈ara::com和ara::rest都可以在自适应应用程序之间建立通信路径。ara: rest是一个框架,用于在这样的API之上构建RESTful API以及特定的服务。它没有定义一个特定的开箱即用API来直接构造RESTful服务。这个框架是模块化的,它允许开发人员直接访问RESTful消息事务中涉及的不同层。相比之下,ara::com的重点是提供一个传统的函数调用接口,并隐藏事务的所有细节。另一个重要的区别是ara::rest确保了与非autosar对等体的互操作性。例如,ara::rest服务可以与移动HTTP/JSON客户机通信,反之亦然。
8.2 Architecture
rest的体系结构基于模块化设计,它支持API级别的开发人员和服务设计。下图说明了它的总体设计。它描述了服务应用程序如何在ara::rest中组成。
ara::rest 的通用REST层只提供三个基本抽象:树形结构的消息有效负载(对象图)、URI和请求方法(像HTTP中知名的GET或POST)。通过这些基本的原语,可以组成特定于领域的RESTful API,它定义了通过对象图、URI和方法进行交互的具体高级协议。它的目的是定义访问特定领域的数据模型的规则,并为应用程序提供抽象(c++) API。当不需要进一步抽象时,自适应应用程序也可以直接使用ara::rest,而不是使用这个Domain API。
8.3 Components
ara: rest由以下组件组成。
对象图(Object Graph)是独立于协议绑定的树状数据结构,是所有ara::rest通信的基础。它的目的是映射到协议格式如JSON和C结构体。这最大化了与non-ARA通信对等点和经典AUTOSAR的兼容性。对象图在消息中传输,这些消息完全抽象自具体的底层协议绑定。如果需要,它们仍然允许用户访问特定于协议的细节。
消息将请求/应答通信周期的整个上下文封装在ara::rest的异步编程模型中。
路由概念提供了将请求(包括请求方法和URI)映射到用户定义的处理函数的方法。路由是将抽象从通用REST提升到特定类型RESTful API的基石。
Uri是一种与RFC兼容的(RFC-compliant)且效率很高的通用URL表示。
ara: rest为服务器和客户机通信提供了所谓的(网络)端点,它们都提供了相当程度的资源控制。两者都是为了在单核和多核系统上提供快速和高效的通信能力而设计的。
整个框架设计严格面向最大限度的资源控制。可以严格控制所有计算和分配,并根据应用程序(部署)的精确需求进行定制。
---------------------
【end-2019.06.08】