Механизмы IPC в C # - Использование и лучшие практики - PullRequest
51 голосов
/ 11 сентября 2008

Я использовал IPC в коде win32 некоторое время назад. [Критические разделы, события и семафоры]

Как сцена в среде .NET? Есть ли учебник, объясняющий все доступные варианты и когда использовать и почему?

Ответы [ 6 ]

30 голосов
/ 11 сентября 2008

Самым последним материалом Microsoft в IPC является Windows Communication Foundation . На самом деле на нижнем уровне нет ничего нового (tcp, upd, именованные каналы и т. Д.), Но WCF значительно упрощает разработку IPC.

Полезный ресурс:

и, конечно, MSDN на WCF

11 голосов
/ 27 сентября 2011

Помимо очевидного (WCF), существует привязка ZeroMQ для C # / CLR, что довольно неплохо:

http://www.zeromq.org/bindings:clr

Имеет ли IPC, pub / sub и другие стратегии, ориентированные на сообщения, намного меньше кода и конфигурации, чем WCF.

Это также, по крайней мере, на порядок быстрее, чем что-либо еще, и имеет меньшую задержку, если вам требуется связь с малой задержкой.

С учетом семафоров, блокировок, мьютексов и т. Д. Если вы делитесь общением, а не общением, у вас будет меньше нагрузки, чем в традиционной парадигме.

10 голосов
/ 11 сентября 2008

Я склонен использовать именованные каналы или сокеты Unix (в зависимости от того, нацеливаюсь ли я на MS.NET или Mono - у меня есть класс, который абстрагирует его), поскольку он прост в использовании, переносим и позволяет легко взаимодействовать с неуправляемым кодом. Тем не менее, если вы имеете дело только с управляемым кодом, используйте WCF или удаленное взаимодействие - последнее, если вам нужна поддержка Mono, поскольку их поддержки WCF просто еще нет.

6 голосов
/ 03 января 2012

Я бы порекомендовал использовать файлы с отображением в памяти, если вам нужно использовать на домене машины не связь через сеть. Смотрите следующую ссылку.

http://techmikael.blogspot.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html

3 голосов
/ 11 сентября 2008

Звучит так, как будто вы заинтересованы в технике синхронизации, а не в общении. Если это так, вы можете начать здесь , или, возможно, этот более краткий обзор 1004 *.

3 голосов
/ 11 сентября 2008

Существует также .NET Remoting, что мне показалось довольно классным, но я думаю, что они устарели теперь, когда у них есть WCF.

...