【问题标题】:Performance considerations with nested activities in Workflow FoundationWorkflow Foundation 中嵌套活动的性能注意事项
【发布时间】:2015-02-27 18:37:13
【问题描述】:

我正在查看一个相当大的 Windows Workflow Foundation .xaml 文件。

我发现了几个嵌套的 Sequence 活动。

示例:

注意:这是一个简单的例子来帮助说明我的问题。

Main Sequence
  • Query Data Sequence
  • Write CSV Sequence

查询数据序列将包含与设置变量和查询数据源相关的活动。

写入 CSV Sequence 包含与设置变量和写入 CSV 文件相关的活动。

这两个子活动仅用于逻辑组织活动。

我正在查看的 .xaml 文件非常庞大且复杂。

构建具有多个嵌套活动的工作流是否会对性能产生负面影响?

【问题讨论】:

    标签: workflow-foundation


    【解决方案1】:

    嵌套活动存在负面性能问题。这样做的原因是工作流实例在两个活动中的单个线程上运行。 WF 运行时调度使用类似队列的结构在该线程上工作。当活动执行时,它只是使用运行时安排其子活动。因为活动执行阻塞、同步工作,所以它们阻塞了工作流正在运行的线程。

    由于活动树导航和 AEC 克隆,进出深度嵌套状态的工作流状态机转换成本更高。 您应该尽量避免深度嵌套的状态。

    活动实例状态由工作流运行时通过活动执行上下文 (AEC) 自动管理。工作流运行时使用 AEC 来维护活动实例状态并在需要时运行补偿逻辑。

    当需要重新执行活动时,会使用以下命令创建新的 AEC BinaryFormatter 类。这个操作可以有一个表现 对您的工作流程应用程序的影响,尤其是在 AEC 被克隆是复杂的(例如,当有多个嵌套 活动)

    解决方案是使用 WorkflowApplication 对象异步运行工作流。

    【讨论】:

    • 谢谢。我试图确定重构以减少嵌套活动是否值得我花时间。看来是这样。
    • 很高兴为您提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2020-07-21
    • 1970-01-01
    相关资源
    最近更新 更多