2016-11-24 3 views
0

В моем проекте мне требуется выполнить службу Windows, которая выполняет некоторые операционные операции, в то время как графический интерфейс WPF отображает информацию пользователю, а также позволяет пользователю выполнять некоторые настройки. Чтобы быть более точным, моя внутренняя служба выполняет операции против вредоносного ПО неограниченно долго, в то время как графический интерфейс должен взаимодействовать с сервисом для извлечения данных и для включения/выключения операций.Как работает WCF канал связи?

Теперь для этого общения между графическим интерфейсом и моей службой я исследовал этот форум, и большинство людей предложило использовать службу WCF, размещенную в моем первоначальном сервисе. Я сделал именно это, разместил службу WCF в моей встроенной функции Onstart(). Мой графический интерфейс также может ссылаться на службу WCF, и кнопки могут вызывать хостинговые функции WCF.

Теперь я не понимаю, как WCF свяжется с сервисом, который его размещает. Это связано с тем, что целью использования WCF было создание канала связи между графическим интерфейсом и моей первоначальной службой Windows. Я хочу показать функции службы Windows в GUI, а не те, которые я написал в службе WCF. Я много исследовал и не могу найти соответствующие статьи. Кто-то, пожалуйста, помогите мне позвонить в службу Windows, когда на GUI нажата кнопка. Если есть уже существующие статьи, пожалуйста, обратитесь к ним. Мне не хватает времени, и любая помощь будет высоко оценена.

+0

Вы должны иметь возможность вызывать методы службы Windows из службы WCF. Существует много способов, как это сделать, все стандартные C#, нет особого секрета. Можете ли вы более подробно объяснить, где вы застряли? – nvoigt

+0

Я не могу просто ссылаться на свою службу Windows в своей службе WCF, а затем вызывать ее методы. Это приведет к циклической зависимости, поскольку служба WCF ссылается на мою службу Windows, поскольку она размещает ее. Итак, как мне сделать мои методы обслуживания Windows доступными в службе wcf. Прямо сейчас служба wcf изолирована от службы Windows. Можете ли вы предоставить мне метод для этого? –

+0

Я понятия не имею, как структурирован ваш проект или какой у вас код, мне нужно угадать. Может быть, есть общий интерфейс dll для обоих? Это был бы нормальный способ его решения. Или пусть у вас есть обратные вызовы? Или события? – nvoigt

ответ

0

Если ваша служба WCF должна вызывать методы службы Windows, и они находятся в разных сборках, самым простым способом может быть извлечение методов, которые вы хотите вызвать из службы Windows в интерфейсе. Поместите этот интерфейс в сборку службы WCF и возьмите один из таких объектов, например, как параметр конструктора. Тогда работайте против этого. Ссылка на сервисную службу WCF в вашей службе Windows и передачу службы в службу WCF после того, как вы сделали сервис Windows реализованным интерфейсом.