Недавно я много читал о распределенных сообщениях и связанных шаблонах. Я использовал некоторые из них, поддерживаемые инструментами, например, NServiceBus.
Многие из этих шаблонов описаны в Интернете. Некоторые из них, которые я недавно читал, были:
- Message Broker: http://msdn.microsoft.com/en-us/library/ff648849.aspx
- Шина сообщений: http://msdn.microsoft.com/en-us/library/ms978583.aspx
- Шаблоны сообщений в SOA: http://msdn.microsoft.com/en-us/library/aa480027.aspx
- Сообщение Udi Dahan о различиях: http://www.udidahan.com/2011/03/24/bus-and-broker-pubsub-differences/
Если использование такого инструмента, как шина NService, позволяет сделать много, не задумываясь о проблемах с инфраструктурой, некоторые вопросы возникли, когда я попытался реализовать базовый Message Bus и обработчик команд. Фактически, когда дело доходит до этих шаблонов, я не вижу много различий между ними.
Я не буду вставлять код, потому что он длинный, но я нашел два сообщения в блоге, которые вполне описывают идею реализации, о которой я хотел бы поговорить.
- Шина сообщений: http://brentedwards.net/2010/04/13/roll-your-own-simple-message-bus-event-aggregator/
Идея проста: шина сообщений отслеживает подписчиков и отправляет сообщения различным подписчикам, если они заинтересованы.
- Командный обработчик: http://weblogs.asp.net/shijuvarghese/archive/2011/10/18/cqrs-commands-command-handlers-and-command-dispatcher.aspx
Это очень похоже на шину сообщения. Командная шина вызывает обработчики команд для заданного типа команды.
Таким образом, в обоих случаях есть сходства.
Каковы реальные различия и преимущества с использованием одного шаблона, чем другого (я не говорю о поддержке инструментария). Что мне не хватает?
Второй вопрос. Является ли шина сообщений ценной без вспомогательной оснастки? Я не вижу, чтобы я сам оказывал поддержку всем арендаторам.
Прошу прощения за длинный и запутанный вопрос, но не стесняйтесь спрашивать подробности.