1

我正在创建一个 WCF WorkflowService,并且客户端正在对该服务进行异步调用。工作流程运行时间很长,一旦客户端断开连接(即关闭发出请求的应用程序),工作流程将继续并且不会停止。这是如何运作的?一旦客户端断开连接,服务实例不会被破坏,工作流应该停止吗?

为什么它默认表现为“一劳永逸”,即单向?

编辑:好吧,我想,一旦客户端断开连接,服务实例就会被破坏,工作流也会中止

4

1 回答 1

2

工作流引擎对长时间运行的异步流程进行建模。这样的过程可以跨越几秒钟、几小时、几周甚至几年,并且可能涉及一个或多个参与者。因此,要求连接保持打开是不合理且不可取的。

Windows 工作流服务将其状态保存到某个数据存储区,通常是数据库,因此如果该工作流在指定时间内没有任何反应,则可以将其保存到数据库并从内存中卸载。将来,当有人调用与该工作流实例相关的 WCF 操作之一时,它会从数据库中恢复并继续执行,就好像它总是加载到内存中一样。这允许在任何单个时间点存在大量工作流实例,其中只有一小部分实际上占用了计算机资源。

持久性也是工作流服务的一个重要特征。如果有一个工作流程已经进行了很长时间,那么您最不想看到的就是丢失它的所有状态和数据,并且如果可能的话,您需要重新开始它。这就是为什么工作流的状态信息不依赖于像网络连接这样脆弱的东西。

于 2012-07-01T13:28:37.980 回答