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

时间:2019-04-11 22:01:27

标签: uml eip

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

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

哪个UML图最适合?

3 个答案:

答案 0 :(得分:1)

摘自enterpriseintegrationpatterns.com的介绍:

  

EAI [UMLEAI]的UML配置文件丰富了   协作图,以描述组件之间的消息流。   这种表示法非常有用,可以对   可以作为代码生成基础的系统   模型驱动的架构(MDA)。

在UML 2中,协作图已被Communication Diagrams取代

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

  

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

在撰写本文时(2019年4月),看来最后一次发布UML的EAI配置文件是March 2004。这要早于enterpriseintegrationpatterns.com摘录的内容,该摘录是根据最早发布in August 2015的计算机的方式编写的。

这表明UML 2不能很好地描述体现EIP的消息驱动系统体系结构。

答案 1 :(得分:1)

当您说EIP时,我假设您的意思是 Enterprise Integration Patterns ,即企业应用程序集成的各种模式集合,例如消息路由器消息代理消息通道服务调用等等,如一些流行的书籍和论文所记录的。如果是这样,那么您对消息通道模式的引用就很有意义,我想我理解您的意思。

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

答案 2 :(得分:0)

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

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