【问题标题】:Message Bus vs Layered消息总线与分层
【发布时间】:2015-04-10 11:05:27
【问题描述】:

希望对我的架构有一些建议

目前我使用的是分层架构,但有些东西变得有点复杂,我认为消息总线会更有用

我在 TeamControler 上有一个名为“CreateTeam”的控制器操作

哪个触发到 TeamService 方法 CreateTeam,然后触发到 PlayerService 方法“CreatePlayers”。

这意味着我的 TeamController 方法“CreateTeam”有两个责任

但是当用户创建团队时,我也需要创建玩家。

那么,CreateTeam 也触发一个在其他地方被拾取的事件 TeamCreated 会更好吗?赋予单一职责并分离关注点?

另外,我以前从未使用过消息总线模式,所以希望我不会让任何人感到困惑,但是引发总线拾取的事件以及随后监听的任何内容是否正确?所以这就是Tell don't ask?

最后,消息总线上的侦听器可以是 Web api 控制器吗?而不是很多单独的应用程序?所以我的带有 CreatePlayers 的 PlayerController 方法可以在引发 CreateTeamEvent 时被触发吗?

【问题讨论】:

  • 我不是架构专家,但我可以与我的主要应用程序的结构联系起来。基本上,我会想象您不再通过控制器与主要业务逻辑交互的场景。然后,创建玩家的智能将完全取决于您的 Service 类。如果您不这样做,那么服务类的不同调用者将不知道该做什么。如果一个新团队必须始终创建新玩家,那么让服务来做吧。那么这意味着......您的消息侦听器调用服务,而不是尝试让控制器接收消息。

标签: message-queue servicebus event-driven


【解决方案1】:

您必须在系统的某个地方嵌入知识(职责)才能调用您的 2 个单独的函数。可以使用服务总线来执行此操作,但根据我的经验,这将是一个过于复杂且更难以理解的解决方案。

我会按照@S 的建议坚持使用层(服务类)。松垮垮的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2014-04-06
    • 2019-12-12
    • 2019-04-13
    • 2010-10-17
    相关资源
    最近更新 更多