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

StackOverflow https://stackoverflow.com/questions/84855

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

Раздел MSDN для WCF

Другие советы

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

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

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

Удаленное взаимодействие в .NET Framework 2.0 обеспечивает IPC - канал для межпроцессного взаимодействия внутри одной машины.

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

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

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

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

Удаленное взаимодействие .Net само по себе не является протоколом.Это позволяет вам выбрать, какой протокол использовать:SOAP, именованные каналы и т.д.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top