33

与滚动您自己的工作流框架相比,使用 Windows Workflow Foundation (WF) 有什么好处?

据我所知,WF 只提供了一个非常简单的运行时引擎、一堆类和一个用于定义工作流的架构(基于 XAML)。所有困难的事情,例如持久性、为运行时提供主机进程以及实现分布式工作流(跨进程)都由您决定。

此外,使用 WF 有一个学习曲线……如果我们创建自己的工作流框架,我们将简单地利用所有开发人员已经拥有的技能(C#、XML、SQL 等)。

我从一位 MS 布道者那里看到了这个博客,它试图解释为什么我们应该使用 WF:

为什么是工作流?...

IMO 在说服方面做得不好,因为它只是说它有助于“开发人员的生产力”,同时承认开发人员可以自己动手。

这里的任何聪明人能想出一个更好的理由吗?

下面给出的答案摘要:


我认为最有说服力的原因是,使用标准化的工作流平台(例如 WF(而不是滚动您自己的))将使您能够利用 MS 和第三方提供的 Visual Designer 等当前和未来的工具。

此外,由于它是基于 .NET 技术的 MS 堆栈的一部分,因此它可能会与未来的 MS 技术(例如 Azure)有更好的集成/迁移路径。

最后,拥有 WF 经验的开发人员数量将会增加(因为这将使他们的职业生涯受益),将其转变为 SQL 或 HTML 等基本商品技能,这意味着将更容易找到可以开始使用它的人最小的加速时间。

4

6 回答 6

19

使用 WF 的选择需要一些评估,我将尝试在此处提供一个相当全面的列表,说明优缺点。请记住,如果您要使用 WF,请不要使用 WF4+ 以外的任何东西,因为它已经过重写并且经过了严格审查,超过了它的前辈。

优点

  • 成本
  • 灵活性
  • 耐用性
  • 可分配性
  • 未来

成本

在与其他路径进行比较时,需要注意 WF 的成本。这些路径可能包括BizTalk,一个基于开源代码的框架,如Objectflow,甚至是你自己的。请记住,除非您需要一些非常简单的东西,否则每次滚动您自己的方法都是最昂贵的方法。因此,如果您需要相当大的功能,但还需要控制源代码,我会推荐一个开源框架。

灵活性

与 BizTalk 之类的框架相比,WF 是一个非常灵活的框架。在 WF 中,您可以编写自己的自定义活动并在框架之外执行您需要执行的操作 - 这确实为您提供了所需的功能。

耐用性

WF 包含一个非常强大的持久性框架。从某种意义上说,它是持久的,工作流的状态可以持久化,工作流可以设置为空闲(以保留资源),然后稍后再调用。但是,这种持久性更进一步,因为它已经设置为跨主机场的持久性。换句话说,工作流可以在一台主机上启动、持久化,然后在另一台主机上调用。

假设工作流通过 Web 服务(即 WorkflowService)托管。

可分配性

WF 已设置为跨主机场分布。

假设工作流通过 Web 服务(即 WorkflowService)托管。

未来

WF 是 BizTalk 的替代编排引擎,实际上是由构建 BizTalk 的同一个人开发的。因此,WF 在微软堆栈中有着光明的未来。事实上,现在微软正在努力构建单独的组件,以用组件替换 BizTalk 的每个功能。例如,Windows Server AppFabric(更具体地说是 IIS 插件)是当今 BizTalk 中存在的监视服务的替代品。

微软为什么要这样做?因为 BizTalk 不太适合云,因为它是一个大规模安装,而他们正在构建的组件可以部署到云解决方案中。

缺点

  • 灵活性
  • 监控

灵活性

WF 的灵活性也可能是它的缺陷,因为有时您不需要它提供的灵活性,因此会花费更多时间来构建您本来只想包含在内的东西。有时您需要一个框架,该框架可以做出很多假设并且可能不符合惯例(例如 MVC)。但是,一般来说,我发现将 WF4 框架与Ron Jacobs 提供的开源扩展结合起来时,情况并非如此。

监控

WF的监控还很年轻,这是它最大的陷阱。但是,随着时间的推移,这将非常迅速地推进,同时您可以使用自定义跟踪机制构建自己的监控工具。

资源

您最好的资源是Ron Jacobs。我从未见过比他更愿意帮助必须使用 Microsoft 框架的开发人员社区的人。相信我,他通过多种渠道提供了大量有关 WF 的信息,只需上 Google 并查看。

于 2012-08-15T15:44:53.290 回答
7

我能想到的倾向于在另一个工作流框架上使用 WF 的主要原因是:

  1. 微软支持它作为框架的核心部分,因此它可以/将更容易集成到他们的其他技术中,如 Sharepoint 和 Azure“云应用程序”
  2. 该工具可能会在另外几个版本中得到改进并且非常流畅,这应该会提高开发人员的生产力
于 2009-02-04T22:29:08.920 回答
3

我不得不在我的工作中创建工作流活动,我什至不能告诉你答案。

一个不太合理的原因是无效值/输入可以在工作流程图的设计时被确定和拒绝,因此编译时错误基本上不存在(假设您编写的所有样板代码都没有编译时错误)。

于 2009-02-04T22:28:54.897 回答
3

简短的回答:它是免费的,它可以完成工作。如果您可以推出更好的框架来管理工作流程并希望将时间花在上面,那么一定要这样做。但是考虑到您的时间是物有所值的,那么您愿意投入多少资金来构建更好的工作流程管理框架?我可以看到越来越贵。

此外,我很确定持久性(到磁盘或 SQL)是开箱即用的。

于 2009-02-04T22:30:18.357 回答
2

Visual Studio 中有一些相当不错的设计器支持,我不想自己动手,而且它是由其他人而不是我支持的框架,这意味着有人修复了架构错误并进行主要测试,让我来测试只是我的工作流程。我的意思是,我可以推出自己的 GDI+ 调用版本,但我宁愿不这样做。我自己的序列化框架、XML 解析器或 .NET 框架的一些其他元素也是如此。

归根结底,这些东西是作为工具包提供的。您是否选择使用工具完全取决于您要解决的问题、工具的适用性以及您可用于实现目标的时间和资源。

于 2009-02-04T22:26:52.903 回答
0

它是一项新技术,或者您可以说它是最新的,并承诺不断更新功能。

它尊重以前的工作环境并使用它并添加那些对长期运行程序(大型项目)的开发非常有帮助的功能。

它将所有功能直接生成到开发人员手中,这些功能以前在后台运行,缺乏内部核心概念和程序员之间的交互。

是的,它有点复杂,但它也为程序员提供了更多的权力。

您可以期待在未来会有更好的框架和功能。它是编程的未来,所以我们今天就开始学习它。

于 2014-01-02T06:56:42.897 回答