独立应用程序中面向消息的通信 - 它有意义吗?
message oriented communication in stand alone application - does it make a sense?
关于应用程序架构的奇怪问题,但也许你可以帮助我:-)。
在独立应用程序中使用消息进行内部通信是否有意义?
明确地说,我不是在谈论 MOM,而是在内部具有 MVC 或 PAC 架构(或由多个协作模块组成的任何架构)的单个应用程序。
此外,此处未定义消息传递系统,我们可以假设它允许创建对象并将对象从一个应用程序模块发送到另一个应用程序模块,而不是简单的方法调用(所以基本上是 send(Message) 而不是 ilights->lightOn( bool) 函数调用).
所以假设这样的应用程序有多个模块,其中一些依赖于其他模块(层次树),另一些在层次树的同一级别上等。
现在的问题是,使用任何类型的消息传递系统而不是传递接口然后仅使用它们来调用所需的方法是否有意义?
从一个角度来看,使用消息可以帮助我们解耦模块,但是哪些模块呢?只有模块树顶部的模块或消息应该更深(多深)?
还有第二种观点,消息系统增加了样板代码量(我们需要定义消息,创建处理程序,调度程序等,而不是简单的方法调用)所以有一些额外的工作。
有什么中庸之道吗,或者仅仅在独立应用程序中使用消息是完全没有意义的?
这里没有确定的答案。每一个这样的问题都要从需求的角度去分析。
您提到的一些显而易见的事情(消息的依赖关系解耦、直接方法调用的更快开发时间)可能很重要(或不重要)。
在不分析需求的情况下,答案将基于意见。例如。我可以想到应用程序内部消息系统的多种原因:
- 添加和删除消息(假设相同的基础 class)是健壮的:只需向调度程序添加一个处理程序或忽略新消息
- 根据消息添加事件很容易
- 以后添加多线程变得更容易(调度程序可以在一个中心位置完成
- 您可以比函数调用更轻松地记录消息
关于应用程序架构的奇怪问题,但也许你可以帮助我:-)。
在独立应用程序中使用消息进行内部通信是否有意义?
明确地说,我不是在谈论 MOM,而是在内部具有 MVC 或 PAC 架构(或由多个协作模块组成的任何架构)的单个应用程序。 此外,此处未定义消息传递系统,我们可以假设它允许创建对象并将对象从一个应用程序模块发送到另一个应用程序模块,而不是简单的方法调用(所以基本上是 send(Message) 而不是 ilights->lightOn( bool) 函数调用).
所以假设这样的应用程序有多个模块,其中一些依赖于其他模块(层次树),另一些在层次树的同一级别上等。
现在的问题是,使用任何类型的消息传递系统而不是传递接口然后仅使用它们来调用所需的方法是否有意义?
从一个角度来看,使用消息可以帮助我们解耦模块,但是哪些模块呢?只有模块树顶部的模块或消息应该更深(多深)?
还有第二种观点,消息系统增加了样板代码量(我们需要定义消息,创建处理程序,调度程序等,而不是简单的方法调用)所以有一些额外的工作。
有什么中庸之道吗,或者仅仅在独立应用程序中使用消息是完全没有意义的?
这里没有确定的答案。每一个这样的问题都要从需求的角度去分析。
您提到的一些显而易见的事情(消息的依赖关系解耦、直接方法调用的更快开发时间)可能很重要(或不重要)。
在不分析需求的情况下,答案将基于意见。例如。我可以想到应用程序内部消息系统的多种原因:
- 添加和删除消息(假设相同的基础 class)是健壮的:只需向调度程序添加一个处理程序或忽略新消息
- 根据消息添加事件很容易
- 以后添加多线程变得更容易(调度程序可以在一个中心位置完成
- 您可以比函数调用更轻松地记录消息