2

我正在为嵌入式设备开发一些应用程序;它们应该与使用 C# 2.0 嵌入的 Windows CE 5.0 和 XP 兼容。应用程序应该交换通常代表事件的小消息。我使用 TCP 套接字和充当调度程序的单独服务器(使用 pub/sub 模式)实现了第一个原型。它有效,但我想知道使用 MSMQ 是否会是一个更好的解决方案。在某些情况下,持久化消息会对我有所帮助,但通常所有事件都应该由目标应用程序立即使用。我想知道这两种解决方案的利弊以及一些帮助我做出决定的指导方针。

谢谢

4

2 回答 2

3

好吧,消息队列非常适合通过事务队列保证交付。这有助于使您的系统能够抵御崩溃和意外重启。但这通常只有在您可以从此类事故中重新启动您的应用程序并能够在您再次开始接收消息之前恢复状态时才能正常工作。

这是一个不平凡的要求。如果你不能满足它,任何有状态的消息都会让机器再次宕机。消息中几乎总是有明确的状态,即使它们的内容不是有状态的,只是通过它们被接收的顺序和改变你的程序状态。这一直是中间件的诅咒,假设网络是一个可以抽象出来的实现细节的软件在实践中效果不佳。

我认为SO的这个答案特别好地表达了这个问题。

于 2010-11-19T15:09:48.593 回答
2

我倾向于抽象出一个接口并基于接口实现它们并将决策作为配置项。让用户根据他们潜在变化的需求选择协议。

于 2010-11-19T15:14:22.540 回答