我有相当大的对象实例集合(> 100mb),我需要在同一台机器上的两个进程之间共享。有没有办法分享这些集合而无需序列化/反序列化?
我考虑过一个消息总线,但后来我需要序列化/反序列化对象实例,这是一个禁忌,因为开销过于耗时。内存映射文件似乎也涉及将对象实例序列化为文件。
我在Windows 7操作系统上定位C#/。Net 4.5。
由于
答案 0 :(得分:1)
您无法在流程之间共享实时对象。
您不能强制.NET将对象保存在内存映射的内存中和/或将对象附加到"数据"存在于存储器映射的存储区域中。
曾几何时,.NET Remoting在进程之间进行通信......这是非常低级别的......它仍然存在,但已经过时了。通过使用内部黑魔法,有时(见https://stackoverflow.com/a/7553467/613130)而不是序列化/反序列化对象,它能够创建一个"代理"一方面访问另一方的数据。请注意,显然这很慢。啊......代理对象并非真正"本地" ...我认为非所有者必须打电话给对象的所有者("服务器&#34 ;)对代理对象进行任何操作。所以他们分享了#34;就像你在HD上分享一个文件:"客户"计算机可以读取它,但要阅读它,"服务器"必须阅读它并将读取的数据发送到"客户端"。