Дуплексная связь с WCF без CallbackContract - PullRequest
1 голос
/ 18 января 2012

Какова хорошая практика использования WCF для следующего сценария?

Основное описание

Существует несколько модулей (программ), которые будут предоставлять Службу WCF.Каждое приложение может запускаться более одного раза.Обычный случай - это то, что эти приложения запускаются из своего рода консоли управления, но их также можно запускать вручную.

Настройка WCF

В настоящее время я использую NetNamedPipeBinding.ServiceHost с адресом «net.pipe: // localhost» и конечными точками с именем программы в качестве относительного адреса.Поэтому, чтобы получить доступ к сервису, я бы, например, использовал «net.pipe: // localhost / module1».

Мои вопросы

  1. Как я могу предотвратить получение исключения AddressAlreadyInUseException при запуске другого экземпляратого же модуля?Моя идея заключалась в том, чтобы использовать идентификатор для каждого экземпляра.Но тогда я не могу отследить их.(например, как module2 узнает, какой экземпляр module1 доступен, если первый экземпляр уже закрыт).Другая идея - использовать какой-то глобальный модуль, который будет обрабатывать экземпляры.Если я решу просто позволить одному экземпляру зарегистрировать службу, а все остальные не получатся, у меня возникнет та же проблема.
  2. Как модуль может сообщить управляющему приложению, что оно завершено со всей инициализацией?Насколько я понимаю, CallbackContract можно использовать только для обратных вызовов во время вызова метода ServiceContract.Так должен ли я запускать службу в самом приложении управления?Я считал приложение управления клиентом, а не сервером, потому что оно не будет доступно постоянно.
...