Можете ли вы установить связь между службой WCF и службой Windows, на которой она установлена? - PullRequest
2 голосов
/ 11 февраля 2010

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

Ответы [ 3 ]

3 голосов
/ 11 февраля 2010

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

OperationContext.Current.Host

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

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

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

1 голос
/ 11 февраля 2010

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

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

0 голосов
/ 02 сентября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...