独立应用程序中面向消息的通信 - 它是否有意义?

时间:2016-12-13 19:46:03

标签: architecture messages

关于应用程序架构的奇怪问题,但也许你可以帮助我: - )。

在独立应用程序中是否有使用消息进行内部通信的意识?

要说清楚,我不是在谈论MOM,而是在内部使用MVC或PAC架构(或任何架构,由多个协作模块组成)的单个应用程序。 此外没有定义消息传递系统,我们可以假设它允许创建一个对象从一个应用程序模块发送到另一个应用程序模块而不是简单的方法调用(所以基本上发送(消息)而不是ilights-> lightOn (bool)函数调用)。

因此假设这样的应用程序有多个模块,其中一些模块依赖于其他模块(分层树),另一些模块则位于同一级别的分层树等上。

现在的问题是,是否有意义使用任何类型的消息传递系统,而不是传递接口然后只使用它们来调用所需的方法?

从一个角度来看,使用消息可以帮助我们解耦模块,但是哪些模块?只是模块树顶部的模块或消息应该更深(有多深)?

还有第二种观点,消息传递系统增加了样板代码的数量(我们需要定义消息,创建处理程序,调度程序等,而不是简单的方法调用),因此还有一些额外的工作。

是否有任何中庸之道或只是在独立应用程序中使用消息是完全没有意义的?

1 个答案:

答案 0 :(得分:1)

这里没有明确的答案。每个这样的问题都必须从需求的角度进行分析。

您提到的显而易见的事情(消息的依赖关系解耦,直接方法调用的开发时间更快)可能很重要(或不重要)。

如果不分析要求,答案将基于意见。例如。我可以想到应用程序内部消息传递系统的多种原因:

  • 添加和删除消息(假设相同的基类)是健壮的:只需向调度程序添加处理程序或忽略新消息
  • 基于消息添加事件很容易
  • 以后添加多线程变得更容易(调度员可以在中央位置执行此操作
  • 您可以比函数调用更容易记录消息