Adaptive AUTOSAR 学习笔记 12 - 通信管理
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf
缩写
- CM:Communication Management
 - SOME/IP:Scalable service-Oriented MiddlewarE over IP
 - DDS:Data Distribution Service
 - IPC:Inter-Process Communication
 - PDU:Protocol Data Unit
 - SOA:Service Oriented Architecture
 - AP:AUTOSAR Adaptive Platform
 
7 通信管理
7.1 概述
CM 负责分布式、实时、嵌入式环境下的应用间通信。CM 从实现中抽象出一套发现、连接通信对象的机制。这样应用开发者就能专注于应用软件本身的业务逻辑。
7.2 面向服务通信
Service 即提供给应用的、基础软件之外的功能。CM 提供了 Service 消费者/提供者的机制,支持机器内和跨机器通信。
服务由事件Event、方法Methods、字段Fields的组合构成。通信各方的通信路径可以在设计、启动或者运行时建立。Service Registry 是 CM 软件中的一个重要组件,起到中间人的作用。

每个提供服务的应用向 Service Registry 注册服务。服务的客户端应用先向 Service Registry 查找(find)服务,这一过程叫做服务发现(Service Discovery)。
7.3 语言绑定和网络绑定
CM 标准化了:
- 服务如何呈现给应用实现者(上层,语言绑定)
 - 服务数据如何在网络中表示(下层,网络绑定)
 
以上两点保证了源码的可移植性和已编译的服务在不同平台实现的兼容性。
语言绑定定义了:如何将服务的 methods,events,fields 翻译成目标语言中可直接访问的标识符。性能和类型安全(只要目标语言支持)是首要目标。因此,语言绑定一般实现为以服务接口定义为输入的代码生成器。
类型安全:编译时验证类型

网络绑定定义了:服务数据如何序列化以及如何绑定到特定网络。可以实现为基于 CM 的配置(AUTOSAR 元模型接口定义)实现:或通过解释(生成的)服务 recipe,或直接生成序列化代码。
目前 CM 支持 SOME/IP,DDS,IPC 以及 Signal PDU(基于信号的网络绑定)。
本地 Service Registry 也是网络绑定的一部分。
注意:语言绑定和网络绑定之间的接口应当视为 CM 内部的 private 接口。尽管如此,平台供应商应当尽量为其软件定义独立的接口,以便在平台内实现除 C++ 之外的语言绑定。
7.4 C++ 语言绑定 Proxies 和 Skeletons 代码生成
C++ 语言绑定的上层接口提供了(定义在AUTOSAR 元模型接口描述中的)服务的面向对象映射。生成器是部署工具的一部分,用于为 CM 生成包含各个 Service 的 fields、events 和 methods 的类型安全表示的 C++ 类。
在服务实现侧,生成的类叫 Service Provider Skeletons;在客户端侧,叫 Service Requester Proxies。对于服务方法,服务请求代理提供同步(调用者阻塞,直到 Server 返回结果)和异步(被调函数立即返回)调用机制。调用者可以并行执行其他任务,当服务端返回结果时,通过 Core Type 的 ara::core::future 接收结果。平台可以配置生成器生成 mockup 类,当服务尚未开发完成时,便于开发客户端功能,也可用于客户端的单元测试。
客户端可以直接使用代理类,而 Service Provider Skeletons 只是抽象基类,服务实现需要继承自生成的抽象基类,实现相应的功能。
ara::com 接口可以为 proxies 和 skeletons 提供安全相关、受 E2E 保护的通信。这些接口旨在确保与应用程序的兼容性,无论是否开启 E2E 保护。
7.5 静态、动态配置
通信路径的配置可能发生在设计、启动或者运行时。因此配置可以是静态或者动态的:
- 全静态配置
完全不需要服务发现,服务端知道所有的客户端,客户端也知道服务端。 - 客户应用无需发现
客户端知道服务端,但服务端不知道客户端。应用中唯一的动态通信方式就是事件订阅。 - 全服务发现
配置时不知道通信路径。服务发现 API 允许应用代码在运行时选择服务实例。 
7.6 服务合同版本控制
SOA(Service Oriented Architecture)环境下,服务的客户端和提供端依赖覆盖服务接口和行为的合同。服务开发过程中,服务的接口和行为会改变。因此,引入服务合同版本控制来区分不同版本的服务。AP 支持设计、部署阶段的服务合同版本控制。不仅如此,客户端的服务发现可配置为向后兼容,即如果服务版本向后兼容客户端请求的服务版本,客户端可以连接到一个不同于其请求版本的服务。
7.7 原始数据流接口
除了面向服务的通信,CM 还提供了用于处理外部 ECU(如 ADAS 系统中的传感器)原始二进制数据流的独立、静态 API。
- 为客户端应用实现了:建立到服务端的通信通道的功能
 - 为服务端应用实现了:等待客户端连接的功能
 - 为客户端和服务端提供了:销毁通信通道以及通过通道读写原始数据流的功能
 
