美文网首页
CommonAPI 介绍

CommonAPI 介绍

作者: Lee_5566 | 来源:发表于2021-12-07 14:28 被阅读0次
image.png

CommonAPI

CommonAPI C++是用于开发分布式应用程序的标准C++ API规范,该分布式应用程序通过中间件进行进程间通信。

CommonAPI C++依靠FrancaIDL来描述静态接口,根据通信协议部署参数,一起组建完整的实例依赖关系模型。目的是封装通信协议和相邻的中间件,使应用程序的C++接口独立于底层IPC堆栈。

IPC Common API允许针对开发的应用程序(即使用C++的客户端和服务器)可以与不同的IPC后端链接(someip,或D-Bus),而无需更改应用程序代码。

因此,为使用特定IPC X(例如someip)的系统开发的组件可以轻松地部署到另一个使用IPC Y(例如D-Bus)的系统,只需要交换IPC Common API后端(someip或D-Bus),而无需重新编译应用程序代码。

文件介绍

实际的接口定义将使用Franca IDL创建(.fild文件)。
各项部署根据部署文件定义(
.fdepl文件)。

CommonAPI C++ 在通讯层分为Core和Binding两个部分。其中Core部分负责和Application交互而Binding部分负责和系统底层的IPC服务栈交互。其中的Binding即IPC的具体实现方式。目前GENIVI支持的Binding分为两种,分别是SOME/IP和DBus。

image.png

CommonAPI C++的IPC接口使用的是通用的“服务端、客户端”模式。
对于客户端主动发起的通讯,采取的是方法(Methods)调用的方式来实现。
Method分为两种类型:

  1. 标准的带有返回值的Method(Basic Method)
  2. 不需要返回值的Method(Fire-and-forgot Method)

服务端主动发起的通讯通过广播(Broadcasts)的方式实现。
CommonAPI C++提供的广播模式也有两种:

  1. 标准的广播方式(Basic Broadcasts),即广播内容发送给所有的客户端
  2. 选择性广播方式(Selective Broadcasts),即广播内容可以发送给某一个或一组客户端。

CommonAPI的组成原理

image.png

CommonAPI C++分为独立于中间件的部分(CommonAPI Core,仅仅指CommonAPI
接口)和特定于中间件的部分(CommonAPI Binding,用于选择使用的IPC协议的代码)。

CommonAPI将接口描述语言Franca IDL用于接口规范(逻辑接口规范,*.fidl文件)。

Franca IDL的代码生成的是CommonAPI的组合部分。主要指逻辑接口的变量部分,那是接口的一部分,它取决于Franca IDL文件中的规范(数据类型,数组,枚举和就基础知识,包括属性,方法,回调,错误处理,广播)。

CommonAPI C++ binding的代码生成器需要特定于中间件的参数(部署参数,例如String数据类型的编码/解码格式)。

这些参数在Franca部署文件(*.fdepl)中定义。主要独立于接口规范。

CommonAPI基本的工作流程

image.png

构建CommonAPI项目库

CommonAPI可执行文件通常由6部分组成:

  1. 应用程序代码本身是由开发人员手动编写的;
  2. 生成的CommonAPI(绑定独立)代码。根据*.fidl文件生成的代码。 在客户端,这段代码包含proxy函数,由应用程序调用;在服务中,它包含生成的函数,这些函数必须由开发人员手动实现(也可以生成默认实现)。
  3. CommonAPI运行时库。
  4. 生成的绑定特定代码(所谓的粘合代码)。根据*.fdepl文件生成的代码。
  5. 绑定的运行时库。
  6. 使用的中间件的通用库(例如libdbus/vsomeip)。


    image.png

现在将在创建proxy的确切时间加载粘合代码库。
通过CommonAPI配置文件可以找到正确的库,该配置文件包含CommonAPI地址和粘合代码库之间的关联。如果配置文件中没有条目,则使用默认设置。

胶水代码库是binding特定的;这意味着所需的运行库由运行时链接程序自动加载。

相关文章

  • CommonAPI 介绍

    CommonAPI CommonAPI C++是用于开发分布式应用程序的标准C++ API规范,该分布式应用程序通...

  • CommonAPI入门

    CommonAPI介绍 CommonAPI C++是一个标准化的C++ API规范,用于开发分布式的应用程序。这些...

  • CommonAPI C++(fidl)介绍

    CommonAPI的基础部分 第一部分是由CommonAPI代码生成器生成的基于Franca的部分,也就是根据*....

  • CommonAPI C++(fdepl)介绍

    fdepl文件 定义独立于中间件(vSomeIp/D-Bus)的C++ API的一个问题是,需要针对API的各个部...

  • AOSP 使用 CommonAPI/SomeIP流水账

    SOME/IP可以在单独使用,也可以结合CommonAPI/SOMEIP使用(更加方便) 依赖项 1、boost ...

  • 抽象工厂模式创建对象

    结合反射应用,使用class.forName反射创建对象,通过泛型约束参数类型新产品只需实现CommonAPI即可...

  • Runtime介绍---术语介绍

    1. 什么是Runtime Runtime又叫运行时,是一套C语言的API。 我们平时编写的OC代码,底层都是基于...

  • 介绍

    万物终有一天会消失殆尽,诸神出卖黎明,光明为黑暗所湮灭,日月皆痕,海潮鸣泣,幼雏嚎啕,生灵涂炭。 托里奥世纪第20...

  • 介绍😊

    大家好,我是beth,初入简书,不邀自来,还请各位见谅! 先说说我是怎么想着来的吧?这不是刚过了一个寒假嘛...

  • 介绍

    在这个世界上还有三个家族他们不受各个国家联合国管。但他们身上有着使命分别是帝国家族曲国家族圣国家族。他们隐藏在一个...

网友评论

      本文标题:CommonAPI 介绍

      本文链接:https://www.haomeiwen.com/subject/skzgxrtx.html