我阅读了关于NserviceBus Sagas的这篇优秀教程(http://blogs.planbsoftware.co.nz/?p=247),但我仍然不了解这个模型(sagas)的优势,而不是使用数据库或业务层事务?
答案 0 :(得分:4)
saga模型的主要好处是它允许您获取逻辑和数据,否则这些逻辑和数据将分散在整个系统(以及各种批处理作业)中,并将所有这些都集中到一个类中,更好地遵循单一责任原理。有了这些,您将获得良好软件实践带来的所有其他好处 - 更好的可测试性,可维护性等。
答案 1 :(得分:0)
为了向您展示Saga模型的真正好处,我将向您展示两个例子。
想象一下,您拥有数百个分布式主机的面向服务的体系结构。客户订单启动一个或多个传奇。每个传奇都有一些相关的业务逻辑。每个给定传奇的处理程序可以在不同的主机之间共享,并且您不需要检查订单状态处理每个消息,NServiceBus隐式检查通过订单ID或其他属性匹配的saga状态,如果它仍然打开,您将获得它你的数据上下文。
您也可以将此模型用作不使用NServiceBus的模式。想象一下,您开发了一个视频游戏,并希望跟踪一些用户组合。每次玩家击中跳跃你打开传奇并添加处理其他快速输入的奖励积分。一旦玩家在输入和saga之间延迟了一段时间,它就会自动保存组合的总得分。
佐贺有什么好处?
1)您的业务逻辑封装在一个地方 - 传奇。
2)你可以轻松地扩展它添加额外的传奇或删除它们。您也可以将它们移动到其他处理程序或主机。
3)您无需知道迁移时数据库中需要哪些数据,您只需要迁移包含所有必要信息的sagas