【问题标题】:Deserializing two objects sent via ZMQ反序列化通过 ZMQ 发送的两个对象
【发布时间】:2014-03-03 17:32:34
【问题描述】:

我通过 Pub-Sub 模型通过 ZMQ 发送数据。

我有 2 个类,一个叫 A 类,包含两个字符串,另一个是 B 类,包含两个双精度。

我的发布者程序将序列化 A 类,有时还会序列化 B 类,并通过 ZMQ 发送它们。我的客户端程序如何知道发送了哪个 typeof 类并相应地转换它?我尝试执行以下代码,消息框显示 MsgPack.MessagePackObject。

var ser = MsgPack.Serialization.MessagePackSerializer.Create<object>();                   
object unpack = ser.Unpack(stream);
MessageBox.Show(unpack.GetType().ToString());

我希望得到像 Class A 或 Class B 这样的类型,我会做一个 if 语句。如果类型是 A 类,我将其转换为 A 类并执行所需的操作。如果类型是 B 类,我将其转换为 B 类并执行所需的操作。

我已经搜索了 1 小时的答案,但我找不到。希望SO会有所帮助。请对我温柔一点,因为我是新手。谢谢。

【问题讨论】:

标签: c# zeromq


【解决方案1】:

您不能(安全地)使用 MessagePack 进行操作,因为它是无模式序列化。你有两个选择-

  1. 为包含消息类型(A 或 B)的 zeromq 消息添加一个字节前缀。

  2. 使用 protobuf 代替 message-pack,并具有包含 A 和 B 两种可选消息类型的顶级消息类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 2018-08-01
    • 2016-03-31
    相关资源
    最近更新 更多