有些东西更易于手工实现(代码),但有些东西通过WF更容易实现。看起来WF可用于创建(几乎)任何类型的算法。所以(理论上)我可以在WF中完成我的所有逻辑,但对所有项目来说这可能是个坏主意。
在什么情况下使用WF是一个好主意,什么时候会让事情变得更难? WF与手工编码的利弊/成本是什么?
答案 0 :(得分:123)
只有在满足以下任何条件时才需要WF:
有关详细信息,请参阅Paul Andrew的帖子:What to use Windows Workflow Foundation for?
请不要将WF与任何形式的可视化编程混淆或联系起来。这是错误的,可能导致非常糟糕的架构/设计决策。
答案 1 :(得分:81)
从不。你可能会后悔:
我唯一想过使用WF的时候就是如果我想为最终用户主持设计师,甚至可能都不是。
相信我,没有什么能像你编写的代码一样直接,强大或灵活,完全按照你的需要去做。远离WF。
当然,这只是我的意见,但我认为这是一个非常好的。 :)
答案 2 :(得分:46)
WF生成的代码很讨厌。 WF带来的价值在于系统的可视化表示,虽然我还没有看到任何东西(现在有6-7个项目正在与我参与的WF一起工作),我不喜欢更简单的手工编码项目
答案 3 :(得分:38)
通常,如果您不需要持久性和跟踪功能(在我看来是主要功能),则不应使用Workflow Foundation。
以下是根据我的经验收集的Workflow Foundation的优点和缺点:
<强>优点强>
<强>缺点强>
答案 4 :(得分:26)
我发现使用工作流基础的主要原因是它在跟踪和持久性方面带来了多少开箱即用。启动和运行持久性服务非常容易,这可以在多个实例和主机之间带来可靠性和负载分配。
另一方面,就像表单应用程序一样,工作流设计师推动你的代码模式也很糟糕。但是,您可以通过在工作流中不编写任何代码并将所有工作委派给其他类来避免问题,这些类可以比工作流更优雅地进行组织和单元测试。然后,您可以获得设计师的酷炫视觉效果,而不会背后留下意大利面条代码。
答案 5 :(得分:11)
就个人而言,我不会在WF上出售。它的用处并不像其他新的MS技术那样明显,比如WPF或WCF。
我认为WF将来会在商业应用程序中大量使用,但我没有计划使用它,因为它似乎不适合我项目的工作。
答案 6 :(得分:6)
我目前正在工作的公司建立了一个Windows Workflow Foundation(WF)以及他们选择使用它的原因是因为规则经常会发生变化,这会迫使他们重新编译各种dll等等。所以他们的解决方案是将规则放在数据库中并从那里调用它们。这样他们就可以改变规则,而不必重新编译和重新分配dll等。
答案 7 :(得分:5)
Windows Workflows引诱非编码IT经理,BA等,就像它的堂兄BizTalk一样,但在实践中,单元测试,调试和代码覆盖只是众多陷阱中的三个。你可以克服其中的一些,但你必须投入大量资金才能实现这一目标,而使用简单的代码,你就可以获得。如果你真的有一个长期运行的要求,那么你可能需要更复杂的东西。我已经听说过关于能够在没有重新编译dll的情况下将新的xaml文件投入生产的论点,但老实说,Workflows将消耗的时间可以更好地用于改进你的持续集成到编译部署不是这样的地步。问题。
答案 8 :(得分:3)
我会在需要使用工作流的任何环境中使用它,但是当与K2甚至SharePoint 2007结合使用时,平台的强大功能确实很有用。在使用BI专家开发业务应用程序时,建议使用该平台,这通常仅与简化和改进业务流程相关。
为了记录,WF是与K2的开发团队共同开发的,而新的K2 Blackpearl是建立在WF之上的,因此是MOSS 2007和WSS 3.0的工作流引擎。
答案 9 :(得分:2)
当您不想手动编写所有这些代码以维护可视界面,跟踪和持久性时,投票给WF是明智的选择。
答案 10 :(得分:1)
我几个月来一直在使用Windows工作流来开发自定义活动和非开发人员可以用来构建工作流的重新托管设计器。 WF非常强大,但它只能与开发人员构建的自定义活动一样好。当涉及到它时,开发人员必须查看由非开发人员构建的工作流以进行测试和调试,但从他们可以创建草稿工作流的角度来看 - 这太棒了。
此外,如果您有长时间运行的进程,当您需要动态更新进程时,WF是一个很好的技术堆栈 - 无需重新安装/下载或执行任何操作,只需将新的XAML文件添加到目录中即可应该使用版本控制来设置架构以废弃旧版本并使用新版本。