Можете ли вы установить связь между службой WCF и службой Windows, на которой она установлена?

2

У меня есть служба WCF, которую я использую для содержимого конфигурации, размещенного в службе Windows, которая будет использоваться для поддержки базы данных. Есть ли способ получить доступ к службе WCF внутри службы хостинга? Или я должен переместить функциональность базы данных в другую службу WCF и разместить их как внутри службы Windows?

Теги:
wcf

3 ответа

3
Лучший ответ

Класс сервиса (тот, который реализует ваш служебный интерфейс) имеет свойство

OperationContext.Current.Host

который дает вам доступ к экземпляру ServiceHost, на котором размещается ваша служба. Вы можете легко получить доступ к этому узлу службы.

Нет встроенного способа выйти за пределы хоста службы и манипулировать или запрашивать службу NT, содержащую хост службы. Но вы всегда можете создать свой собственный класс потомков класса ServiceHost, который предоставит вам необходимый доступ к самой службе NT, а затем использовать этот настраиваемый хост службы для вашей реализации службы.

С помощью настраиваемого хоста службы вы можете в основном делать все, что считаете нужным и полезным, - просто создайте потомка из ServiceHost и сделайте все, что вам нужно!

  • 0
    Не знал, что смогу это сделать. Довольно изящный.
  • 0
    Требуется привести ссылку, возвращенную OperationContext.Current.Host, к классу MyCustomServiceHost. И поскольку на мой проект службы wcf ссылается проект службы Windows, этот пользовательский класс ServiceHost должен находиться внутри проекта wcf. Так что это становится сложно, если я что-то упустил.
Показать ещё 3 комментария
1

Если по "доступу" вы хотите спросить, можете ли вы позвонить службе, тогда да, услуга может быть самим клиентом.

Что может быть лучше для вас, чтобы разделить службу на те части, которые являются специфическими для того, что это веб-сервис и все остальные части, которые выполняют настоящую работу. Попросите службу Windows вызвать последние части.

0

То, как я это делаю, - передать общий объект в конструктор службы WCF с помощью специального экземпляра InstanceProvider (это позволяет использовать конструкторы, не являющиеся стандартными для службы WCF).

Затем общий объект позволяет службе WCF "разговаривать" с Сервисом Windows (или любым другим объектом, который может получить доступ к общему объекту).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню