Я прорабатываю первые шаги по изучению Nservicebus и планирую достаточно крупномасштабное (по крайней мере, для меня) приложение.
Я хочу, чтобы приложение могло масштабироваться на X-машины. В нем будет ряд услуг, таких как:
LogonService, UserManagementService, GameService, RoomService и т. Д.
Клиенты будут общаться с сервером через WCF. Сами сервисы будут общаться друг с другом через NServiceBus и MSMQ. Саша Барбер написал отличную статью о начале работы с NServiceBus и столкнулся с в той же ситуации я собираюсь ударить. Уди и Саша еще раз поговорили об этом здесь.
Мой вопрос: когда служба обрабатывает сообщение, как она узнает об остальной части приложения в этой службе? По словам Саши, «обработчик автоматически» появляется, когда сообщение требует обработки. Итак, когда он создан, как он узнает о других объектах, которые уже запущены и работают. Например, в GameService у него будет список всех запущенных игр. Как бы он получил к этому доступ?
Думаю, я могу придумать два варианта (как указал Саша):
Шаблон посредника Синглтон
Из этих двух, я думаю, я бы предпочел зарегистрировать синглтон в Castle Windsor и использовать его таким образом.
Является ли это подходящим использованием шаблона синглтона (поскольку вы часто видите людей, называющих синглтон «дьяволом», я не хочу пропустить его, если это возможно).
Есть ли лучшее решение этой проблемы?
Спасибо