Не зная, сколько данных вы планируете обменивать, сложно дать точную рекомендацию. Я использую сокеты WCF и TCP для обмена данными между моим пользовательским интерфейсом и службой Windows. Вот соображения, которые я сделал.
Я использую WCF для того, что я называю апериодическим обменом данными. Например, когда событие происходит в моей службе Windows, я передаю событие в пользовательский интерфейс с помощью WCF. Специально для этого механизма, основанного на событиях, я бы настоятельно рекомендовал Платформа публикации-подписки Джувала Лоуи , которая доступна бесплатно здесь . Я также использую WCF для передачи изменений конфигурации из пользовательского интерфейса в службу Windows. WCF для меня - идеальное решение для такого рода обмена данными.
Когда пользователь говорит моей службе Windows выполнить какое-либо действие, большая часть данных отправляется из службы Windows в пользовательский интерфейс. Для этого я использую сокеты TCP. Я знаю, что WCF обладает возможностью потоковой передачи, и я настоятельно рекомендовал использовать ее. У меня просто не было времени, чтобы освоиться с этим, прежде чем мне пришлось принимать решение, поэтому я пошел с тем, что знал.
Хотя я хотел бы использовать WCF по всем направлениям для симметрии, т. Е. Для апериодических и потоковых данных, этот гибридный подход хорошо мне помог.
Надеюсь, это поможет.