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