我有一个包含两个AppDomain的应用程序。其中一个AppDomain动态加载执行一些计算并生成大量输出数据(存储在EntityFramework EntityObject中)的DLL。在应用程序域之间移动大量数据
到目前为止,当它调用适当的方法时,我刚刚将这个EntityObject“返回”到另一个AppDomain。当然,实际上,这是序列化EntityObject及其所有数据。随着此对象数据量的增长,此过程已成为应用程序中的一个巨大瓶颈(有时需要分钟来序列化和反序列化)。
我在另一个StackOverflow文章中看到,MemoryMappedFile可能是一个解决方案,但我不确定以这种方式序列化和反序列化对象的语义,即使这是最佳解决方案。我也在其他地方看到,包装在ObjectHandle中的应用程序允许数据在内存中共享,但在尝试时却不起作用。
感谢您的任何帮助。
如何使用此序列化程序跨AppDomain移动数据?你有一个例子吗? – MgSam 2012-03-21 14:09:59
我知道这是旧的,但这里是关于这个问题的新景点。尝试使用WCF服务或deplaticated MarshalByObjectRef。在WCF的情况下,您可能会使用具有双向通信的命名管道服务/客户端端点配置(我假定您希望保留同步对象)......另一方面,为保持向后兼容性而保留MarshalByObjectRef,并且没有任何错误继续使用它,我怀疑它会从任何新的.NET框架中删除。 WCF命名管道示例http://goo.gl/vEo74e和MarshalByRef http://goo.gl/JdJViR – 2013-08-03 14:39:53