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

83

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

mrbradleyt
источник
1
Вау, я просто задал в точности тот же вопрос ... stackoverflow.com/questions/84860/…
Крис Эриксон

Ответы:

58

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

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

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

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

Раздел MSDN для WCF

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

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

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

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

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

иселава
источник
3

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

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

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

Джейсон Олсон
источник
2

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

Код Викрам I
источник
Список IPC API для .NET: weblogs.asp.net/ricardoperes/…
Рикардо Перес,
1

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

Джоэл Кохорн
источник
0

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

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