Какой самый быстрый и простой способ связи между двумя процессами в C #?

1

Из моего основного приложения С# я запускаю много подчиненного процесса с Process.Start метода Process.Start. (на том же ПК)

Перед запуском этого подчиненного процесса я сериализую некоторые данные (у меня есть сериализованный класс) в файлах XML, которые передаются в аргументах класса Process.

В каждом подчиненном процессе эти данные десериализуются и вычисляются. Новая сериализация выполняется для XML, чтобы отправить результат в основной процесс.

Мои приложения работают, но производительность очень плохая. Время операции сериализации/десериализации слишком велико, так как размер каждого файла XML составляет около 1,5 Mo...

Мне действительно нужна высокая производительность для этой простой связи между основным приложением и подчиненным процессом.

Как я могу легко изменить свой код, чтобы улучшить эту производительность? Nb: в будущем мой основной процесс будет состоять из 64 бит, а подчиненный процесс - в 32 бита.

Я слышал, что некоторые приложения позволяют виртуализировать жесткий диск в ОЗУ? Он существует? Это бесплатно?

Я слышал о WCF, Named Pipe, Memory Mapped и т.д., Но мне кажется, что это тяжело использовать...?

Теги:
deserialization
serialization
ipc

2 ответа

2
Лучший ответ

Файлы с отображением памяти (MMF) - это самый быстрый метод. Проблема, хотя вы указываете, заключается в сериализации, а не в передаче. Сериализация необходима для любого транспорта, даже MMF (за исключением простейших случаев, когда у вас есть простые записи данных, которые могут быть изложены последовательно в памяти). XML не быстрый - двоичная сериализация любого рода будет работать намного лучше.

  • 2
    На самом деле. Использование простого BinaryWriter может быть самым быстрым способом.
0

Используйте SlimSerializer отсюда: https://github.com/aumcode/nfx/tree/master/Source/NFX/Serialization/Slim

сотни тысяч транзакций сериализации на секунду в одном потоке - для объекта "типичный человек" (имя, адрес, контактная информация, зарплата)

Также посмотрите этот пост о Клей

Клей предназначен для "склеивания" процессов вместе очень эффективно

видео

Другое видео (на русском)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню