AP Autosar平台设计 7通信管理 com(CM)
目录
7通信管理Communication Management
7.1概述
7.2面向服务的通信
7.3语言绑定和网络绑定
7.4生成C++语言绑定代理和骨架Proxies and Skeletons
7.5静态和动态配置
7.6服务合同版本控制Service Contract Versioning
7.7原始数据流接口Raw Data Streaming Interface
7通信管理Communication Management
7.1概述
通信管理负责分布式实时嵌入式环境中应用程序之间通信的所有方面。
背后的概念是从实际机制中抽象出来,以找到和连接通信伙伴,从而使应用软件的实现者能够专注于其应用程序的特定目的。
7.2面向服务的通信
服务的概念是指提供给应用程序的功能超出了基本操作软件已经提供的功能。通信管理软件提供了为机器内通信以及机器间通信提供或使用此类服务的机制。
一项服务由以下各项组成:
•事件Event
•方法Method
•字段Fields
通信参与者间的通信路径可以在设计时、启动时或时建立。该机制的一个重要组成部分是服务注册中心( Service Registry ),它充当中介实例,也是通信管理软件的一部分。

图7-1面向服务的通信
提供服务的每个应用程序在服务中心注册这些服务。
要使用服务,消费方Client应用程序需要通过查询服务注册表来查找请求的服务,此过程称为服务发现。
7.3语言绑定和网络绑定
com提供了如何将定义的服务呈现给应用程序实现者的标准化方法(上层,语言绑定)以及服务数据在网络上的各自表示(下层,网络绑定)。这确保了源代码的可移植性和编译服务在平台的不同实现之间的兼容性。
语言绑定定义了如何使用目标编程语言的方便特性将服务的方法、事件和字段转换为可直接访问的标识符。 性能和类型安全(只要目标语言支持)是主要目标。因此,语言绑定通常由服务接口定义提供的源代码生成器实现。

图7-2语言和网络绑定示例
网络绑定定义如何序列化已配置服务的实际数据并将其绑定到特定网络。 它可以基于通信管理配置(AUTOSAR元模型的接口定义)来实现,可以理解为是生成的特定于服务的方法,也可以直接生成序列化代码本身。目前,通信管理支持SOME/IP、DDS、IPC(进程间通信或任何其他自定义绑定)和信号PDU(基于信号的网络绑定)。
本地服务注册表也是网络绑定的一部分。
请注意:语言绑定和网络绑定之间的接口被视为通信管理软件内部的专用接口。因此,定义此接口的规范性标准目前已超出范围。然而,平台供应商被鼓励独立定义这样的接口,以允许他们的软件易于实现其他语言绑定,而不是C++与平台工具中的其他网络绑定。
7.4生成C++语言绑定代理和骨架Proxies and Skeletons
C++语言绑定的上层接口提供了在Autosar元模型的接口描述中定义的服务的面向对象映射。
作为com 管理软件开发工具的一部分的生成器生成C++类,其包含每个相应服务的字段、事件和方法的类型安全表示。
在服务实现端,这些生成的类被命名为服务提供者骨架Provider Skeletons。在客户端,它们被称为服务请求者代理Requester Proxies。
对于服务方法,服务请求者代理提供了同步(在服务器返回结果之前阻止调用方)和异步调用(被调用函数立即返回)的机制,调用方可以并行启动其他活动,并在服务器的返回值通过核心类(Core Type)ara::core::future的特殊功能可用时接收结果。见第18.1章。
可以配置平台工具,使得生成器创建模型类,以便在相应服务器尚不可用时轻松开发客户端功能。同样的机制也可以用于对客户机进行单元测试。
虽然Proxy类可以直接由客户端使用,但服务提供者对C++绑定的Skeleton只是抽象的基类。服务实现应由生成的基类派生,并实现相应的功能。
ara::com的接口还可以为安全相关的E2E保护通信提供代理和框架。不管E2E保护是否开启,这些接口的设计确保了与应用程序的兼容性。
7.5静态和动态配置
通信路径的配置可能发生在设计时、启动时或时,因此被视为静态或动态:
全静态配置:
根本不需要服务发现,因为服务器知道所有客户端,客户端也知道服务器。
没有应用程序代码进行服务发现:
Client端知道Server,但Server不知道Client。事件订阅是应用程序中唯一的动态通信模式。
应用程序中的完整服务发现:
配置时没有已知的通信路径,服务发现API允许应用程序代码在时选择服务实例。
7.6服务合同版本控制Service Contract Versioning
在SOA环境中,Client和Server依赖于涵盖服务接口和行为的契约Contract。在服务开发过程中,服务接口或行为可能会随时间而改变。因此,引入了服务版本控制来区分不同版本的服务。AUTOSAR自适应平台支持服务设计和部署阶段的合同版本控制。此外,Client的服务发现可配置为支持版本向后可组合性。这意味着,如果Server的服务版本与Client端所需的服务版本向后兼容,则Client端服务可以连接到不同的服务版本。
7.7原始数据流接口Raw Data Streaming Interface
除了面向服务的通信外,通信管理还提供了一个独立的API,用于处理通向外部ECU(例如ADAS系统中的传感器)的原始二进制数据流。API是静态的,它实现了客户端应用程序与服务器建立通信通道的功能,以及服务器应用程序等待来自客户端的传入连接的功能。API为客户端和服务器提供了破坏通信通道以及通过通信通道读写原始数据(字节流)的功能。集成商可以通过应用部署信息来配置原始数据流通道,部署信息包括例如网络端点信息和所选协议。目前,TCP/IP套接字(sockets)应用作传输层,但将来可以添加其他替代方案。原始数据流接口位于名称空间ara::com::raw中。
