我可以在同一台机器上的两个进程之间共享类实例而不必序列化/反序列化吗?

本文关键字:实例 共享 之间 不必 序列化 反序列化 进程 一台 机器 我可以 两个 | 更新日期: 2023-09-27 18:07:35

我有相当大的对象实例集合(>100mb),我需要在同一台机器上的两个进程之间共享。有没有一种方法可以共享这些集合而不必序列化/反序列化?

我考虑过消息总线,但随后我需要序列化/反序列化对象实例,这是不允许的,因为开销太费时。此外,内存映射文件似乎涉及到对象实例到文件的序列化。

我瞄准c#/。Net 4.5在Windows 7操作系统上。

谢谢

我可以在同一台机器上的两个进程之间共享类实例而不必序列化/反序列化吗?

进程间不能共享活动对象

你不能强迫。net在内存映射区域中保留对象和/或将对象附加到内存映射区域中的"数据"上。

曾经有。net Remoting在进程之间通信…这是非常非常低的水平……它仍然存在,但已经过时了。通过使用内部黑魔法,有时(参见https://stackoverflow.com/a/7553467/613130),而不是序列化/反序列化对象,它能够在一端创建一个"代理"来访问另一端的数据。请注意,这显然是缓慢的。啊…代理对象并不是真正的"本地"……我认为非所有者必须调用对象的所有者("服务器")才能对代理对象进行任何操作。所以它们是"共享"的,就像你在HD上共享文件一样:"客户端"计算机可以读取它,但要读取它,"服务器"必须读取它并将读取的数据发送给"客户端"。