2016-12-13 16 views
0

странный вопрос относительно архитектуры приложения, но, возможно, вы можете мне помочь :-).сообщение ориентированное общение в автономном приложении - это имеет смысл?

Есть ли смысл использовать сообщения для внутренней связи в автономном приложении?

Чтобы быть ясным, я говорю не о MOM, а о одном приложении с архитектурой MVC или PAC внутри (или любой архитектурой, состоящей из нескольких взаимодействующих модулей). Также система сообщений не определена здесь, мы можем предположить, что это то, что позволяет создавать и отправлять объекты из одного приложения в другой, вместо простого вызова метода (так что в основном отправлять (сообщение) вместо ilights-> lightOn (bool)).

Так предположим, что такое приложение имеет несколько модулей, некоторые из них зависит от остальных (иерархическое дерево), некоторые другие находятся на одном уровне иерархического дерева и т.д.

А теперь вопрос, имеет ли он смысл использовать любую систему обмена сообщениями, а не передавать интерфейсы, а затем использовать их только для вызова необходимых методов?

С одной точки зрения использование сообщений может помочь нам развязать модули, но какие модули? Просто модули в верхней части дерева модулей или сообщения должны идти глубже (насколько глубоко)?

Существует также вторая точка зрения, система обмена сообщениями увеличивает количество кода шаблона (мы должны определять сообщения, создавать обработчики, диспетчеры и т. Д. Вместо простого вызова метода), поэтому есть некоторая дополнительная работа.

Есть ли какое-либо золотое серебро или просто использование сообщений внутри автономного приложения, совершенно бессмысленно?

+0

по технике? обычно т он отвечает на ваш вопрос: «вам нужно сделать это прямо сейчас?» Простота и ремонтопригодность - это наиболее важные принципы дизайна импорта. –

+0

@TMcKeown Существует несколько других принципов, которые следует учитывать, важно ли они, что это вопрос требований, например. некоторые проекты не заботятся о ремонтопригодности. – PsiX

ответ

1

Здесь нет определенного ответа. Каждый такой вопрос должен анализироваться с точки зрения требований.

Есть очевидные вещи, о которых вы говорили (развязка зависимостей для сообщений, более быстрое время разработки для прямых вызовов методов), которые могут быть важны (или нет).

Без анализа требований ответ будет основан на мнениях. Например. Я могу думать о нескольких причинах прикладного внутренней системы обмена сообщений:

  • добавления и удаление сообщений (при условии того же базового класса) является надежным: просто добавьте обработчик диспетчеру или игнорировать новое сообщение
  • добавления события на основе сообщений легко
  • добавляя много поточности позже становится легче (диспетчер может сделать это в центральном месте
  • можно проще регистрировать сообщения, чем вызовы функций