传统应用如何迁移到SOA框架
| 作者 Shwetha Bhadravathi Patil 和 Nukul Sehgal,MathWorks软件定义汽车 (SDV) 的特点是 AI、自主、连接和电气化。最近,汽车行业已开始采用“基于服务”的方法来设计 SDV 的现代应用。这种称为面向服务的架构 ( ...
以下为文章全文:(本站微信公共账号:cartech8)
汽车零部件采购、销售通信录 填写你的培训需求,我们帮你找 招募汽车专业培训老师
| 作者 Shwetha Bhadravathi Patil 和 Nukul Sehgal,MathWorks软件定义汽车 (SDV) 的特点是 AI、自主、连接和电气化。最近,汽车行业已开始采用“基于服务”的方法来设计 SDV 的现代应用。这种称为面向服务的架构 (SOA) 的方法为开发软件应用提供了一种新范式,其特点是高重用性、易于更新以及与硬件的松散耦合。SOA 的构建原则是一个应用由一组服务组成,这些服务可以被动态地发现、发布、订阅和在运行时重新配置。SOA 的概念已被广泛纳入行业标准,包括 AUTomotive Open System ARchitecture (AUTOSAR)。 在 SOA 框架中,服务具有自包含、模块化、松散耦合等特征,这使得创建本质上非一体式的复杂分布式应用成为可能。基于 SOA 的应用可以使用自上而下或自下而上的方法来开发。在标准 SOA 软件堆栈中,应用软件由服务、平台服务和中间件组成。它们都运行在高性能硬件或虚拟机上。◆ ◆ ◆ ◆将旧应用迁移到 SOA 面临的挑战由于旧应用的若干特性,将其迁移到 SOA 可能颇具挑战性。这些特性包括:
图 1. 组件紧密耦合的一体式设计。
图 2. 将传统应用软件组合分解成服务的步骤。将传统应用软件组合分解为 SOA 应用的服务涉及四个步骤。
图 3. 将软件组件分解为服务。
图 4. 所有 Simulink 模型作为一个可执行文件进行部署。例如,图 4 中有一个在 Simulink? 中开发的高速公路车道跟随应用,它作为一个一体式应用组合进行部署。使用 Simulink 将这样的一体式组件分解成服务(图 5)需要依据单一职责原则和依赖倒置原则。根据这些原则,高速公路车道跟随模型可分解为多项服务,如雷达、视觉和车道。这些服务具有良好定义的职责和松散耦合的依存关系,支持隔离对服务的更改,并且最小化更改对其他服务的影响。 图 5. 使用基于模型的设计将一体式旧应用分解为服务。 一体式应用分解成若干基于 SOA 的服务,并用客户端-服务器端口将它们连接起来。定义服务和接口:使用接口定义的服务是服务边界的一部分。服务边界同样定义了服务与其他服务交互的通信通道。服务边界还封装功能,以实现重用、可维护性、版本控制、可见性、编排和其他好处。使用 System Composer?,您可以配置相关服务组件的端口以实现数据一致性,并通过原型来表示这些服务之间的交互方式。这提供了服务之间依存关系和交互的可视化表示(图 6)。 图 6. 在 Simulink 中配置服务组件的服务接口和端口。
图 7. 每个服务的模型都带有输入、输出及其应用逻辑。您可以仿真这些模型并观察服务之间的交互。
图 8. Simulink 中 SOA 服务的算法实现。此外,您可以使用 Embedded Coder? 为通用 SOA 应用生成 C++ 代码。为 AUTOSAR Adaptive 应用配置服务您可以使用 Simulink 建模结构为 AUTOSAR Adaptive 无缝配置这些服务。如图 9 所示,我们使用 System Composer 中直观的 AUTOSAR 编辑器,成功地将所有服务作为 AUTOSAR Adaptive 服务进行了集成。随后,我们为每个端口和接口建立了必要的映射,确保它们与对应的 AUTOSAR Adaptive 属性保持一致。 图 9. 设计、开发 AUTOSAR Adaptive 应用的服务并为其生成 C++ 代码。 视频:如何在 Simulink 中为 AUTOSAR Adaptive 应用生成 C++ 代码。以雷达服务为例,它链接到一个 Simulink 模型。该模型在根级使用 Simulink Function 模块来创建Adaptive methods (3:50)服务接口。此处,AUTOSAR 服务接口的方法定义了一个软件组件(建模为提供接口的服务器)和另一个软件组件(建模为需要接口的客户端)之间的交互。在 Simulink 中,客户端-服务器通信可以用同步或异步调用行为进行建模。同步客户端模型导致客户端执行阻塞,也就是说客户端会向服务器发送请求并等待响应。异步客户端模型不会导致执行阻塞,也就是说客户端会发送请求、在发送请求后继续当前执行并在收到服务器响应后进行处理。雷达服务是一个使用客户端-服务器通信的服务器。在图 9 中,代码映射 UI 显示了 Simulink Function 模块和函数元素端口的映射 - radarCtrl.Adjust 和 radarCtrl.Calibrate 及其各自的 Adaptive 端口。此外,您还可以在 Methods 服务接口的 AUTOSAR 字典中查看和编辑 AUTOSAR 属性(图 10)。 图 10. 用于查看/编辑属性的 AUTOSAR 字典。LaneGuidanceApp 服务作为客户端运行,并通过异步调用利用客户端-服务器通信(图 11)。此示例中的客户端使用异步通信,并受益于非阻塞执行,能够在向服务器发送请求后继续执行。在 Simulink 模型中,它使用带有 Message Triggered Subsystem 模块的 Function-Call Subsystem 模块来异步执行函数调用。代码映射 UI 显示 Simulink 函数调用方与对应 AUTOSAR Adaptive 端口。 图 11. 映射到 LaneGuidanceApp 服务的 AUTOSAR 属性的 Simulink 模型。同样,所有其他 SOA 服务都是根据 Simulink 中的 AUTOSAR Adaptive 概念进行配置的。 经过验证和仿真后,每个 AUTOSAR Adaptive 服务都可以作为独立应用程序进行部署,并具有自己的工件,包括 C++ 代码和 AUTOSAR 接口描述,其中包含机器、执行和 ServiceInstanceManifest 文件。最后,使用 Embedded Coder 生成 AUTOSAR Adaptive C++ 代码以及对应的软件描述和清单文件,以便进一步集成到工作流中(图 12)。 图 12. AUTOSAR Adaptive 应用程序的 C++ 代码接口文件生成。结论和将来的工作基于模型的设计为系统开发提供了一种结构化方法,支持创建表示应用架构、组件和交互的模型。在本文中,我们通过高速公路车道跟随参考示例说明了如何使用基于模型的设计将传统一体式应用分解为服务,然后将它们配置为 AUTOSAR Adaptive 应用程序。这些模块化服务可作为一个开端,使工程师能够创建、仿真和生成 C++ 代码以及清单文件,以便进一步集成到工作流中。 |
文章网友提供,仅供学习参考,版权为原作者所有,如侵犯到
你的权益请联系542334618@126.com,我们会及时处理。
会员评价:
共1条 发表评论发表我的评论