我遇到了stateless,一个基于Simple State Machine for Boo的分层状态机框架,但使用 C# 3.0 配置
它易于配置和使用,我可能很快就会使用它。
但我只是想知道如果
- 有人在实际项目中使用过无状态(如果是这样,您的意见是什么?)
- .NET 还有其他好的工作流引擎吗?(WF除外)
我遇到了stateless,一个基于Simple State Machine for Boo的分层状态机框架,但使用 C# 3.0 配置
它易于配置和使用,我可能很快就会使用它。
但我只是想知道如果
我一直在将 Stateless 和 WF 用于打算在某天投入生产的应用程序。:) 到目前为止,我在这里的帖子中详细介绍了我的经历。
总的来说,我更喜欢无状态,因为它比 WF 更简单。当然,能够以图形方式设计工作流固然很好,但是当您需要实现比顺序工作流更困难的东西(如状态机工作流)时,您需要使用 ExternalDataExchange 来进行正确的状态转换。这可能并不难,但考虑到这一点以及您需要实现持久性服务来暂停工作流的事实对我来说似乎没有吸引力。无论如何,我不需要将工作流保存到磁盘以供以后执行......所以我将使用常规事件在无状态中处理这个问题。错误处理在无状态中很容易实现(我已经成功了),但是我采取的实现是有问题的,并且是另一个讨论的主题(我' 我现在正在搜索 SO!)。我可能很快就会发布一个关于这个的问题。
祝无国界好运。我希望听到你在这方面的进展情况。
对于 Workflow Foundation,仅将其用于绿色项目,以便您可以使用 WF4。看看这个 http://realworldsa.dotnetdevelopersjournal.com/goodbyewindowsworkflowfoundationseeyouin2011.htm
WF 1.0 和 1.5 与 WF4 不兼容。所以这不是一个前瞻性的解决方案。
我个人使用http://simplestatemachine.codeplex.com作为 WF 的替代品。我已经在一个完整的生产系统(基于 asp.net)中使用它来处理一个非常复杂的营业执照颁发系统(处理 350 多个不同的政府营业执照)。
我还没有尝试过无状态,但它看起来很有希望。
晚会迟到了。我们已经在生产中使用 Stateless 一年半了,没有任何问题。它是处理工作流的一个非常优雅的解决方案,您可以快速将状态与您的数据模型集成。我们在 SQL 中用和 int 表示我们的状态,因此您可以在 ASP.Net 中运行状态机。对于长期运行的工作流程也是如此。
如果您的要求是基本的,我写的一个非常简单的 StateMachine 可能会感兴趣。
请注意,它(在撰写本文时)不支持分层状态。
你可以在 NuGet 上找到它:
nuget install nstate
或在 GitHub 上查看:
https://github.com/benaston/NState
我希望有人觉得它有用。
如果您还没有查看过Windows Workflow Foundation,那么至少值得阅读一下它。