Как обмениваться данными между двумя процессами?

Возможный дубликат:
IPC Механизмы в C # - использование и передовые методы

У меня есть два разных процесса: A и B.

Процесс A хочет отправить процессу B некоторые данные (массив байтов, строк, структур и т. Д.). Итак, предположим, что A необходимо отправить следующий буфер:

var buffer = new byte[100].
SendToAnotherProcess(B, buffer);

И B нужно получить этот буфер:

byte[] buffer;
ReceiveFromAnotherProcess(A, out buffer);

Какое решение для этого проще всего?


person Nick    schedule 30.11.2012    source источник
comment
Межпроцессное взаимодействие Google Windows.   -  person Ondrej Tucny    schedule 30.11.2012


Ответы (4)


Вы можете использовать Named Pipe. Если это C # 4.0 и выше, вы также можете использовать файл с отображением памяти

person Tilak    schedule 30.11.2012
comment
+1 для названной трубы. Использование файлов с отображением памяти может быть проблематичным, если не реализовано должным образом. - person Alex Essilfie; 30.11.2012

Есть множество вариантов. Чтобы назвать несколько низкоуровневых механизмов IPC:

  • именованные каналы
  • Общая память
  • Сокеты TCP / IP

Также есть несколько вариантов более высокого уровня:

  • Удаленное взаимодействие .NET
  • WCF
person Ondrej Tucny    schedule 30.11.2012

Один из распространенных способов - использовать файлы для связи между обработанными.

Каждый может писать в определенный файл, из которого читает другой.

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

person Oded    schedule 30.11.2012
comment
Реестр как механизм IPC. Это довольно ужасно. - person David Heffernan; 30.11.2012
comment
@DavidHeffernan - Видел это раньше ... - person Oded; 30.11.2012
comment
Ах, теперь вы упомянули WCF. Это немного больше похоже. - person David Heffernan; 30.11.2012

В .net есть специальный инструмент:

.Net Remoting

WCF

person Kirill Bestemyanov    schedule 30.11.2012