我应该使用哪个 UML 图来记录使用 EIP 的消息驱动系统体系结构?



我想使用 UML 绘制系统消息驱动架构的高级图。

我正在努力确定正确的图表来绘制通过消息通道交换消息的 EIP 微服务系统。

哪种UML图最适合此?

当你说EIP时,我假设你指的是企业集成模式,即企业应用程序集成的各种模式集合,如消息路由器消息代理消息通道服务调用等,如几本流行的书籍和论文所记录的那样。如果是这种情况,那么您对消息通道模式的引用是有意义的,我想我明白您的意思。

UML 是一种通用语言集,可用于表示体系结构的许多不同方面,因此问题的答案取决于您尝试显示的内容以及抽象级别。如果你的重点是消息传递(消息定时、排序等),那么你需要使用UML中的行为语言之一;如果你想表示消息(结构、类型、内容等),那么你可以用结构语言来实现。8bitjunkie的答案建议在行为方面使用通信图,但您也可以根据您的重点/需求使用序列图,活动图和状态图。序列图允许您比通信图更清楚地识别时序方面。对于消息结构,我推荐类图。UML 还可以通过标记值和构造型进行扩展,以包含更大的特异性并根据需要添加结构化细节;您可以在 UML 模型中捕获的结构化信息没有真正的限制。

从 enterpriseintegrationpatterns.com 的介绍:

EAI [UMLEAI] 的 UML Profile 丰富了 用于描述组件之间的消息流的协作图。 这种符号作为对 可以作为代码生成基础的系统,作为 模型驱动体系结构 (MDA)。

在 UML 2 中,协作图被替换为通信图

然而,enterpriseintegrationpatterns.com 的介绍接着说:

我们决定不采用这种表示法...{因为} ...联合马列 配置文件无法捕获模式中描述的所有模式 语言。

在撰写本文时(2019 年 4 月),UML 的 EAI 配置文件最后一次发布似乎是 2004 年 3 月。这早于 enterpriseintegrationpatterns.com 的摘录,根据回道机,该摘录于 2015 年 8 月首次发布。

这表明 UML 2 不足以描述体现 EIP 的消息驱动系统体系结构。

您可以使用组件图和/或复合结构图。如果在你的例子中,每个微服务只实例化一次,那么你只需要其中一个关系图。否则,最好让组件图显示类级别,复合结构图显示实例级别。请参阅问题组件图依赖关系与程序集。

可以将消息队列建模为具有构造型 <<queue>> 的单独组件,也可以建模为具有构造型 <<queue>> 的接口。如果队列不由一个服务拥有,则将队列建模为单独的组件是最佳选择。但是,如果它是拥有的(只有一个服务在其上放置/发布消息),那么单独的队列组件会使图表混乱,最好将其建模为由消息生产者提供并由消息使用者要求的接口。

最新更新