Это именно то, как я это сделал - размещение службы WCF в службе Windows. Служба Windows - это процесс; Служба WCF - это место, где выполняется работа.
В моем случае мой CollectionService на основе WCF большую часть времени находится в режиме ожидания. Я использую WCF для запуска и остановки коллектора, потому что модель программирования WCF делает это легко. Однако для передачи данных из коллектора в пользовательский интерфейс я использую сокет TCP, а не WCF. Я знаю, что WCF имеет режим потоковой передачи, но (1) я никогда не использовал его и (2) я полагаю, что при таком использовании WCF есть некоторые издержки. Сокет для меня просто удобный запасной вариант, но я думаю, что WCF можно заставить работать.
Если вы только начинаете, вы можете обратиться к этим двум ответам для запуска и запуска службы Windows с использованием C #. Оттуда вам просто нужно создать ServiceHost
и закрыть его в обратных вызовах OnStart()
и OnStop()
вашей службы Windows, соответственно.
Если вы новичок в WCF, взгляните на этот вопрос.
Хорошие и простые книги / учебные пособия для изучения последних вещей WCF
Еще одна вещь. В ходе вашей работы над этим может оказаться, что вы хотите, чтобы служба WCF предоставляла события для вашего пользовательского интерфейса при возникновении определенных событий. Например, вы можете предоставить событие, которое периодически уведомляет пользовательский интерфейс о количестве полученных байтов. Для этого я настоятельно рекомендую эту статью Ювала Лоуи, одного из богов WCF.
Что нужно знать об односторонних вызовах, обратных вызовах и событиях
Его среда публикации-подписки доступна бесплатно на его веб-сайте IDesign.net , а также рядом других действующих примеров WCF.
Надеюсь, это поможет.