1

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

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

哪个 UML 图最适合这个?

4

3 回答 3

2

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

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

于 2019-04-12T07:55:51.800 回答
1

来自enterpriseintegrationpatterns.com的介绍:

EAI 的 UML 概要 [UMLEAI] 丰富了 协作图的语义,以描述组件之间的消息流。这种表示法作为系统的精确可视化描述非常有用,可以作为代码生成的基础,作为模型驱动架构 (MDA) 的一部分。

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

然而,enterpriseintegrationpatterns.com 的介绍继续说:

我们决定不采用这种表示法... {因为} ...UML Profile 没有捕获我们的模式语言中描述的所有模式。

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

这表明 UML 2 无法描述体现 EIP 的消息驱动系统架构。

于 2019-04-11T22:21:27.097 回答
0

您可以使用组件图和/或复合结构图。如果在您的情况下,每个微服务只实例化一次,那么您只需要这些图之一。否则,最好有一个组件图显示类级别和一个复合结构图显示实例级别。请参阅问题Component diagram dependency vs assembly

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

于 2019-04-12T07:49:58.370 回答