Embedded 六边形体系结构在嵌入式系统中的应用

Embedded 六边形体系结构在嵌入式系统中的应用,embedded,software-design,hexagonal-architecture,Embedded,Software Design,Hexagonal Architecture,我正在努力研究如何在嵌入式软件系统的环境中使用六边形(端口和适配器)体系结构 如果我理解正确,架构是这样的 /-----------------\ /-----------------------------\ | | | | | Application | | Domain

我正在努力研究如何在嵌入式软件系统的环境中使用六边形(端口和适配器)体系结构

如果我理解正确,架构是这样的

 /-----------------\        /-----------------------------\                  
 |                 |        |                             |                  
 |  Application    |        |    Domain                   |                  
 |                 |        |                             |                  
 |  +----------+   |        |  +---------+                |                  
 |  |          +-------------->|interface|                |       /-------------------\
 |  +----------+   |        |  +---------+                |       |                   |
 |                 |        |      ^                      |       |   Infrastructure  |
 |                 |        |      |                      |       |                   |
 \---------------+-/        |  +---+---+     +---------+  |       |   +----------+    |
                            |  |       +---->|interface|<-------------+          |    |
Code that allows            |  +-------+     +---------+  |       |   +----------+    |
interaction with            |                             |       |                   |
user                        \--------------------------+--/       \-----------------+-/

                                     Business logic         What we (the business)   
                                                            depend on - persistence, 
                                                            crypto services etc      
/--------------\/-------------------------------------
|                 |        |                             |                  
|应用程序| |域|
|                 |        |                             |                  
|  +----------+   |        |  +---------+                |                  
||+------------->|接口|/-------------------\
|  +----------+   |        |  +---------+                |       |                   |
|| | ^ | |基础设施|
|                 |        |      |                      |       |                   |
\---------------+-/        |  +---+---+     +---------+  |       |   +----------+    |

||+--->|接口|这看起来确实是个糟糕的设计。它应该像UART驱动程序->UART HAL->协议处理程序->应用程序逻辑一样,在需要的地方传递数据。对于较小的项目,您可能会选择捷径,但讨论程序设计实际上没有意义。@Lundin,您可能是对的。在我的实现中,我使用了一个称为平台的新边界,它包含HAL和同时指向应用程序和基础结构的驱动程序。但我想看看传统的六角拱是否有办法在这里工作。我还认为“应用程序”是一个不幸的名字。也许它是应用程序前端的缩写?我想你是在太低的层次上应用架构的。据我所知,UART本身静态地定位在某个地方并不是Hexagon架构的一部分。我可以想象一个UART管理器作为“基础设施”(使用您的术语)中的存储库,它将一个物理UART(即一个特定物理UART的驱动程序对象的句柄)传递给“域”,而“域”又将一个抽象的基于串行字符的双向通信对象传递给“应用程序”.@Vroomfondel我倾向于同意你。综上所述,我猜大多数使用HA的系统都会使用完全忽略底层系统的高级API,而在嵌入式世界中,我们需要提供操作系统接口、驱动程序和可能的通用实用程序功能(例如数组大小(c)等)。我想这就是为什么需要一个平台分区的原因。