Workflow foundation 为WF 3.0/3.5编写长时间运行的自定义活动的最佳实践 工作流基础(3/3.5)建议的长运行自定义活动的最佳实践 活动完全在活动的Execute方法中执行长时间运行的任务不是一个好主意。分配给工作流的单个线程将被阻止,这将阻止处理工作流的其他计划请求

Workflow foundation 为WF 3.0/3.5编写长时间运行的自定义活动的最佳实践 工作流基础(3/3.5)建议的长运行自定义活动的最佳实践 活动完全在活动的Execute方法中执行长时间运行的任务不是一个好主意。分配给工作流的单个线程将被阻止,这将阻止处理工作流的其他计划请求,workflow-foundation,Workflow Foundation,因此,对于长时间运行的任务,应该创建一个队列。实际工作将由本地服务(在线程池线程上运行)完成。此服务通过先前的工作流队列将工作结果传递给等待活动 所以我的问题是,到底是什么将任务量化为长期运行?这是处理时间的问题吗?什么时候应该创建队列,什么时候仅仅使用本地服务就足够了 感谢您的澄清。您需要什么样的可靠性才是最重要的。我认为可以安全地假设,任何涉及与一个或多个外部系统通信的任务(无论是电子邮件)都应该在处理时考虑到一定的可靠性,即中间的持久存储 长时间运行与其说是一个问题,不如说是如果您在某个时

因此,对于长时间运行的任务,应该创建一个队列。实际工作将由本地服务(在线程池线程上运行)完成。此服务通过先前的工作流队列将工作结果传递给等待活动

所以我的问题是,到底是什么将任务量化为长期运行?这是处理时间的问题吗?什么时候应该创建队列,什么时候仅仅使用本地服务就足够了


感谢您的澄清。

您需要什么样的可靠性才是最重要的。我认为可以安全地假设,任何涉及与一个或多个外部系统通信的任务(无论是电子邮件)都应该在处理时考虑到一定的可靠性,即中间的持久存储

长时间运行与其说是一个问题,不如说是如果您在某个时刻无法从故障中恢复,将会发生什么。这就是为什么在处理工作流时,我依赖数据库事务来提交或回滚工作流状态

我认为只要长时间运行,任何可能会阻塞超过2分钟的操作。根据可用的空闲完成端口数量,我甚至不想等待那么长时间,但这更像是一种负载平衡。让您的工作流运行时运行正常,但不阻塞;)

编辑
这2分钟的事情来自RFC793,它规定TCP会话的空闲时间不应超过2分钟。我认为,如果我的系统正在与您的系统进行对话,并且需要2分钟以上才能完成,那么他们不应该等待对方完成。

感谢您立即给出宝贵的答案!John您是否有任何链接解释在通信失败时如何回滚状态?