AUTOSAR_EXP_ARAComAPI的7章笔记(4)
☞返回总目录
相关总结:本地 / 网络多绑定用例总结
7.3.2 本地/网络多绑定用例
在前一节中,我们看到了的一种多绑定
特殊变体,现在来看,也可认为是一种真实情况的变体。
假设有一个与上一章节相似的情景,唯一的区别是服务实例2
位于与AP产品
相同以太网的不同ECU
上,而服务消费者
(及其用于实例1
和实例
2 的代理)驻留在AP产品
ECU
上。由于以太网
对于AP
的标准协议是SOME/IP
,所以期望两个 ECU
之间的通信基于SOME/IP
。对于我们的具体例子,这意味着代理
实例
1
通过Unix域套接字
与服务
实例
1
通信(如果AP
供应商做好了IPC实现
,针对进程本地通信
优化为直接方法调用
),而代理
实例
2
通过符合SOME/IP
的消息格式的网络套接字
与服务
实例
2
通信。
对于以上所述SOME/IP
部署,因为AP软件组件
(SWCs
)不会直接打开到远程节点
的网络套接字
连接,所以,可能会被人指摘不正确:我们将在这里(第 7.3.3
小节)更详细地介绍这一点,但目前假设这是一个现实场景。(对于其他网络协议,这确实可能是现实的)。
因此,AP
产品
ECU
上的注册表(服务发现)
的守护进程
已经看到了服务
实例2
的服务提供
,这个服务提供
包含了基于IP网络端点
的寻址信息
。对于服务实例2
的服务提供
,没有任何变化:仍然与一些 Unix域套接字
名称相关联,本质上是一个文件名。在这个例子中,从 ProxyClass::FindService
返回的服务
实例1
和服务
实例2
的两个句柄
在内部看起来非常不同:服务
实例1
的句柄
包含它是一个 Unix域套接字
和一个名称的信息,而句柄2
包含它是一个网络套接字
以及一个IP地址
和端口号
的信息。所以,与第一个例子(子章节 7.3.1
)相比,这确实算得上是一个完全成熟的多绑定
,我们的代理类构造函数
从句柄1
和句柄2
实例化两个完全不同的传输机制
!在调用构造函数
期间,如何做出使用哪种传输机制
的动态决策,在技术上如何解决,这再次取决于中间件实现者
:生成的代理类
实现可能已经包含任何支持的机制,并且句柄
中包含的信息仅用于在不同的行为之间切换,或者所需的传输功能
(也称为绑定
)可以在运行时在通过共享库机制
从给定的句柄检测到特定需求后加载。