面向服务架构(SOA)介绍
在汽车电子电气架构还处于分布式时代时,汽车软件的开发方式主要是采用嵌入式软件进行开发,而随着汽车智能化程度的加深,更加复杂且多样的功能需求让汽车软件在复杂度上再上一层。在整车的自动驾驶方面,由于未来高阶自动驾驶能力的渗透,不同车型在其动力性及安全性方面将得到趋同,而智能化融合用车场景所带来的差异可与用户进行直接互动,将成为影响用户消费的关键。
在此复杂的环境背景之下,传统的软件开发方式由于灵活性差、开发周期长等原因,在汽车电子电气架构处于域融合/中央集成的环境之下,开始逐渐被面向服务架构(Service Oriented Architecture ,SOA)的软件开发设计方法取代。

一、SOA的定义
SOA是一种C/S (Client-Server,客户端/服务器)架构的软件设计方法,其通过采用分层的方式去强调构建松散耦合的架构,可在将软/硬件解耦的同时做到整车的应用功能与开发的车型也同步解耦。由于其应用软件是由独立的、模块化的软件(即服务)组成的,且服务之间采用独立的标准接口进行调用,因此当有整车功能的增加或更新需求时,可在无需改变现有控制单元中的软件模型的前提下,直接通过在中央计算平台去调用提前预埋好的API接口,以此实现对域内或跨域的ECU功能的控制从而实现整车相关功能的增加与更新,此方式即实现了跨域功能的调度与融合。
二、SOA架构的优点
SOA的主要优点为以下几个方面:
1、服务之间通过简单、精确定义的接口进行通信,不涉及底层编程接口和通信模型。
2、粗粒度性:粗粒度服务提供一项特定的业务功能,采用粗粒度服务接口的优点在于使用者和服务层之间不必再进行多次的往复,一次往复就足够了。
3、松耦合性:松耦合性要求SOA架构中的不同服务之间应该保持一种松耦合 的关系,也就是应该保持一种相对独立无依赖的 关系。这样的好处有两点,首先是具有灵活性,其次当组成整个应用程序的服务内部结构和实现逐步地发生变化时, 系统可以继续地独立存在。而紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个 应用程序进行某种形式的更改时 这种结构就显得非常脆弱。
4、位置透明性:位置透明性要求SOA系统中的所有服务对于其调用者来说都是位置透明的,也就是说,每个服务的调用者只需 要知道想要调用的是哪一个服务,但并不需要知道所调用服务的物理位置在哪。
5、协议无关性:协议无关性要求每一个服务都可以通过不同的协议来调用。
三、SOA在整车中的应用价值
1、功能服务化。在传统的汽车时代,由于整车功能与硬件、车型高度绑定,因此想要对其功能进行更新或增加都需要付出巨大的工作量,而在域/中央集成架构的发展下,各功能模块会将其对应的功能提前封装好,并对外提供标准化的接口以供功能之间的相互调用,通过此方式可对新功能或原有的功能进行更新迭代。
如在整车自动驾驶功能中,通过自动驾驶算法会对整车的行径路线进行最合理的规划,在汽车的行进过程中如有补能需求,算法可通过计算汽车当前点与最近可补能点之间的距离,然后提前协调热管理系统的工作让动力电池进入最佳的充电温度,以此让动力电池获得最佳的充电速度。在此过程中,便是自动驾驶域与动力域之间的跨域调度的典型应用。
2、升级简单化。由于SOA让软/硬件得以解耦,在有软件升级需求时可在不考虑硬件架构的前提下快速对软件进行需求范围内的更新,通过快速的、精准的软件更新让用户在软件迭代上获得更好的体验。
如在不同的节假日对整车的HMI进行合适的更新,以此让用户获得更加浓厚的节日体验,此方式便是在精准的小范围内对车机软件进行更新的应用案例。
3、信息安全化。通过具有高速率、高稳定性、高安全性的车载以太网作为整车主网络,以此来实现数据的安全传输。
4、高扩展性。通过预埋接口的方式,可针对多样化的用户需求快速开发相应的应用软件,让整车实现更高、更快地扩展应用。如可根据某一用户群体快速开发适合其功能的应用软件,而对于基础车型而言,其原本的服务并不需要做更新。
相关文章:
面向服务架构(SOA)介绍
在汽车电子电气架构还处于分布式时代时,汽车软件的开发方式主要是采用嵌入式软件进行开发,而随着汽车智能化程度的加深,更加复杂且多样的功能需求让汽车软件在复杂度上再上一层。在整车的自动驾驶方面,由于未来高阶自动驾驶能力的…...
关于使用Next遇到的一些新特性
用next之后发现,这是作为全栈比较好用的框架 API 1、app Router 这是目前next官方以及未来推荐的新技术方向 若使用api路由用来管理后端api接口 (1)此时在app文件夹下创建 api名称目录(如 getApiKey) (…...
Python 爬虫入门(七):requests 库的使用「详细介绍」
Python 爬虫入门(七):requests 库的使用「详细介绍」 前言1. 初识 requests1.1 安装 requests 库1.2 发送 GET 请求1.3 发送 POST 请求 2. HTTP 请求详解2.1 请求方法2.2 请求头2.3 请求参数 3. 处理响应3.1 响应内容3.2 响应状态码3.3 响应头…...
两端约束的最优控制问题及其数值解法
问题的基本形式 设 n n n维系统状态房产 x ˙ ( t ) f [ x ( t ) , u ( t ) , t ] \dot{x}(t)f[x(t),u(t),t] x˙(t)f[x(t),u(t),t],控制向量 u ( t ) ∈ Ω u(t)\in\Omega u(t)∈Ω是分段连续函数, Ω ∈ R m \Omega\in R^m Ω∈Rm是有界闭集…...
电磁仿真--基本操作-CST-(6)-导线周围磁场
目录 1. 简介 2. 过程 2.1 新建工程 2.2 选择求解器 2.3 设置单位 2.4 设置频率 2.5 绘制导线 2.6 Background 2.7 边界条件 2.8 设置激励源 2.9 查看结果 3. 其他设置 3.1 网格类型 3.2 集总网络元件 3.3 阻抗和导纳矩阵 3.4 自适应网格细化 3.4 提升计算效率…...
用Java手写jvm之模拟方法调用指令invokexxx和方法返回指令xreturn
写在前面 源码 。 本文一起看下方法调用相关的指令invokexxx以及方法返回(栈帧弹出线程栈)相关的指令xReturn 。 1:正文 因为invokexxx指令和普通的指令不同,会创建一个新的栈帧,并压倒操作数栈中,所以我…...
自定义枚举类型检查
/*** 工单状态,使用字典:order_item_state*/ CheckEnum(nullAble true, enumType OrderItemStateEnum.class) private String workState; 注解类 package com.gdyunst.core.tool.validation;import javax.validation.Constraint; import javax.valid…...
探索四川财谷通抖音小店:安全与信赖的购物新体验
在数字经济蓬勃发展的今天,抖音平台凭借其庞大的用户基础和强大的内容生态,逐渐成为了电商领域的一股不可忽视的力量。其中,四川财谷通抖音小店作为这一浪潮中的佼佼者,不仅以其丰富的商品种类和独特的品牌魅力吸引了众多消费者的…...
systemd-manage系统服务图形化管理工具使用教程
1. systemd-manage介绍 systemd-manage是一个开源的基于systemd服务管理的图形化工具,使用qt图形库进行开发,可以提供服务管理,用户会话,配置文件修改,日志查询,性能分析,进程管理等功能。图形…...
移除元素(LeetCode)
题目 给你一个数组 和一个值 ,你需要 原地 移除所有数值等于 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 解…...
代码随想录27期|Python|Day38|509斐波那契|738.爬楼梯|746.746. 使用最小花费爬楼梯
贴一下动态规划的步骤(5步),就像是之前递归一样,需要每次落实到位。 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契 注意到n的范…...
windows docker容器部署前端项目
一、介绍 Docker 是一个开源的平台,旨在简化应用程序的开发、部署和运行。它通过使用容器(containers)来实现这一点。容器是一种轻量级、可移植的虚拟化方式,可以在不同的环境中一致地运行软件。 Docker 的主要作用和优点包括&a…...
科普文:微服务之全文检索ElasticSearch 集群的搭建
一、集群有什么用 1.1 群集的含义与产生 群集(或称为集群)是由多台主机构成,但对外,只表现为一个整体,只提供一个访问入口(域名或IP),相当于一台大型计算机。互联网应用中…...
QtObject是干什么的?
QtObject 是 Qt Quick 中的一个基类,用于创建非视觉对象。这意味着 QtObject 不渲染任何视觉内容,它主要用于定义数据和逻辑,而不是用户界面元素。你可以把 QtObject 看作是 QML 中的一个基础组件,用于创建和管理不需要显示的对象…...
锐捷RCNA | 远程登录与路由技术
锐捷RCNA | 远程登录与路由技术 一、远程登录配置1. Telnet远程登录介绍2. 案例1--设置远程登录密码实现远程登录3. 案例2--定义不同用户账户实现远程用户权限隔离4. SSH远程登录介绍5. 案例--通过SSH功能远程管理设备 二、路由技术1. 直连路由的数据通信2. 间接路由的数据通信…...
实现Vue-tiny-diff算法
前言 前面我们实现了基本的数据更新到视图渲染的逻辑,但是这种方式(innerHTML)是极其低效的, 因此,我们相应引入 dom 和 diff 算法, 数据到视图的过程变为: state -> vdom -> dom vNode 层 所谓 vNode, 就是一个表示 dom 结构的轻量对象 {tag, props, children; }为…...
正则表达式测试工具
前言 正则表达式测试工具可供您输入正则表达式和测试文本,立即查看匹配结果. 下面是离线的HTML文件,同样可以提供相同的服务. 目录 使用说明 HTML代码 正则表达式的编写经验和方法 总结 使用说明 1.先将HTML代码存储成.html为后缀的文件; 2.然后用浏览器打开这个…...
Github 2024-08-02 开源项目日报 Top9
根据Github Trendings的统计,今日(2024-08-02统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Go项目1C项目1Rust项目1Shell项目1Dockerfile项目1TypeScript项目1Dart项目1Docker-OSX: 在Docker容器中运行Mac OS X 创建周期:152…...
重生之我 学习【数据结构之顺序表(SeqList)】
⭐⭐⭐ 新老博友们,感谢各位的阅读观看 期末考试&假期调整暂时的停更了两个多月 没有写博客为大家分享优质内容 还容各位博友多多的理解 美丽的八月重生之我归来 继续为大家分享内容 你我共同加油 一起努力 ⭐⭐⭐ 数据结构将以顺序表、链表、栈区、队列、二叉树…...
前端day4-表单标签
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>day4-表单</title> </head> <body&g…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
