У меня есть приложение с двумя AppDomains. Один из этих AppDomains динамически загружает DLL, которые выполняют некоторые вычисления и производят большой объем выходных данных (хранящихся в EntityFramework EntityObject).Перемещение больших объемов данных между AppDomains
До сих пор я только что возвращал этот EntityObject в другой AppDomain, когда он вызывает соответствующий метод. Конечно, в действительности это сериализует EntityObject и все его данные. По мере того, как количество данных, которые этот объект держится, выросло, этот процесс стал огромным узким местом в приложении (иногда принимал минут для сериализации и десериализации).
Я видел в другом столбце StackOverflow, что MemoryMappedFile может быть решением, но я не уверен в семантике, чтобы сериализовать и десериализовать объект таким образом, и даже если это лучшее решение. Я также видел в другом месте, что перенос в ObjectHandle предположительно позволяет передавать данные в памяти, но это не сработало, когда я его попробовал.
Спасибо за любую помощь.
Как перенести данные через AppDomains с помощью этого сериализатора? У вас есть пример? – MgSam
Я знаю, что это старо, но вот новые взгляды на эту проблему. Попытайтесь использовать службы WCF или избавиться от маршалаByObjectRef. В случае WCF вы, вероятно, используете конфигурацию конечных точек named/service/client с двунаправленной связью (я предполагаю, что вы хотите сохранить объекты синхронизации) ... с другой стороны MarshalByObjectRef поддерживается для обратной совместимости, и нет ничего плохого в продолжении использования, и я сомневаюсь, что он будет удален из любой новой платформы .NET. WCF назвал пример труб http://goo.gl/vEo74e и для MarshalByRef http://goo.gl/JdJViR –