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

C# 我可以在同一台机器上的两个进程之间共享类实例而不必序列化/反序列化吗?,c#,windows-7,named-pipes,memory-mapped-files,C#,Windows 7,Named Pipes,Memory Mapped Files,我有相当大的对象实例集合(>100mb),需要在同一台机器上的两个进程之间共享。有没有一种方法可以在不必序列化/反序列化的情况下共享这些集合 我考虑使用消息总线,但随后需要序列化/反序列化对象实例,这是不可能的,因为开销太耗时。此外,内存映射文件似乎还涉及将对象实例序列化为文件 我的目标是Windows7操作系统上的C#/.NET4.5 谢谢您不能在进程之间共享活动对象 您不能强制.NET在内存映射区域中保留对象和/或将对象附加到内存映射区域中的“数据” 从前有一个.NET远程处理来在进程之间进

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

我考虑使用消息总线,但随后需要序列化/反序列化对象实例,这是不可能的,因为开销太耗时。此外,内存映射文件似乎还涉及将对象实例序列化为文件

我的目标是Windows7操作系统上的C#/.NET4.5


谢谢

您不能在进程之间共享活动对象

您不能强制.NET在内存映射区域中保留对象和/或将对象附加到内存映射区域中的“数据”


从前有一个.NET远程处理来在进程之间进行通信。。。这是非常非常低的水平。。。它仍然存在,但已经过时。通过使用内部黑魔法,有时(请参阅)它可以在一端创建一个“代理”来访问另一端的数据,而不是序列化/反序列化对象。请注意,这显然是缓慢的。啊。。。代理对象并不是真正的“本地”。。。我认为非所有者必须调用对象的所有者(“服务器”),以便对代理对象进行任何操作。因此,它们是“共享”的,就像你在硬盘上共享一个文件一样:“客户端”计算机可以读取它,但要读取它,“服务器”必须读取它并将读取的数据发送给“客户端”。

你有没有考虑过使用数据库?@VladimirMezentsev,数据库速度太慢,数据不会被重复使用。你说的“live object”是什么意思?@MattWolf a“real.net对象,而不是“序列化对象”…您可以轻松共享序列化对象:您可以将其放入(我指的是序列化数据)在一个内存映射文件中,多个进程可以读取它。我知道这一点,但我想知道管道或任何其他技术是否可以共享未序列化的文件objects@MattWolf正如我所写的:不。你不能使用内存映射,你当然不能使用其他技术。最终,在某个地方,对象将被序列化/反序列化/直接复制如果可以告诉.NET“在此内存地址附加一个对象”(因此将本机指针转换为托管指针),那么很多事情都是可能的…但这是不可能的…因此我提出了这个问题。感谢您的帮助和信息。