Adaptive Autosar通讯层:ARA::COM中的Instance Identifiers

2023-05-16

一般概念

实例标识符。在收发两端都是要用的。是很核心的概念。

proxy端用来搜索服务,skeleton端用来创建服务实例。
站在API的角度来看,这样的识别符是和特定的技术绑定的。所以,标识符的结构和内容都是按照使用的通讯协议来的。

namespace ara::com 中定义了一个类class InstanceIdentifier来描述描述符,那么独立于绑定的技术,大家都应该有相同的结构。这个类提供了从string构造的构造函数和tostring的转换方法。可以将描述符转换为字符串意味着可以传输、存储等等。

基于ara::com开发应用的人员不需要关心描述符的具体内容,因为你可以看到,上面说的那个类里除了标识符这个字符串没有别的任何技术细节。具体的绑定由集成人员在部署应用的时候实现。

通讯层标识符
ara::com::InstanceIdentifier

ara::com提供了将应用程序开发人员在自己本地的命名空间定义的名称翻译为ara::com::InstanceIdentifier的能力。
本地命名其实一般也是直接从AUTOSAR的模型里面选已选构造的。
本地名称需要在当前可执行文件中具有唯一性。(那是当然了),基本是下面的形式:
<context 0>/<context 1>/.../<context N>/<port name>

在C++中本地名称是ara::core::InstanceSpecifier。然后他的类结构和上面com 的是基本上一样的。

集成人员通过manifest把具体的跟技术有关的ID和这些本地标识符绑定。换句话说,也可以让具有相同的ara::core::InstanceSpecifier的执行文件同时启动N多次,只要给他们不同的manifest。

下面的API将ara::core::InstanceSpecifier翻译为ara::com::InstanceIdentifier:

namespace ara::com::runtime{
ara::com::InstanceIdentifierContainer ara::com::runtime::ResolveInstanceIDs(ara::core::InstanceSpecifier modelName);

}

有人可能会问了,为什么返回的是个Container?这是因为AUTOSAR想告诉你,我们可能在一个标识符后面绑定了好几个通讯技术。多绑定对服务器来讲是一个很常见的use case(汽车行业软件能力还是弱啊,写文档的人还要负责教),这样可以很容易的允许各种各样的客户端在链接服务器的时候选择他们喜欢的技术。对于客户端来说,多技术绑定一般是为了冗余设计。(A挂了用B,这样)
技术上来讲,ResolveInstanceIDs()会查找进程绑定的 service instance manifest,在里面找ara::core::InstanceSpecifier。ara::core::InstanceSpecifier必须在service instance manifest中是独一无二的。

用哪个?

