我知道这个问题之前已被问过了.但环顾四周我仍然无法让自己明白我应该走哪条路.这是我的情景,希望你可以提供帮助:
我们将提供一系列网络服务,这些服务将被数百个移动应用程序按计划进行.这些服务将设备上的数据与新信息一起发送到设备并从它们返回.从设备返回的数据将需要更新单个中央SQL服务器数据库,该数据库还提供多个桌面应用程序和网站.
为了减少这些服务的请求/响应的时间,我们决定在事实之后处理来自设备的数据,方法是将它们粘贴在MSMQ实例中或将序列化的对象存储在临时数据存储中并具有Windows服务稍后处理它们.
所以这是我的选择,但除此之外还有一些可能有助于你们提醒我的事情:
从设备返回的数据不会在需要在服务器端订购的较小消息包中返回.
我对MSMQ一无所知,但我以前写过Windows服务.虽然如果需要,我可以选择MSMQ.
我想保留设备的响应,以防由于某些原因由数据导致处理失败.通过这种方式,我可以询问数据并查看是否存在问题,即设备允许用户添加扩展服务器端数据库中相关字段长度的注释.
有了这些信息,您认为值得我学习MSMQ还是应该坚持使用更简单的解决方案?
克里斯.
MSMQ不是一个糟糕的选择,绝对不难学,但请记住,您应该注意一些限制.
缺点:
每个队列只能是2GB.
每条消息4MB(尽管4MB限制可以通过使用MSMQ和WCF来修复).
仅适用于Windows,因此您只能将其与.NET,C/C++或COM库一起用于启用COM的环境.
优点:
支持Windows网络负载均衡器.
支持Microsoft群集服务.
与Active Directory集成.
用Windows运输.
支持交易.
Windows事件日志中的审核消息可以跟踪MSMQ消息.
消息可以在发送时自动进行身份验证(签名)或加密,并在接收时进行验证和解密.
您可能需要考虑的另一种方法是将数据写入临时表.这可能是一个好主意,因为您希望有一个消息返回日志.
当我不了解系统的其他部分架构时很难提供建议,但我希望这个答案会有所帮助.
有用的链接
在.NET中编程MSMQ - 第1部分
使用MSMQ和WCF