簡體   English   中英

IIS上托管的asmx服務下長時間運行的任務

[英]long running tasks under asmx service hosted on IIS

我有一些舊版ASMX IIS托管服務。 客戶端應用程序可以訂閱或取消訂閱Web服務。 通過Web服務邏輯的一些內部組件,它需要定期向訂閱的應用程序發送消息。

做長期任務的最佳方法是什么? 我了解在IIS下用長期運行的任務打開Thread不是一個好主意。

ASMX服務無法滿足您的要求:它們不能僅決定向客戶端發送消息。 他們所能做的就是響應客戶的請求。

您可以四處探索並提出一種方法來啟動長時間運行的任務,而另一種方法可以輪詢任務的狀態。 這行得通,但可能會很昂貴。

更好的模型是在單獨的Windows服務中執行長時間運行的任務。 讓該服務托管一個簡單的WCF服務,該服務僅由主服務(與客戶端進行通信的服務)使用。 主(WCF)服務將使用雙工通道與客戶端進行通信。 這樣,只要有關於一項長期任務的新聞,它就可以“呼叫”客戶。

通常,在這種情況下,當您無法將結果推回時,請為長時間運行的任務創建一個唯一的ID,然后將其發送回客戶端,然后再運行任務並在數據庫或其他地方保存一個表您存儲任務的狀態。 客戶端將定期拉服務,以通過給定的ID查看任務的狀態。 一旦發現任務完成,它將檢索結果。 在IIS中運行一個線程來完成其工作是完全可以的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM