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