2014-03-03 34 views
0

我通过Pub-Sub模型通过ZMQ发送数据。反序列化通过ZMQ发送的两个对象

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

我的发布者程序将序列化A类,有时是B类,并通过ZMQ发送它们。我的客户程序如何知道哪个类型的类被发送并相应地转换它?我试着做下面的代码和消息框显示MsgPack.MessagePackObject。

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

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

我已经搜索了1小时的答案,但我找不到。希望SO会有所帮助。由于我是新手,请温和我一下。谢谢。

+0

查找到的主题和发布/订阅信封顶级消息类型。 http://zguide.zeromq.org/page%3aall#Pub-Sub-Message-Envelopes – engineerC

回答

0

无法使用MessagePack(安全地)执行此操作,因为它是无模式序列化。您有两个选项 -

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

  2. 使用protobuf的,而不是信息包,并有包含两个可选的消息类型为A和B.

相关问题