作为初学者,我一直在深入研究 Windows Workflow 4.5 的技术细节和实现,并取得了不错的成果。我的问题更多是“为什么以及何时”与“如何”的问题,所以请耐心等待。
我把一个大家都熟悉的概念,把业务逻辑抽象成WF,即通用登录流程。我想要完成的是拥有可以从 MVC 网站、Windows 窗体应用程序等调用的可重用逻辑,并且让所有内容都通过相同的工作流程运行,我已经实现了。
现在我有 2 个关于“何时”应用 WF 和何时使用代码的概念性问题。
1 - 以简单验证为例。我正在尝试登录,但我传递了一个空的用户名或密码字符串。显然,我想将消息发送回最终用户“需要用户名”和“需要密码”,我已经完成了。现在,我这样做的方式是我有一个验证类(FluentValidation NuGet 包,如果重要的话),但重要的是我在代码中这样做。因此,在 WF 中,我通过 ExecuteMethod 调用我的验证代码,一切正常。我的问题是:这是 WF 思维方式的错误方法吗?我应该执行内联 WF“如果”操作/决策并直接在 WF 内部构建验证消息,而不是调用一些代码块?一世' 我不仅要求验证,而且作为一个我们都可以涉及的概念,但更一般地说,我应该尝试将任何东西和我能做的一切都放入 WF 本身,还是调用自定义代码更好?如果可能的话,我正在寻找更多来自具有 WF 经验的经验丰富的软件架构师的推理的最佳实践,而不是某人的意见。
2 - 在另一台机器上选择工作流程。因此,同一登录工作流活动的一部分需要服务方法调用。我以这样一种方式编写代码和工作流,即工作流接收 ILogOnService 的 In 参数,该参数具有接口方法“AuthenticateUser”。我传入的具体实现是异步调用 MVC4 Web Api post 方法,以执行标准的 Asp.Net 成员资格 ValidateUser。同样,我应该从 WF 工作流程中调用这个 Web Api PostAsync 吗?如果是这样,这不是将我的工作流程与 Asp.Net Membership 和我的特定服务选择紧密结合。似乎有办法让工作流达到某个点,然后在另一台机器上恢复进程,例如服务正在运行的地方,然后继续这个过程,但我
只是从这项技术的专业人士那里寻找一些指导方针和想法,但我会选择最有用的答案。