Прежде всего я опишу текущее состояние:
Сервер состоит из нескольких сервисов WCF, размещенных в одном или нескольких сервисах win на разных машинах.
- Служба, отвечающая за получение данных с разных устройств. Связь с устройствами осуществляется через сокеты. Режим экземпляра службы - синглтон.
- Служба брокера данных - отвечает за сохранение данных и обмен по запросу. Режим экземпляра - синглтон.
- Служба конфигурации - отвечает за изменение базы данных конфигурации и работу с консолью администратора (приложение WPF, например, SSMS). Управляет соединениями из консоли, управления абонентами и т. Д. Режим экземпляра - синглтон.
- Служба клиентского доступа - почти такая же, как описано выше, которая управляет клиентами, но также уведомляет клиентов о новых данных и действует как фасад для служебной шины. И снова синглтон.
- Служба управления удостоверениями - проверяет разрешения и возвращает результат. Singleton.
Все эти сервисы связаны с NServiceBus, и мне очень нравится, как он работает в данный момент.
Но:
Слишком много синглетонов. Главным образом, потому что, чтобы использовать сервисную шину, у меня должен быть единственный экземпляр этого aaik Я не знаю, может быть, я могу использовать шину nservice в режиме сеанса, но не знаю, как справиться с проблемой, что все эти службы будут использовать одну очередь.
А что, если у меня будет более 300 клиентов? Синглтон может перестать отвечать.
И я хотел бы попросить некоторых критиков обо всем этом, и, возможно, кто-то мог бы что-то предложить.
Заранее спасибо.
Алексей