我正在为嵌入式设备开发一些应用程序;它们应与使用C#2.0嵌入的Windows CE 5.0和XP兼容。 应用程序应交换通常代表事件的小消息。 我使用TCP套接字和作为调度程序的单独服务器(使用pub / sub模式)实现了第一个原型。它有效,但我想知道使用MSMQ是否是一个更好的解决方案。在几种情况下,保留消息可以帮助我,但通常所有事件都应该由目标应用程序立即使用。 我想知道两种解决方案的优缺点,以及一些帮助我做出决定的准则。
谢谢
答案 0 :(得分:3)
好吧,消息队列非常适合在事务队列中保证传递。这有助于使您的系统适应崩溃和意外重启。但是,当您可以从这样的事故中重新启动应用程序并且能够在再次开始接收消息之前恢复状态时,这通常会很有效。
这是一项非平凡的要求。如果您无法满足它,任何有状态的消息往往会再次关闭机器。消息中几乎总是存在明确的状态,即使它们的内容不是有状态的,只需按接收顺序并改变程序状态即可。这是中间件的诅咒,这种软件假设网络是一个可以抽象出来的实现细节,但在实践中效果不佳。
我认为this answer在SO上表达了这个问题特别好。
答案 1 :(得分:2)
我倾向于抽象出一个接口并根据接口实现它们并将决策作为配置项。让用户根据他们可能不断变化的需求选择协议。