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