代码之家  ›  专栏  ›  技术社区  ›  Kapil

如何在内存中转储对象并将其传输?

  •  0
  • Kapil  · 技术社区  · 16 年前

    是否可以转储/保存内存中的对象,以便转储同时包含状态和方法,然后通过线路传输它?我主要使用的是C,但如果这可以在其他技术中实现,那应该是好的。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Daniel Earwicker    16 年前

    通过“dump包含方法”,这将很大程度上依赖于语言和运行时。

    在典型的静态类型的OO语言中,对象的方法是由其类型决定的,因此您只需要发送类型的标识符,假设接收者安装了相同的代码。接收者只是实例化一个该类型的空白对象,并用接收到的数据填充它。

    “发送方法”可能意味着各种各样的事情:与接收者协商,看看他们是否有特定的程序集(编译的代码),如果没有,那么发送它们(或者告诉它从某个地方下载它们),然后发送数据来实例化对象。自动这样做通常会带来巨大的安全风险!因此,它很少自动发生。

    这基本上就是Web服务器向您发送视频的方式。如果您没有所需的插件,它会让您下载它,然后向您发送数据以实例化插件的实例。

    使用一种非常动态的语言(如javascript),代码和数据之间的划分更加无缝。下面的声明大致相当于具有方法的对象:

    {
        counter: 5,
        increment: function() { this.counter++; }
    }
    

    此文本片段可以通过网络发送,然后收件人可以使用 eval 要将其转换为实际对象:

    c.increment();
    c.increment();
    
    alert(c.counter); // displays 7
    

    同样,这也是现代网页的本质:声明的结构(HTML)和通过Internet发送的小部分可执行脚本的组合。