2016-07-18 2 views
0

В настоящее время у меня есть служба Windows и отдельный клиент GUI, ориентированный на .NET 3.5, и пытаюсь найти лучший способ получить двунаправленную связь между этими двумя процессами. Оба процесса будут работать на одной машине Windows.Методы IPC для службы Windows

Microsoft Interprocess Communications page, по-видимому, предлагает использовать RPC, трубы или сокеты для данного конкретного сценария.

Я решил, что Именованные трубы, кажется, удовлетворяет моим требованиям, но оглядываясь, я также столкнулся с .NET Remoting. Похоже, что .NET Remoting был интегрирован в WCF как from .NET 3.0. Из того, что я понимаю, WCF использует «именованные каналы» для связи between processes, поэтому я предполагаю, что удаленные .NET и «именованные каналы» каким-то образом перекрываются.

Может кто-нибудь прояснить это, пожалуйста? Я хотел бы понять, должен ли я использовать Именованные трубы, . NET Remoting или WCF.

+0

[WCF] (https://msdn.microsoft.com/en-us/library/ms731082 (v = vs.110) .aspx) и .NET Remoting - аналогичные технологии с .NET Remoting, по существу, являющиеся более старой версией WCF. Именованные каналы - это механизм связи, и он может использоваться WCF (так можно TCP, HTTP, MSMQ и т. Д.). Что именно вы подразумеваете под двунаправленным? – leetibbett

+0

Двунаправленным я имею в виду, что как сервис, так и процесс gui должны иметь возможность отправлять и получать данные. –

ответ

1

WCF заменил как .NET Remoting, так и старые (теперь устаревшие) веб-службы ASMX. Связывание WCF NetNamedPipe является дуплексом (т. Е. Поддерживает двунаправленную связь), и поскольку клиент (приложение GUI) и служба Windows находятся на одной машине, именованные каналы являются идеальными.

Однако, чтобы использовать WCF, вам нужно будет написать службу WCF и использовать службу Windows для ее размещения, при этом приложение GUI будет действовать как клиент. Это вполне возможно сделать, и в Интернете есть много примеров того, как разместить службу WCF в службе Windows.

Смежные вопросы