二进制格式化程序对MSMQ有用吗?

时间:2013-08-23 21:39:33

标签: .net c#-4.0 message-queue

我正在使用MSMQ来传递XML。但是,我想让队列更通用,让它接受类实例作为消息。这让人想起需要二进制格式化程序。

我一直在阅读有关二进制格式化程序和MSMQ的内容。似乎通过使用二进制格式化程序,我正在使MSMQ做一些它真的不应该做的事情。换句话说,我现在正在MSMQ上传递基于二进制的数据,而它想要变得非常轻且基于字符串。或者我有错吗?

我所读到的是,更复杂的数据类型(即二进制)应存储在数据库中。但是,这可能会出现问题,因为这些数据是可序列化的。

我传递的数据不是基于流的。

如果我要利用MSMQ,它是否应该严格用于基于字符串的消息而不是二进制?

1 个答案:

答案 0 :(得分:0)

  

似乎通过使用二进制格式化程序,我正在让MSMQ做一些它本不应该做的事情。

你被误导了。实际上,MSMQ附带了自己的BinaryMessageFormatter类,当你想以某种灵活性为代价来提高速度时,它显然是有用的。

文档可以这样说:

  

BinaryMessageFormatter非常有效,可以用来   序列化大多数对象。结果非常紧凑,解析速度快,   但不允许松散耦合的消息传递   XmlMessageFormatter。松散耦合意味着客户端和   服务器可以独立地对发送的类型进行版本控制   接收。

     

当应用程序使用实例发送消息到队列时   在MessageQueue类中,格式化程序将对象序列化为   流并将其插入到邮件正文中。从队列中读取时   使用MessageQueue,格式化程序将消息数据反序列化为   消息的Body属性。

     

BinaryMessageFormatter提供的吞吐量比   XmlMessageFormatter。纯速时使用BinaryMessageFormatter   而不是松散耦合的消息传递。