Какова хорошая практика использования WCF для следующего сценария?
Основное описание
Существует несколько модулей (программ), которые будут предоставлять Службу WCF.Каждое приложение может запускаться более одного раза.Обычный случай - это то, что эти приложения запускаются из своего рода консоли управления, но их также можно запускать вручную.
Настройка WCF
В настоящее время я использую NetNamedPipeBinding.ServiceHost с адресом «net.pipe: // localhost» и конечными точками с именем программы в качестве относительного адреса.Поэтому, чтобы получить доступ к сервису, я бы, например, использовал «net.pipe: // localhost / module1».
Мои вопросы
- Как я могу предотвратить получение исключения AddressAlreadyInUseException при запуске другого экземпляратого же модуля?Моя идея заключалась в том, чтобы использовать идентификатор для каждого экземпляра.Но тогда я не могу отследить их.(например, как module2 узнает, какой экземпляр module1 доступен, если первый экземпляр уже закрыт).Другая идея - использовать какой-то глобальный модуль, который будет обрабатывать экземпляры.Если я решу просто позволить одному экземпляру зарегистрировать службу, а все остальные не получатся, у меня возникнет та же проблема.
- Как модуль может сообщить управляющему приложению, что оно завершено со всей инициализацией?Насколько я понимаю, CallbackContract можно использовать только для обратных вызовов во время вызова метода ServiceContract.Так должен ли я запускать службу в самом приложении управления?Я считал приложение управления клиентом, а не сервером, потому что оно не будет доступно постоянно.