7 Communication Management 通信管理
7.1 概述
在分布式的实时嵌入式环境中,CM模块负责应用之间通信的所有方面。
其背后的概念是从实际的机制中抽象出寻找和连接通信伙伴的机制,以便应用程序软件的实现者能够专注于其应用程序的特定目的。
7.2 面向服务的通信
服务的概念意味着提供给应用程序的功能超出了基本操作软件已经提供的功能。通信管理软件提供了使用这些服务的机制,以便进行机内通信和机间通信
服务由Event, Method, Field 组合组成
通信伙伴之间的通信路径可以在设计,启动和运行的时候建立。这个机制一个重要的模块是Service Registry. Service Registry 作为CM软件的一部分充当代理实例。
提供服务的每个应用在Service Registry中注册这些服务。 为了使用服务,一个消费应用需要通过查询 Service Registry找到这些服务, 这个进程是Service Discovery。
7.3 语言绑定和网络绑定
通信管理提供了标准化的方法,即如何将定义的服务呈现给应用程序实现者(上层,语言绑定),以及服务在网络上的数据的各自表示形式(下层,网络绑定)。这确保了源代码的可移植性和编译后的服务在平台的不同实现之间的兼容性。
语言绑定定义了如何使用目标编程语言的方便特性将服务的methods、event和field转换为可直接访问的标识符。性能和类型安全性(只要目标语言支持)是主要目标。因此,语言绑定通常由服务接口定义提供的源代码生成器实现。
网络绑定定义如何序列化配置服务的实际数据并将其绑定到特定网络。它可以基于通信管理配置(AUTOSAR元模型的接口定义)实现,方法是解释生成的特定于服务的配方,或者直接生成序列化代码本身。
本地Service Registry也是网络绑定的一部分。
note: 语言绑定和网络绑定之间的接口是CM软件的私有接口。因此定义这些接口不在范围之内。但是,平台供应商被鼓励为他们的软件独立定义这样一个接口,以方便实现除c++之外的其他语言绑定,以及在他们的平台实现内部的其他网络绑定。
7.4 生产C++绑定的代理和框架
C++语言绑定的上层接口提供了在AUTOSAR元模型的接口描述中定义的面向对象的服务映射。
生成器是CM软件开发工具的一部分。生成器生成C++类,包含 field, event, method和类型安全表示和每个服务的方法。
在服务实现端,这些生成的类被叫做服务提供框架。 在客户端,他们被称为服务请求代理。
对于服务方法,服务请求代理提供同步和异步调用。调用者可以并行地启动其他活动,并在服务器的返回值通过核心类型ara:: Core::future的特殊特性可用时接收结果。看 18.1 章
平台实现要可以配置以便生成器在各自服务器还不可用的时候创建模拟类以便于客户端功能的开发。相同的机制也可用于客户端的单元测试。
代理类可以被客户直接使用,而c++绑定的服务提供者框架只是抽象的基类。服务实现应该从生成的基类派生并实现相应的功能。
ara::com的接口也可以为安全相关的E2E保护通信提供代理和框架。这些接口的设计保证了应用程序的兼容性,不管E2E保护是打开还是关闭。
7.5 静态和动态配置
通信路径的配置可以发正在设计,启动和运行阶段。因此考虑静态或动态
* 全静态配置
服务发现不再需要因为服务器知道所有的客户端,客户端也知道服务端。
*应用程序没有发现代码
客户端知道服务器但服务器不知道客户端。Event 订阅是应用唯一的动态配置形式。
*应用程序中的完整服务发现
在配置时不知道通信路径。服务发现的API允许应用程序代码去选在运行时的服务实例。
网友评论