2010-11-19 91 views
2

我正在为嵌入式设备开发一些应用程序;它们应该与使用C#2.0嵌入的Windows CE 5.0和XP兼容。 应用程序应交换通常表示事件的小消息。 我使用TCP套接字和作为调度程序的独立服务器(使用pub/sub模式)实现了第一个原型。它工作,但我想知道如果使用MSMQ将是一个更好的解决方案。持久的消息会在几种情况下帮助我,但通常所有事件都应该由目标应用程序立即使用。 我想知道这两种解决方案的优缺点,以帮助我做出决定。嵌入式系统:插座与MSMQ

谢谢

回答

3

好,消息队列是伟大的,它保证了交付事务性队列。这有助于使您的系统适应崩溃和意外的重新启动。但是,如果您可以从这样的灾难中重新启动应用程序,并且能够在再次开始接收消息之前恢复状态,那么这通常只会奏效。

这是一个不平凡的要求。如果你不能满足它,任何有状态的消息往往会使机器再次失败。消息中几乎总是显式的状态,即使它们的内容不是有状态的,仅仅依靠它们的接收顺序并改变程序状态。这一直是中间件的祸害,假设网络是可以被抽象出来的实现细节的软件在实践中并不适用。

我以为this answer在SO表达这个问题特别好。

2

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