0

我从http://social.msdn.microsoft.com/Forums/en/roboticsdss/thread/3169a539-f536-4b9d-bae7-01212a857660看到并且从我自己使用和调试 DSS 服务的经验来看,DSS 使用克隆进行节点内通信,使用克隆+序列化进行节点间通信。我请求你帮助理解这个机制。对于节点内通信,我知道 DSS 仅使用克隆,因为我们在同一进程空间中传输对象(不需要通过网络进行通信),并且我们不希望任何不需要的共享内存依赖项。但是,在节点间通信的过程中,为什么需要克隆+序列化呢?从我对序列化的理解来看,当你序列化一个对象时,你在序列化结束时得到的输出是完全独立于被序列化的对象的,可以单独使用来构造一个新的对象。此外,在序列化过程中,我不认为我们要更新原始对象,我们只是要从中读取。在这种情况下,单靠序列化是不够的吗?为什么我们需要在序列化之前进行克隆?

谢谢,

文卡特

4

1 回答 1

0

通常,DSS 使用生成的代理类型序列化消息,因此如果使用原始类型构造消息,则在序列化之前将首先将其转换为代理类型(隐式克隆操作)。另一方面,如果使用代理类型构造消息,则在序列化之前没有单独的克隆步骤(为合作伙伴使用代理类型的一个很好的理由)。

如果一个消息类型(或更严格的消息体类型)实现了 IDssSerializable,那么行为取决于该类型的具体实现(因为这绕过了通常的代理机制)

于 2013-05-04T00:37:06.567 回答