2010-04-15 43 views
0

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

+0

搜索“序列化”,您可以传输对象的状态,但它的定义必须已经存在于主机上 – fabrizioM 2010-04-15 07:15:44

+0

序列化将只保存状态,而不是方法。我的意图是转移一个完整的对象,以便接收者可以调用它知道的方法。接受者对该对象没有任何其他的东西。序列化在这种情况下不会有帮助。 – Kapil 2010-04-15 07:27:35

+0

如何序列化数据,然后通过包含函数的程序集完成数据发送;​​-)这实际上就是您要求的。 – dnolan 2010-04-15 07:40:33

回答

1

“转储包含方法”,这将取决于语言和运行时间很多。

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

“发送方法”可能意味着所有类型的事情:与收件人协商,看他们是否有某些程序集(编译代码),如果没有,则发送它们(或告诉它从某处下载),然后发送数据用来实例化对象。自动执行此操作通常会带来巨大的安全风险!因此它很少自动发生。

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

使用JavaScript等非常动态的语言,代码和数据之间的分工更加无缝。下面的声明大致相当于一个方法的对象:

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

文本的这段代码可以通过网络发送出去,然后接收方可以使用eval把它变成一个实际的对象:

c.increment(); 
c.increment(); 

alert(c.counter); // displays 7 

同样,这基本上是现代网页的内容:声明结构(HTML)和小块可执行脚本的组合,它们通过互联网发送。

相关问题