10.1 概述
持久性给Adaptive平台的应用程序和功能簇提供了一种机制,让它们将信息存储在Adaptive 机器的非易失内存。这些数据在启动和点火周期内也是可用的。持久性提供了标准的接口访问非易失内存。
持久性API将存储位置标识符作为来自应用程序的参数,以定位不同的存储位置。
可用的存储位置分为两类
*键值存储
*文件存储
每个应用程序都可以使用多种存储类型的组合。
持久性数据对一个应用程序来说是私有的。没有任何可用的机制使用Persistency在不同的应用程序之间分享数据。此决定是为了防止在通信管理提供的功能下出现第二个通信路径。
持久性为存储数据提供了加密保证敏感数据在存储到物理设备之前都是加密的。
10.2 键值存储
键值存储提供了一种机制能够在一个存储位置存储和获取多个键值。键值存储直接支持下面三种数据类型。
* 在SWS_AdaptivePlatformTypes中定义的数据类型
* 由应用程序中复杂类型流产生的简单字节数组。
* 所有通过“PersistencyKeyValueDatabaseInterface”引用的“dataTypeForSerialization”实现的数据类型,或者在应用程序设计中专门用作该接口的PersistencyDataElements
键值对每个键值数据库是唯一的,这些键值使用Persistency提供的方法由应用程序定义。
对于定义在应用程序设计中的AUTOSAR数据类型增加基于应用程序和平台特定的序列化代码在计划当中。
10.3 文件代理存储
并不是所有与持久性存储相关的数据都是按键值数据库合适的存储机制的方式构造的。
对于这种数据,引进了文件存储的机制。一个文件存储端口允许一个应用程序来访问一个存储位置,并且在应用程序内创建一个或多个访问评估者。这些评估者以字符串的形式被唯一的键值标识。
跟文件系统的对比可以帮助更好的理解这种机制。文件存储端口可以理解为一个文件夹,应用程序可以在这个文件夹中创建多个文件(assessors).
由于文件存储和经典的文件系统系统访问接近,所以API是C++ std::iostream的一个子集,具有类似的行为。
10.4 UCM模块处理持久性数据的用例
在UCM过程中通过Peristency来处理UCM的持久性数据/持久性文件纯粹依赖于持久性配置
通常情况下 ,在CAR ECU 或adaptive机器的整个生命中期中,UCM支持三种主要的用例来处理adaptive 应用程序。
* 在Adaptive机器上安装新的adaptive 应用软件
*在Adaptive机器上更新存在的adaptive 应用软件
*从Adaptive机器上卸载存在的adaptive 应用软件
在这所有的三种场景中,Persistency被UCM用来部署/删除/更新应用程序的持久性数据。Perer
Persistency 支持下面提到的场景
* Persistency 能够在Adaptive 应用安装时将持久性数据部署到应用程序设计人员定义的键值数据库或文件代理中
* Persistency 能够在Adaptive 应用安装时将持久性数据部署到集成人员更改的键值数据库或文件代理中
* Persistency 能够在Adaptive 应用安装时将持久性数据部署到集成人员定义的键值数据库或文件代理中
*安装新版本应用程序的时候,Persistency 能够根据键值或文件代理配置的更新策略将数据覆盖或保留到键值数据库或文件代理中。
* Peristency能够在卸载应用程序的时候删除键值数据库或文件代理中的持久性数据。
通常,Persistency层是在应用程序设计和部署的期间配置的。Persistency应该能够使用部署阶段配置来覆盖应用程序设计配置。如果部署配置信息丢失,应用程序设计的配置信息会被认为是部署永久数据。
Persistency会在集成到键值数据数据库或文件代理之前检查新安装和更新的持久数据。