我目前正在开发一款遗留应用程序,它可以在机器之间进行大量的同步通信。沟通主要由Http帖子完成,我想知道我们是否会通过使用NServiceBus使通信异步来获益。
通过CQRS,我已经了解了NServiceBus,但没有详细研究过。
与编写应用程序的同事交谈,他们认为好像无法进行调用,然后整个交易失败,我们应该坚持这个模型。大多数通信涉及多个用户在服务器上配置硬件,在这种情况下,我们可能不需要某种排队/异步框架。
那么我将从异步中获得什么好处,并且NServiceBus是否是正确的框架?如果在我们的案例中,我怎么能说服他们asnyc消息传递架构是要走的路?或者我是否引入了一个不必要的框架?
答案 0 :(得分:3)
好吧,“如果它没有破坏”的旧格言在这里发挥作用。
严重的是,如果没有理由“修复”某些东西(例如可用性/数据丢失问题),那么很难建立一个改变它的论据。
为了解决您的问题,根据我的经验,NServiceBus的主要好处之一是拥有成本低。它易于上手,学习,部署,一旦投入生产,管理费用就会很少。
<强>更新强>
RE:关于向用户显示通话结果的评论:
这取决于你想怎么玩。
在这种情况下,CQRS模式中常见的是向用户显示成功消息,因为当用户检查调用结果时,结果将不是他们期望的结果是非常不可能的。
但是,如果呼叫进行了一些可能导致延迟的严重处理,或者如果呼叫具有“自然”高失败的可能性,那么您可以选择向用户显示“感谢您的请求”消息,然后通过某些离线方式(例如带有响应链接的电子邮件)提醒他们呼叫结果。
当您进行异步时,您必须以不同的方式开始考虑服务水平协议 - 例如,指定99%的请求将在1秒内处理,然后您可以围绕该要求规划您的设计和基础架构。 / p>