Подтвердить что ты не робот

Каков наилучший выбор для межпроцессного взаимодействия .NET?

Должен ли я использовать Named Pipes или .NET Remoting для связи с запущенным процессом на моей машине?

4b9b3361

Ответ 1

WCF - лучший выбор. Он поддерживает несколько различных механизмов транспорта (включая Named Pipes) и может быть полностью сконфигурирован. Я настоятельно рекомендую вам взглянуть на WCF.

Вот блог, который делает сравнение производительности WCF vs Remoting.

Цитата из блога:

WCF и .NET Remoting действительно сопоставимы по производительности. Различия настолько малы (измеряя латентность клиента), что не важно, какая из них немного быстрее. WCF имеет гораздо лучшую пропускную способность сервера, чем .NET Remoting. Если бы я начал полностью новый проект, я бы выбрал WCF. В любом случае WCF делает гораздо больше, чем Remoting, и для всех тех функций, которые мне нравятся.

Раздел MSDN для WCF

Ответ 2

Если это на одной машине, Named Pipes дает вам лучшую производительность и может быть реализовано с помощью удаленной инфраструктуры, а также WCF. Или вы можете просто использовать System.IO.Pipes.

Ответ 3

Если вы имеете в виду межпроцессное общение, я использовал .NET Remoting без каких-либо проблем. Если два процесса находятся на одной машине, связь выполняется довольно быстро.

Именованные каналы, безусловно, более эффективны, но они требуют разработки, по крайней мере, базового протокола приложения, что может оказаться невозможным. Remoting позволяет вам легко запускать удаленные методы.

Ответ 4

Remoting в .NET Framework 2.0 обеспечивает канал IPC для межпроцессного взаимодействия на одном компьютере.

Ответ 5

Если вы используете .NET Framework 3.0 или выше, я бы использовал WCF. Используя WCF, вы можете использовать различные привязки, зависящие от компромисса между производительностью /interop/etc. что вам нужно.

Если производительность не является критичной, и вам нужно взаимодействовать с другими технологиями веб-сервисов, вы захотите использовать привязку WS-HTTP. Для вашего случая вы можете использовать WCF с привязкой net-tcp или привязкой named-pipe. Либо надо работать.

Мой личный подход заключается в том, что подход WCF более чист, так как вы можете выполнять службы, основанные на контрактах, и фокусироваться на сообщениях, а не на объектах (я делаю обобщение здесь на основе моделей программирования по умолчанию для WCF/.NET Remoting), Мне не нравится отправлять объекты через провод, потому что много семантической информации теряется или неясно. Когда все, что вы делаете, отправляет такое сообщение, как вы с WCF, становится легче разделить свои проблемы между связью и классами/инфраструктурой, из которых состоит один node.

Ответ 6

.Net удаленный доступ не является протоколом сам по себе. Он позволяет выбрать, какой из протокалов использовать: SOAP, named-pipe и т.д.

Ответ 7

WCF также обеспечивает гибкость. Просто изменив конфигурацию (привязку), вы можете иметь одну и ту же услугу на какой-либо другой машине, а не IPC на одном компьютере. Поэтому ваш код остается гибким.

Ответ 8

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