我知道这个问题之前已经被问过。但环顾四周,我还是拿不定主意该走哪条路。以下是我的情况,希望对你有帮助:
我们将提供一系列网络服务,数百个移动应用程序将按计划访问这些服务。这些服务将在设备上提供数据,并将新信息发送到设备并从设备返回。从设备返回的数据需要更新单个中央 SQL 服务器数据库,该数据库还为多个桌面应用程序和网站提供数据。
为了减少这些服务的请求/响应时间,我们决定在事后处理来自设备的数据,方法是将它们粘贴在 MSMQ 实例中,或者将序列化对象存储在临时数据存储中,并让Windows 服务稍后处理它们。
这就是我的选择,但除此之外,还有一些可能对你们有帮助的建议:
- 从设备返回的数据不会以需要在服务器端排序的较小消息包的形式返回。
- 我对MSMQ一无所知,但我以前写过Windows服务。不过,如果需要的话,我可以毫无问题地选择 MSMQ。
- 我想将设备的响应保留在某个地方,以防处理由于数据引起的某种原因而失败。通过这种方式,我可以询问数据并查看是否存在问题,即设备允许用户添加注释以扩展服务器端数据库中相关字段的长度。
有了这些信息,您认为我值得学习 MSMQ 还是应该坚持使用更简单的解决方案?
Chris.
MSMQ 不是一个糟糕的选择,而且绝对不难学习,但请记住,您应该注意一些限制。
Cons:
- 每个队列只能是2GB。
- 每条消息 4MB(尽管可以通过将 MSMQ 与 WCF 结合使用来修复 4MB 限制)。
- 仅适用于 Windows,因此您只能将其与 .NET、C/C++ 或 COM 库一起用于支持 COM 的环境。
Pros:
- 支持Windows网络负载均衡器。
- 支持微软集群服务。
- 与活动目录集成。
- 随 Windows 一起提供。
- 支持交易。
- MSMQ 消息可以通过 Windows 事件日志中的审核消息进行跟踪。
- 消息可以在发送时自动进行身份验证(签名)或加密,并在接收时进行验证和解密。
您可能需要考虑的另一种方法是将数据写入临时表。这可能是一个好主意,因为您希望有一个消息积压日志。
当我不了解系统架构的其余部分时,很难给出建议,但我希望这个答案能有所帮助。
有用的链接
在 .NET 中编程 MSMQ - 第 1 部分 http://www.codeproject.com/KB/dotnet/mgrmsmq.aspx
将 MSMQ 与 WCF 结合使用 http://code.msdn.microsoft.com/msmqpluswcf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)