Вопрос архитектуры сервера. (ФОС + NServiceBus) - PullRequest
0 голосов
/ 18 декабря 2009

Прежде всего я опишу текущее состояние:
Сервер состоит из нескольких сервисов WCF, размещенных в одном или нескольких сервисах win на разных машинах.

  1. Служба, отвечающая за получение данных с разных устройств. Связь с устройствами осуществляется через сокеты. Режим экземпляра службы - синглтон.
  2. Служба брокера данных - отвечает за сохранение данных и обмен по запросу. Режим экземпляра - синглтон.
  3. Служба конфигурации - отвечает за изменение базы данных конфигурации и работу с консолью администратора (приложение WPF, например, SSMS). Управляет соединениями из консоли, управления абонентами и т. Д. Режим экземпляра - синглтон.
  4. Служба клиентского доступа - почти такая же, как описано выше, которая управляет клиентами, но также уведомляет клиентов о новых данных и действует как фасад для служебной шины. И снова синглтон.
  5. Служба управления удостоверениями - проверяет разрешения и возвращает результат. Singleton.

Все эти сервисы связаны с NServiceBus, и мне очень нравится, как он работает в данный момент.

Но:
Слишком много синглетонов. Главным образом, потому что, чтобы использовать сервисную шину, у меня должен быть единственный экземпляр этого aaik Я не знаю, может быть, я могу использовать шину nservice в режиме сеанса, но не знаю, как справиться с проблемой, что все эти службы будут использовать одну очередь.

А что, если у меня будет более 300 клиентов? Синглтон может перестать отвечать.

И я хотел бы попросить некоторых критиков обо всем этом, и, возможно, кто-то мог бы что-то предложить.

Заранее спасибо.
Алексей

1 Ответ

4 голосов
/ 19 декабря 2009

Алексей

Хотя у вас должен быть только один экземпляр шины на процесс, вы можете поместить этот экземпляр в глобально доступное место (как показано в примере AsyncPages) и использовать его из не-одноэлементных объектов, таких как веб-страницы и службы WCF.

Кроме того, вероятно, не все службы должны использовать одну очередь. Без лучшего понимания вашей ситуации я бы по умолчанию рекомендовал одну очередь для каждой из указанных вами служб.

Надеюсь, это поможет.

...