对象是否有任何与其当前机器和进程相关的头数据,如果有,该对象如何通过网络连接传输而不会使此类数据无效?我知道我不能通过网络连接直接将一个对象的二进制数据复制到另一台 pc/进程,而另一台机器上的另一个进程只是将二进制数据解释(转换)为一个对象。
是否有任何方法可以计算出从二进制数据 block (解析为对象)中切出多少数据可以证明使用序列化对象而不是仅传递二进制数据是合理的。
最佳答案
.net 对象只能通过两种方式跨进程边界传输:序列化和 MarshalByRef。
序列化
这只是获取对象上(大多数)字段的值并将它们存储在 SerializationInfo 中实例。然后,您选择的格式化程序将其转换为 Stream 上的字节。这没有您提到的“ header 信息”……它通常具有定义类型的类型名称和程序集全名。
MarshalByRefObject
这是一个 .NET remoting基类,这意味着来自其他应用程序域的方法调用可能会跨 AppDomain 边界编码到这个,使您的对象的用户觉得他们有对您的对象的引用。在这种情况下,外部 AppDomain 仅持有您的对象的代理。该代理持有相关信息。
关于c# - 如何在不使 header 信息无效的情况下通过网络传输发送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915556/