2012-03-13 37 views
2

我們在兩個系統之間傳輸數據可能需要幾個小時。執行此傳輸的代碼是用C#編寫的。使用Web服務調用啓動長時間運行的作業

我們希望通過WCF Web服務調用來觸發傳輸。

理想情況下,我們希望Web服務調用立即返回,並顯示「OK作業已啓動」消息,然後在服務器上運行作業,直到作業完成。

這樣做的最好方法是什麼?

我們看到可能存在的問題是:作業前

  • Web服務超時完成返回結果

回答

2

雖然不完全類似的困境後

  • 作業停止,我也有類似的我的MVC應用程序的場景。有很多「工作」要做,涉及導入數據,批量電子郵件,財務過程等。

    基本上,我創建了一個windows服務,它有一個工作管理器,顯然是可以完成的各種工作。它也運行一個輕的HttpServer。這允許主MVC應用程序與服務進行通話。一個發送一個請求來啓動作業並獲得所有作業或特定作業的狀態(當作業開始時,它被賦予一個唯一的ID)。

    因此,如果我要在你的情況下實現它,我會添加一個下載作業,它做了實際的工作,並通過JSON調用從MVC應用程序中激發它。可以隨時使用從「StartJob」JSON調用返回的ID查詢下載狀態。因此您的主要網絡請求會立即處理完畢。

  • 1

    我會編寫一個控制檯應用程序來完成這項工作,並讓Web Service調用該應用程序。
    在Web服務器本身內部運行繁重的進程絕不是一個好主意。

    0

    您可以在WebServce調用上使用後臺線程。

    相關問題