有些事情是容易实现的,只是通过手(码),但有些是比较容易通过WF。它看起来像WF可以被用来创建(几乎)任何种类的算法。所以(从理论上)我可以做我所有的逻辑WF,但它可能是一个坏主意,要做到这一点对所有项目。

在什么情况下它是个好主意使用WF和当会使形势更加严峻,那么他们有的是什么?什么样的利弊/成本与WF通过手工编码?

有帮助吗?

解决方案

只有在满足以下任何条件时才需要WF:

  1. 你有一个漫长的过程。
  2. 您的流程经常变更。
  3. 您需要一个流程的可视化模型。
  4. 有关详细信息,请参阅Paul Andrew的帖子: Windows Workflow Foundation的用途是什么?

    请不要将WF与任何形式的可视化编程混淆或联系起来。这是错误的,可能导致非常糟糕的架构/设计决策。

其他提示

从来没有。你可能会很后悔:

  • 陡峭的学习曲线
  • 难以调试
  • 难以维持
  • 没有提供足够的电力、灵活性或生产力增益来证明它的使用
  • 可以和将腐败的应用程序的国家,不能恢复

只有时间我可能永远怀孕的使用WF是如果我想到主设计为一个终端用户并可能甚至没有。

相信我,一切都会不一样直接的、强大,或灵活的代码写做的正是你需要它这样做。远离WF。

当然,这只是我的意见,但我认为这是一个该死的很好的一个。:)

WF生成的代码很讨厌。 WF带来的价值在于系统的可视化表示,虽然我还没有看到任何东西(现在有6-7个项目正在与我参与的WF一起工作),我不希望更简单的手工编码项目

在一般情况下,如果你不需要的持续性和跟踪功能(这在我看来是主要的功能),则不应使用工作流程的基础。

这里有的优点和缺点的工作流程的基础,我收集了从我的经验:

优点

  • 持久性:如果你要有多长时间运行的流程(觉得天、几周、几个月),然后工作流程,都为这个伟大的.空闲的工作流程的实例是持久的数据库,因此它不会使用的存储器。
  • 追踪:WF提供的机制来追踪的每个活动的执行工作流程
  • *视觉设计师:我把这作为一种*,因为我认为这真的只是有用的市场营销的目的。作为开发者,我喜欢写代码,而不是捕捉的东西在一起的视觉效果。当你有一个非开发使得工作流程,你经常会结束了一个巨大的混乱的混乱。

缺点

  • 编程模型:你真的局限于编程功能。想想所有的伟大的功能,你有在C#然后忘记他们。简单的一个或两个线的声明,在C#变成一个相当大的一块活动。这是特别痛苦输入验证。具有说,如果你真的要小心保持高水平的逻辑工作流程,以及其他一切在C#然后它可能不是一个问题。
  • 性能:工作流程使用了大量的存储器。如果你正在部署大量的工作流服务器上,确保有大量的存储器。还要知道工作流程远远低于正常C#代码。
  • 陡峭的学习曲线,很难调试:如上所述。你要花费很多时间搞清楚怎么得到的东西的工作,并找出最佳办法做到的事情。
  • 工作流程的版本不兼容:如果部署的工作流程具有持久性,和你需要做更新的工作流程,旧的工作流程的情况已不再相容的。据说这是固定的。净额4.5.
  • 你必须使用VB表(.净额4.5允许C#表达).
  • 不灵活:如果你需要一些特殊的或特定的功能不提供工作流程的基础,准备一个很大的痛苦。在某些情况下,它甚至可能不可能的。谁知道直到你试试吗?有一个很大的风险,在这里。
  • WCF XAML服务没有接口:通常与WCF服务,您对发展一种接口。WCF XAML服务,无法确保WCF XAML服务已经实施的一切,在一个接口。你甚至不需要定义一个接口。(我知道...)

我发现使用工作流基础的主要原因是它在跟踪和持久性方面带来了多少开箱即用。启动和运行持久性服务非常容易,这可以在多个实例和主机之间带来可靠性和负载分配。

另一方面,就像表单应用程序一样,工作流设计师推动你的代码模式也很糟糕。但是,您可以通过在工作流中不编写任何代码并将所有工作委派给其他类来避免问题,这些类可以比工作流更优雅地进行组织和单元测试。然后,您可以获得设计师的酷炫视觉效果,而不会背后留下意大利面条代码。

就个人而言,我不会在WF上出售。它的用处并不像其他新的MS技术那样明显,比如WPF或WCF。

我认为WF将来会在商业应用程序中大量使用,但我没有计划使用它,因为它似乎不适合我项目的工作。

我目前正在工作的公司建立了一个Windows Workflow Foundation(WF)以及他们选择使用它的原因是因为规则经常会发生变化,这会迫使他们重新编译各种dll等等。所以他们的解决方案是将规则放在数据库中并从那里调用它们。这样他们就可以改变规则,而不必重新编译和重新分配dll等。

Windows Workflows引诱非编码IT经理,BA等,就像它的堂兄BizTalk一样,但在实践中,单元测试,调试和代码覆盖只是众多陷阱中的三个。你可以克服其中的一些,但你必须投入大量资金才能实现这一目标,而使用简单的代码,你就可以获得。如果你真的有一个长期运行的要求,那么你可能需要更复杂的东西。我已经听说过关于能够在不重新编译dll的情况下将新的xaml文件投入生产的论点,但老实说,Workflows将消耗的时间可以更好地用于将持续集成提升到编译部署不成问题的程度。

我会在需要使用工作流的任何环境中使用它,但是当与K2甚至SharePoint 2007结合使用时,平台的强大功能确实很有用。在使用BI专家开发业务应用程序时,建议使用该平台,这通常仅与简化和改进业务流程相关。

为了记录,WF是与K2的开发团队共同开发的,而新的K2 Blackpearl是建立在WF之上的,因此是MOSS 2007和WSS 3.0的工作流引擎。

当您不想手动编写所有这些代码以维护可视界面,跟踪和持久性时,投票给WF是明智的选择。

我几个月来一直在使用Windows工作流来开发自定义活动和非开发人员可以用来构建工作流的重新托管设计器。 WF非常强大,但它只能与开发人员构建的自定义活动一样好。当涉及到它时,开发人员必须查看由非开发人员构建的工作流以进行测试和调试,但从他们可以创建草稿工作流的角度来看 - 这太棒了。

此外,如果您有长时间运行的进程,当您需要动态更新进程时,WF是一个很好的技术堆栈 - 无需重新安装/下载或执行任何操作,只需将新的XAML文件添加到目录中即可应该使用版本控制来设置架构以废弃旧版本并使用新版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top