面向服务架构(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…...
Python如何实现定时异步任务_结合asyncio与loop.call_later调用
asyncio.call_later不能直接await,因为它返回Handle对象而非Awaitable;正确做法是在回调中用asyncio.create_task启动协程。asyncio.call_later 为什么不能直接 await?因为 loop.call_later 是一个同步注册函数,它不返回协程对象&…...
如何划分接口文档?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快1、首先最主要的就是要分析接口测试文档,每一个公司的测试文档都是不一样的。具体的就要根据自己公司的接口而定,里面缺少的内容自己需要与开…...
进程通信与网络协议
一、进程间通信1、管道:管道是基于文件描述符的半双工的通信方式,数据单向流动,数据读取后会从管道中删除。A. 无名管道 i. 仅存在于内核空间中,无文件系统入口 i. 仅支持亲缘间进程通信 i. 进程退出后管道会自动释放 …...
Leetcode普通数组-day5、6
Leetcode普通数组-day5/6记录自己刷力扣备战秋招的刷题笔记❤️ ——wosz普通数组 普通数组没什么需要说的,其实最简单的办法就是遍历,因为普通数组它是连续的,因此不会涉及到很复杂的算法。 因为是遍历嘛,我们就可…...
如何用 MutationObserver 监控第三方插件对 DOM 的篡改
使用MutationObserver监控第三方插件DOM篡改,需精准配置观察选项(childList、subtree、attributes、characterData),聚焦目标容器与可疑变更,安全修复防死循环,并兼顾兼容性与iframe等特殊场景。用 Mutatio…...
《道德经》第九章
本章以持而盈之功成身退为核心,是道家保身、持满、长久的警示章。老子用“持盈、揣锐、富贵而骄”三组世俗常见困境,指出过刚则折、过满则溢、过骄则亡的天道规律,最终以“功成身退,天之道”点破最高处世心法,是全书最…...
系统设计面试通关秘籍:从场景分析到微服务拆分的核心思路
系统设计面试通关秘籍:从场景分析到微服务拆分的核心思路一、Scenario场景分析:打好系统设计的基础牌🔍 先定功能:抓核心,舍冗余📊 再估流量:从MAU到QPS,做有依据的推算⚙️ 流量决定…...
Python编程第09课:Python列表(List)操作完全手册
前言:Python最常用的数据结构 列表是Python中最常用、最灵活的数据结构。它就像一个容器,可以存储任意类型的元素,并且可以随时添加、删除或修改元素。无论是处理数据、实现算法还是构建应用程序,列表都是你离不开的工具。 本课程…...
Spring Boot 与 GraalVM 原生镜像 2026:极致性能优化
Spring Boot 与 GraalVM 原生镜像 2026:极致性能优化 今天我们来聊聊 Spring Boot 与 GraalVM 原生镜像,这是实现 Java 应用极致性能优化的重要技术。 一、什么是 GraalVM 原生镜像 GraalVM 原生镜像(Native Image)是一种提前编译…...
微软常用运行库 安装教程:一键修复VC++运行环境(AIO合集)
一、工具简介 微软运行库合集(MSVBCRT AIO) 是一款集成了多个版本 Microsoft Visual C Redistributable 的运行库安装工具。 许多 Windows 软件(尤其是游戏、专业工具)依赖这些运行库才能正常运行,缺失时常会提示类…...
