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