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

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

Вау, я просто задал тот же вопрос ... stackoverflow.com/questions/84860/…

Kris Erickson 17.09.2008 20:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
83
1
86 806
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

Маловероятно, что они улучшат удаленное взаимодействие. От кого-то из команды удаленного взаимодействия / WCF: «В удаленное взаимодействие вложены очень минимальные вложения в разработку. WCF является преемником удаленного взаимодействия». Отсюда stackoverflow.com/questions/1294494/…

MarkJ 27.08.2009 16:30

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

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

WCF по именованным каналам тоже позволяет это. И вы можете просто использовать одну и ту же сборку контрактов в обоих процессах.

Kent Boogaart 17.09.2008 21:42

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

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

Ответ принят как подходящий

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

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

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

The WCF and .NET Remoting are really comparable in performance. The differences are so small (measuring client latency) that it does not matter which one is a bit faster. WCF though has much better server throughput than .NET Remoting. If I would start completely new project I would chose the WCF. Anyway the WCF does much more than Remoting and for all those features I love it.

Раздел MSDN для WCF

Еще одно свидетельство в пользу удаленного взаимодействия. От кого-то из команды удаленного взаимодействия Microsoft / WCF: «Вложения в развитие удаленного взаимодействия минимальны. WCF является преемником удаленного взаимодействия». Отсюда stackoverflow.com/questions/1294494/…

MarkJ 27.08.2009 16:31

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

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

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

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

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

Список IPC API для .NET: weblogs.asp.net/ricardoperes/…

Ricardo Peres 16.10.2015 16:21

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