7

我知道以前有人问过这个问题。但是环顾四周,我仍然无法决定我应该走哪条路线。这是我的场景,希望你能帮忙:

我们将拥有一系列 Web 服务,这些服务将按计划被数百个移动应用程序访问。这些服务将在设备上提供数据,其中包含进入设备和从设备返回的新信息。从设备返回的数据将需要更新一个中央 SQL 服务器数据库,该数据库还为多个桌面应用程序和一个网站提供数据。

为了减少这些服务的请求/响应时间,我们决定在事后处理来自设备的数据,要么将它们粘贴在 MSMQ 实例中,要么将序列化对象存储在临时数据存储中并拥有Windows 服务稍后处理它们。

所以这是我的选择,但除此之外,还有一些可能会帮助你们给我建议的事情:

  • 从设备返回的数据不会以较小的消息包的形式返回,需要在服务器端订购。
  • 我对 MSMQ 一无所知,但我以前写过 Windows 服务。尽管如果需要,我可以毫无问题地选择 MSMQ。
  • 我想将设备的响应保留在某些地方,以防由于数据引起的某种原因处理失败。通过这种方式,我可以查询数据并查看是否存在问题,即设备允许用户添加评论,以扩展服务器端数据库中相关字段的长度。

有了这些信息,您认为值得我学习 MSMQ 还是我应该坚持使用更简单的解决方案?

克里斯。

4

1 回答 1

9

MSMQ 不是一个糟糕的选择,而且绝对不难学习,但请记住,您应该注意一些限制。

缺点:

  • 每个队列只能是 2GB。
  • 每条消息 4MB(尽管可以通过将 MSMQ 与 WCF 一起使用来修复 4MB 的限制)。
  • 仅适用于 Windows,因此您只能将其与 .NET、C/C++ 或 COM 库一起用于支持 COM 的环境。

优点:

  • 支持 Windows 网络负载均衡器。
  • 支持微软集群服务。
  • 与活动目录集成。
  • 随 Windows 一起提供。
  • 支持交易。
  • MSMQ 消息可以通过 Windows 事件日志中的审核消息进行跟踪。
  • 消息可以在发送时自动进行身份验证(签名)或加密,并在接收时进行验证和解密。

您可能要考虑的另一种方法是将数据写入临时表。这可能是一个好主意,因为您希望有一个消息回溯日志。

当我不了解系统的其余架构时,很难给出建议,但我希望这个答案能有所帮助。

有用的链接

在 .NET 中编程 MSMQ - 第 1 部分
将 MSMQ 与 WCF 结合使用

于 2009-01-27T15:17:53.857 回答