1
我有一个定义良好的服务合约,它公开了一堆方法。我们有一个典型的服务实现这个合同,它与我们的MVC App一起被托管在IIS 7中。从WCF服务调用WF工作流程
该体系结构是典型的分布式应用程序,其接口在基本核心库(可重新分发)中定义,独立服务库中的实现以及最终MVC应用程序暴露了实现的端点它位于服务库内)。
现在的情况是,其中一种现有的服务方法需要执行一个可能需要10分钟才能执行的逻辑进程。在正常的情况下,我们会考虑工作流服务,但是接口的问题很好用,我们有一套单元测试来测试我们的服务等,我们真的无法摆脱我们拥有的这个实现。
所以我的问题是 -
- 是否有可能有一个独立的工作流,可以做到这一点长时间运行的进程,从我们的WCF服务调用它呢?
- 如果是这样,那么我如何确保在IIS中执行我的服务的工作线程在工作流的持续时间内保持活动状态?
- 最后客户端不需要等待这个服务的响应。这是一种失火和遗忘的方法。当服务启动工作流并等待它完成时,客户端调用是否可以立即结束?
感谢德鲁。只是我在寻找的那种东西。然而,在“//在工作流完成时做些事情”一点,鉴于这是一个WCF服务,我该如何提供一个回调方法(可能在相同的服务中定义)?我的WCF服务的新实例是否会创建,并在WF完成时调用回调方法? – Nikhil 2012-03-21 23:49:53
哦,是的,所以如果你想做回调,你只需在回调闭包中捕获客户端回调通道(OperationContext.Current.GetCallbackChannel()),然后调用回调方法即可。 –
2012-03-22 00:04:07
即使我还没有机会尝试这种方法,我会将其标记为答案。它似乎确实会起作用! – Nikhil 2012-03-27 10:05:39