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

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

8 Solutions collect form web for “Каков наилучший выбор для межпроцессного взаимодействия .NET?”

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

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

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

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

Раздел MSDN для WCF

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

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

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

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

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

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

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

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

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

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

  • Как процесс Win32 может получить pid своего родителя?
  • Process.Close () не завершает созданный процесс, c #
  • Получить возвращаемое значение из процесса
  • Убить некоторые процессы с помощью имени файла .exe
  • Как определить процесс создания / завершения процесса win32 в c ++
  • Асинхронный процесс начнется и дождитесь его завершения
  • Найти (и убить) процесс блокировки порта 3000 на Mac
  • Подождите, пока процесс не завершится
  • Правильный способ (в .NET) переключить фокус на другое приложение
  • События .NET для запуска исполняемого файла процесса
  • Запуск процесса в Java?
  • Interesting Posts

    Взгляд и чувство не обновляется в Swing JTabbedPane

    Как сделать загрузку асинхронных (AJAX) файлов с помощью iframe?

    Почему в проекте Android Studio есть два файла build.gradle?

    Передача файлов по сеансу SSH через два хоста

    Как преобразовать строку в double в C ++?

    Почему регистратор ARM PC указывает на инструкцию после следующего запуска?

    Какой Tyl Window Manager для Windows вы рекомендуете?

    Почему по умолчанию отключена аппаратная виртуализация?

    Приложения Windows 8 Metro не загружаются

    Как использовать функцию поиска в пользовательском представлении списка в Android

    Как сделать интерактивный глобус / землю для iPhone OpenGL ES?

    Java: Исключения в качестве streamа управления?

    Windows Phone 7 и собственный C ++ / CLI

    Проверьте установленные пакеты перед запуском install.packages ()

    Как создать резервную копию библиотеки iPhoto на внешний жесткий диск без использования Time Machine

    Давайте будем гением компьютера.