美文网首页
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 介绍

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