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