2008-09-11 4 views
47

Я использовал IPC в коде win32 некоторое время назад. [Критические разделы, события & семафоры]Механизмы IPC в C# - Использование и лучшие практики

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

+1

Что вам нужно сделать? Если вам нужно синхронизировать доступ к некоторому внешнему ресурсу, вы можете использовать Mutex для реализации межпроцессной синхронизации. – 2010-02-22 15:41:43

+4

+1. Слава Богу. Это первый случай вопросов с ароматом «Best Practices», который не отмечен как неконструктивный/не по теме [который я когда-либо видел] !! – 2015-07-26 10:25:35

ответ

26

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

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

и конечно MSDN on WCF

+5

Эй, видео в первой ссылке мертво! – 2011-06-08 17:30:27

3

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

+0

Действительно ли Microsoft когда-либо говорила об этом? – Mark 2009-08-18 14:37:49

+0

Не знаю. Это просто моя догадка. – ibz 2009-08-24 06:02:52

+9

У них есть: «Этот раздел посвящен устаревшей технологии, которая сохраняется для обратной совместимости с существующими приложениями и не рекомендуется для новой разработки.Распределенные приложения теперь должны разрабатываться с использованием Windows Communication Foundation (WCF) ». Http://msdn.microsoft.com/en-us/library/kwdt6w2k.aspx – Lucas 2010-06-19 03:01:43

10

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

3

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

10

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

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

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

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

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