如上所示,我们发现要从ara::core::InstanceSpecifier转换到ara::com::InstanceIdentifier需要调用ResolveInstanceIDs()。实际上我们做了函数的重载,你可以随便用ara::com::InstanceIdentifier OR ara::core::InstanceSpecifier。ara::com::InstanceIdentifier的优点在于他包含了技术绑定的信息,可以在不同的APP进程中反复构造,不需要再经过服务实例manifest解析。比较适合更牛逼的开发者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Adaptive Autosar通讯层:ARA::COM中的Instance Identifiers 的相关文章

  • 隐藏打开的 Excel 文件

    这是我的问题 我开发了一个程序 它使用 Microsoft Excel COM 组件来读取 写入 Excel 文件 嗯 我的应用程序运行良好 但是当我在程序运行时直接使用 Excel 打开另一个文件时 我的应用程序使用的文件会出现在 Exc
  • 如何使用 ChemDraw/Python 从 InChI 创建 .cdx 文件?

    我想使用 Python 从 InChI 创建一个 ChemDraw cdx 文件 这answer https stackoverflow com a 51543307 7295599给出了一个解决方案cdx gt InChI 下面的最小示例
  • 如何将 Excel 工作表复制到另一个 Excel 工作簿中而不在 C# winforms 中打开 Excel 文件?

    在 C Windows 应用程序中 我有很多 Excel 工作簿 我想要的是将工作表从 Excel 工作簿复制到单个工作簿 这是可能的 但我必须打开 Excel 工作簿才能执行此操作 Excel Application app new Ex
  • PHP 中的类未注册错误

    我们创建了一个 C 类库程序集 并将其设置为 COM 可见 以便能够从 PHP 调用其方法 这曾经运行良好 但现在我们想将其安装在 Windows Server 2008 服务器上 并且不断遇到 类未注册 错误 为了排除任何依赖性问题 我用
  • C# - 编写 COM 服务器 - 映射到方法的属性

    我们正在尝试替换最初为 VB6 应用程序编写的 COM 服务器 我们无法访问源代码 由于某种原因 VB6 应用程序可以调用我们的构造函数 但随后它会得到 系统错误 H80004002 没有这样的 接口支持 我假设当它尝试使用 QueryIn
  • 从非托管 C++ 调用托管代码 (c#) 的最佳方法

    我们开发了一个软件架构 由用 C 开发的一组对象组成 他们广泛使用事件来通知客户端状态变化等 最初的目的是允许遗留代码通过 COM 互操作服务使用这些托管对象 这在设计规范中很容易编写 但我发现实际实现它会遇到更多问题 我已经搜索了很多小时
  • 为什么 COM 忽略我的 DllSurrogate 条目?

    我知道这个问题 https stackoverflow com questions 1706429 how exactly do i config dcom to load my dll into a separate process 但我
  • 选择com的理由

    我想知道为什么人们会选择 Com 作为他的软件开发 技术 我的第一个想法是机器 编程语言的独立性 你的是啥呢 COM 是 Windows 上自动化和 IPC 的事实上的标准 尽管 Net 已经开始转移焦点 因此有些领域您根本没有 或没有 选
  • 使用 COM 对象的 Python ctypes 和 DLL

    在 Windows 下 我尝试使用第 3 方 DLL SomeLib dll 使用 Python 2 7 用 C 编程ctypes 对于其某些功能 该库使用另一个 COM DLL SomeCOMlib dll 它本身使用其他DLL LibA
  • 在没有 ResetEvent 的情况下调用 setEvent

    如果使用 setEvent 设置手动重置事件但未使用 ResetEvent 重置 会发生什么情况 并且该事件被触发多次 即当事件被处理时 事件再次被设置 以下是示例任务 void foo SetEvent hEvent1 void foo1
  • COM接口指南

    我不太喜欢 COM 接口 所以我有一个小问题 假设我有这段代码 Guid 148BD528 A2AB 11CE B11F 00AA00530503 InterfaceType ComInterfaceType InterfaceIsIUnk
  • 如何在CWorkerThread中编写简单的后台线程

    我正在尝试在 Internet Explorer 的附加组件中异步运行函数 我正在用 VC 编写 BHO 按照建议here https stackoverflow com questions 4285346 threading in bho
  • 如何手动删除类的实例?

    如何手动删除类的实例 Example include
  • 允许连接到完整性级别不匹配的 .NET COM 服务器

    我在基于 COM 的客户端 服务器设置方面遇到问题 COM 服务器是用 C NET 4 0 编写的 并作为 注册的 本地服务器运行 根据连接到服务器的应用程序 其他客户端将收到服务器执行失败 HRESULT 异常 0x80080005 CO
  • 如何在对话框中托管预览处理程序

    我正在尝试在对话框中托管文件预览处理程序 我已经为资源管理器中的选择更改设置了一个事件接收器 当选择更改时 我将选定的 shell 项目提供给对话框 该对话框又将其提供给准备预览帧的函数 一般来说 它会成功加载正确的处理程序并显示文件的内容
  • 访问模型字段内的模型实例

    我有一个模型 事件 它具有用户模型 事件的所有者 的外键 该用户可以使用以下 ManyToManyField 邀请其他用户 invites models ManyToManyField User related name invited u
  • Java、Jacob 和 Microsoft Outlook 事件:收到“找不到事件 iid”错误

    我正在编写一个 Java 程序 它使用雅各布图书馆 http danadler com jacob 桥接 COM 和 Java 该程序创建了一个新的MailItem http msdn microsoft com en us library
  • C# 中类实例的内存使用情况[重复]

    这个问题在这里已经有答案了 可能的重复 C NET 对象使用多少内存 https stackoverflow com questions 426396 how much memory does a c net object use 就像标题
  • VBA COM 库中的这些 _B_var_Xxxxx 和 _B_str_Xxxxx 成员到底是什么?

    想象一下以下函数调用 foo UCase bar 我正在解析这段代码 并确定UCase是一个函数调用 现在我想将该函数调用解析为定义它的 COM 库中函数的声明 这个想法是实现一个代码检查来确定何时Variant当使用内置函数时String
  • 无法访问 VBA 中的 COM 公开方法

    我正在尝试在 VBA 中访问 COM 公开的方法 Problem 我看到所有默认方法 例如GetHashCode GetType and ToString 在 VBA 中但是not那些是 COM 接口的一部分并且专门编写为 COM 可见的

随机推荐

  • PCIE BAR空间理解

    PCIE应用程序编程 xff0c 首先就要理清PCIE BAR空间到底说的是什么 在PCIE配置空间里 xff0c 0x10开始后面有6个32位的BAR寄存器 xff0c BAR寄存器中存储的数据是表示PCIE设备在PCIE地址空间中的基地
  • 老男孩读PCIe之五:TLP结构

    来源 xff1a http www ssdfans com p 61 3683 无论Request TLP xff0c 还是作为回应的Completion TLP xff0c 它们模样都差不多 xff1a 图5 1 TLP主要由三部分组成
  • vxWorks6.9及workBench3.3常见配置

    1 双斜杠注释 在workBench集成开发环境当中 xff0c 默认的注释方式为 xxxxxx 如果想要使用 注释的方法必须修改workBench 的编译选项 xff0c 为编译选项添加c99支持或者gnu89 在编译选项中添加 std
  • 可能是最全的FreeRTOS源码分析及应用开发系列

    可能是最全的FreeRTOS源码分析及应用开发系列 FreeRTOS 是一个可裁剪的小型且免费的 RTOS 系统 xff0c 尺寸非常小 xff0c 可运行于微控制器上 其特点包括 xff1a 内核支持抢占式 xff0c 合作式和时间片调度
  • FreeRTOS系列|FreeRTOS简介

    1 RTOS简介 RTOS全称为 Real Time Operation System xff0c 即实时操作系统 RTOS强调的是实时性 xff0c 又分为硬实时和软实时 硬实时要求在规定的时间内必须完成操作 xff0c 不允许超时 xf
  • FreeRTOS系列|任务创建和删除

    1 任务创建和删除API函数 xTaskCreate 函数 xff1a 动态创建一个新的任务 xff0c 每个任务都需要RAM来保存任务状态 任务控制块 43 任务栈 xff0c 此接口采用动态分配内存资源 BaseType t span
  • FreeRTOS系列|多任务调度

    1 多任务启动流程 多任务启动流程如下表所示 启动后以下各函数由上至下依次执行含义osKernelStart 启动内核vTaskStartScheduler 启动任务调度器xPortStartScheduler 启动调度器prvStartF
  • PTP 报文格式

    HeaderBodySuffix34 字节Variable lengthOptional 所有的 PTP 帧都包含一个公共报头 xff0c 它决定了协议版本和消息类型 xff0c 还定义了消息的剩余内容 所有多字节字段以大端顺序发送 xff
  • makefile:make -C M=参数的使用

    Makefile为 xff0c PWD span class token operator 61 span span class token punctuation span shell pwd span class token punct
  • BW笔记(2011-10-24更新至No.237)

    1 同一个变量名的UID可能有多个 xff0c 记得注意 2 在查找时要注意技术名称还是名称 xff0c 因为查询时会在两个中进行 xff0c 模糊查询时要细心 xff0c FV与V都可以查到 3 复制的时候注意长度 xff0c 过长的会不
  • rpmsg 内核开发 用户层接口

    地址 xff1a https blog csdn net thisway diy article details 129195479 韦东山 Tina Linux E907开发指南 AMP 环境搭建 7 1 rpmsg 内核开发 7 2 r
  • __raw_writel, writel_relaxed 和 writel的区别

    因为对别的平台不了解 xff0c 下面仅谈它们在ARM上的区别 raw writel xff1a 因为有volatile关键字 xff0c 所以编译器不会打乱多个 raw writel的执行顺序 对于ARM而言 xff0c 当多个写以代码的
  • WFE和WFI的区别

    1 概念 xff1a WFI Wait for interrupt 和WFE Wait for event 是两个让ARM核进入low power standby模式的指令 xff0c 由ARM architecture定义 xff0c 由
  • Ubuntu16.04安装中文输入法

    转载地址 xff1a http blog csdn net suxiang198 article details 52040283 Ubuntu16 04安装完后 xff0c 和12 04以及14 04都不一样 xff0c 并没有中文输入功
  • QT linux安装

    转载地址 xff1a http www cnblogs com tangkaixuan p 6504102 html 文章来自https lug ustc edu cn sites qtguide 1 4 Qt在Linux下安装 Qt在Li
  • Linux CAN编程详解

    转载地址 xff1a http velep com archives 1181 html Linux CAN编程详解 是一篇百度文库上的文档 xff0c 主要描述了以下内容 xff1a can总线介绍及其帧类型 xff1b Linux 系统
  • buildroot学习(十)——at91sam9g45软件平台更新

    转载地址 xff1a https blog csdn net srf1986 article details 52474697 xff08 xff11 xff13 xff16 xff09 spice protocol In computin
  • killall 、kill 、pkill 命令详解

    转载地址 xff1a https www cnblogs com rsky p 4886043 html killall 命令 Linux系统中的killall命令用于杀死指定名字的进程 xff08 kill processes by na
  • PCIe扫盲——PCIe简介

    转载地址 xff1a http blog chinaaet com justlxy p 5100053066 PCI Express是继ISA和PCI总线之后的第三代I O总线 xff0c 即3GIO 由Intel在2001年的IDF上提出
  • Adaptive Autosar通讯层:ARA::COM中的Instance Identifiers

    一般概念 实例标识符 在收发两端都是要用的 是很核心的概念 proxy端用来搜索服务 xff0c skeleton端用来创建服务实例 站在API的角度来看 xff0c 这样的识别符是和特定的技术绑定的 所以 xff0c 标识符的结构和内容都