Механизмы IPC в C# — использование и лучшие практики

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

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Решение

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

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

и конечно MSDN в WCF

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

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

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

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

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

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

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

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

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

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

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

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