Перемещение больших объемов данных между доменами приложений - PullRequest
0 голосов
/ 21 марта 2012

У меня есть приложение с двумя доменами приложений.Один из этих доменов приложений динамически загружает библиотеки DLL, которые выполняют некоторые вычисления и генерируют большое количество выходных данных (хранящихся в EntityFramework EntityObject).

До сих пор я только что «возвратил» этот объект EntityObject другому домену приложения, когда он вызывает соответствующий метод.Конечно, в действительности это сериализация EntityObject и всех его данных.По мере того, как объем данных, содержащихся в этом объекте, растет, этот процесс стал огромным узким местом в приложении (иногда требуется минут для сериализации и десериализации).

В другом посте StackOverflow я видел, что MemoryMappedFile может быть решением, но я не уверен в семантике сериализации и десериализации объекта таким образом, и даже если это лучшее решение.Я также видел в другом месте, что обертывание в ObjectHandle якобы позволяет обмениваться данными в памяти, но это не сработало, когда я попробовал.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 21 марта 2012

Как показывает этот ответ , сериализации / десериализации, как правило, невозможно избежать без большого количества рефакторинга. Если у вас бутылочная горловина ввода-вывода, файлы с отображением в памяти могут помочь. Однако, если проблема заключается в затрачиваемом ЦП времени на сериализацию и десериализацию, попробуйте использовать более быстрый метод сериализации, такой как Protobuf.Net .

...