在AppDomains之间移动大量数据

时间:2012-03-20 22:10:08

标签: c# .net serialization appdomain memory-mapped-files

我有两个AppDomains的应用程序。其中一个AppDomains动态加载DLL,这些DLL执行一些计算并生成大量输出数据(存储在EntityFramework EntityObject中)。

到目前为止,我刚刚在调用适当的方法时将此EntityObject“返回”到其他AppDomain。当然,实际上,这是序列化EntityObject及其所有数据。随着此对象所拥有的数据量的增长,此过程已成为应用程序中的一个巨大瓶颈(有时需要分钟来序列化和反序列化)。

我在另一篇StackOverflow帖子中看到MemoryMappedFile可能是一个解决方案,但我不确定以这种方式序列化和反序列化对象的语义,即使这是最好的解决方案。我还在其他地方看到,在ObjectHandle中包装可能会允许数据在内存中共享,但是当我尝试它时这不起作用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

this answer所示,如果没有大量重构,通常无法避免序列化/反序列化。如果您的瓶颈是I / O,则内存映射文件可以提供帮助。但是,如果瓶颈是用于序列化和反序列化的CPU时间,那么请尝试使用更快的序列化方法,例如Protobuf.Net