原始数据流通道可以由集成配置其部署信息,包括网络端点信息、协议等。目前传输层使用 TCP/IP 套接字,但今后可能增加其他替代方式。原始数据流接口定义在 ara::com::raw 命名空间中。
更多关于 Adaptive AUTOSAR 文章
https://www.cnblogs.com/tengzijian/category/1995263.html
原文地址(获取最新更新):https://www.cnblogs.com/tengzijian/p/15112262.html
Adaptive AUTOSAR 学习笔记 12 - 通信管理的更多相关文章
- Adaptive AUTOSAR 学习笔记 10 - 执行管理
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 EM:Execution Ma ...
 - Adaptive AUTOSAR 学习笔记 8 - 干货小结:背景、技术、特征、架构、方法论和 Manifest
		
官方文档下载方式及介绍情参见 Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议. 这是 Adaptive AUTOSAR 学习笔记的第 8 篇,学习笔记 3 - 7 翻译了 ...
 - Adaptive AUTOSAR 学习笔记 3 - AP 背景、技术及特征(中文翻译)
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本.本文从AUTOSAR_EXP_PlatformDesign.pdf开始,一边学习,一边顺带着翻译一 ...
 - Adaptive AUTOSAR 学习笔记 16 - 时间同步和网络管理
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
 - Adaptive AUTOSAR 学习笔记 4 - 架构
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
 - Adaptive AUTOSAR 学习笔记 6 - 架构 - 方法论和 Manifest
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
 - Adaptive AUTOSAR 学习笔记 7 - 应用设计和 Manifest
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
 - Adaptive AUTOSAR 学习笔记 14 - 车辆诊断
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
 - Adaptive AUTOSAR 学习笔记 15 - 持久化 Persistency
		
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
 
随机推荐
- Flannel和Calico网络插件对比
			
1.Kubernetes通信问题 1.容器间通信:即同一个Pod内多个容器间通信,通常使用loopback来实现. 2.Pod间通信:K8s要求,Pod和Pod之间通信必须使用Pod-IP 直接访问另 ...
 - 乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时
			
Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2万,超 ...
 - 安装VMwareTools
			
2.1.挂载VMwareTools镜像
 - 26、linux下安装MongoDB
			
26.1.MongoDB介绍: 1.什么是MongoDB: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. Mo ...
 - mui  移动端网页双击事件处理
			
使用场景:需要在动态生成li列表数据中添加双击事件 定义事件 : var date1=null; function listdb(myKey) { var date2 = new Date(); if ...
 - Oracle查询wm_concat返回[oracle.sql.CLOB@7D6414ed]之坑!
			
在orcale中使用wm_concat函数将字段分组连接. 在linux环境下需要将wm_concat(字段)进行to_char(wm_concat(字段))处理.
 - ESCMScript(2)Module语法
			
严格模式 ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";. 严格模式的限制如下 变量必须声明后再使用 函数的参数不能有同名属性,否则报错 不能 ...
 - Linux搭建私有yum源
			
一.前期准备 环境:CentOS 8.3 镜像: CentOS-7-x86_64-Everything-2009.iso CentOS-8.3.2011-x86_64-dvd1.iso 二.搭建步骤 ...
 - 10 年 bloger 告诉你要不要写博客,又该如何优雅地写博客?
			
关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader.公众号后台回复关键字 "1024" 获取程序员大厂面试指南. 图:D ...
 - Linux:linux服务器稳定性压力测试工具stress安装与使用
			
stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户. 1. stress1.0.4下载地址 下载:https://fossies.org/l ...