任何人都可以为我提供有限状态机设计模式的真实世界实现吗
Could any one provides me with a real world implementation of the Finite state machine design pattern
这里是一个简短的描述:我正在开发一个 MVC 应用程序,它将管理用户的授权请求。在用户插入必要的信息来创建他的需求(这是我的应用程序中的主要对象)之后,他的请求在被接受之前会经历几个状态。我想知道在这种情况下最好的设计模式是什么。
为了select解决方案的最佳设计模式,需要更多信息,例如:
- 网络基础设施是什么样的?
- 我们期望多少服务器负载?
- 状态之间的转换是手动还是更多事件驱动和自动?
- 您是否需要跟踪和审计各州之间的信息流?
- ...以及截止日期。
...等等
考虑到您的描述,最安全的路线肯定需要服务总线方法,而工作流引擎也不会造成任何伤害。
现在,有很多方法可以实现这一点,问题 #1 非常重要,但是如果您只有一个网络服务器而没有其他任何东西,您可以看看像 Hangfire 这样的工具,它可以在 ASP.NET MVC 堆栈。
Hangfire 也有一个很酷的仪表板:)
如果您想跟踪请求的状态并能够控制状态转换,有限状态机 (FSM) 将是一个很好的选择。
定义您的状态和状态之间的转换。指定初始状态。将这样的 FSM 添加到每个请求中。根据需要触发转换。您可以将元数据添加到过渡中,例如授权要求(谁能够执行此转换)。
每个状态都可能有一个入口和一个出口函数来执行特定的操作,例如记录转换,转发下一次检查的请求,或在 'approved' 或 'refused' 状态下触发回复。
这里是一个简短的描述:我正在开发一个 MVC 应用程序,它将管理用户的授权请求。在用户插入必要的信息来创建他的需求(这是我的应用程序中的主要对象)之后,他的请求在被接受之前会经历几个状态。我想知道在这种情况下最好的设计模式是什么。
为了select解决方案的最佳设计模式,需要更多信息,例如:
- 网络基础设施是什么样的?
- 我们期望多少服务器负载?
- 状态之间的转换是手动还是更多事件驱动和自动?
- 您是否需要跟踪和审计各州之间的信息流?
- ...以及截止日期。
...等等
考虑到您的描述,最安全的路线肯定需要服务总线方法,而工作流引擎也不会造成任何伤害。
现在,有很多方法可以实现这一点,问题 #1 非常重要,但是如果您只有一个网络服务器而没有其他任何东西,您可以看看像 Hangfire 这样的工具,它可以在 ASP.NET MVC 堆栈。
Hangfire 也有一个很酷的仪表板:)
如果您想跟踪请求的状态并能够控制状态转换,有限状态机 (FSM) 将是一个很好的选择。
定义您的状态和状态之间的转换。指定初始状态。将这样的 FSM 添加到每个请求中。根据需要触发转换。您可以将元数据添加到过渡中,例如授权要求(谁能够执行此转换)。
每个状态都可能有一个入口和一个出口函数来执行特定的操作,例如记录转换,转发下一次检查的请求,或在 'approved' 或 'refused' 状态下触发回复。