随着我们转向面向服务的体系结构,我们已经开始研究使用 Windows Azure 服务总线来替代我们当前的队列。
大多数文档都很清楚;但是,我很难确定BrokeredMessage
在提供正文时使用哪种类型的序列化。
例如,假设我实例化了一个BrokeredMessage
对象,如下所示:
ICommand sendMessageCommand = new SendMessageCommand
{
Title = "A new message title",
Body = "A new message body"
};
BrokeredMessage brokeredMessage = new BrokeredMessage(sendMessageCommand);
queueClient.Send(brokeredMessage);
SendMessageCommand
是用[Serializable]
属性标记的简单 DTO;在我们的旧队列中,这是二进制序列化的,因此可以更快地存储它并保留它的元数据。这对我们很重要,因为我们使用队列使用此处概述的模式发送命令,接收 Worker Role 使用泛型和动态类型的混合反序列化命令。
然而,根据这篇文章,传递给构造函数的主体BrokeredMessage
是“Binary XML Serialized”。我的假设是这是标准的 XML 序列化,然后通过二进制格式化程序,对吗?
除此之外; 这是否意味着如果我要使用默认的BrokeredMessage
消息正文功能;我必须确保所有对象都是 XML 可序列化的,包括出现的所有问题?(私有字段丢失,没有使用泛型反序列化的元数据,xml序列化属性)
最后; 如果是这种情况;有没有简单的方法解决这个问题?我正在考虑进行我们自己的二进制序列化,然后将其存储byte[]
在BrokeredMessage
.