我正在構建一個WebApi
應用程序,該應用程序將託管在Azure網站中,並在適當情況下使用async
調用。但是,要求我使日誌記錄發生在與調用方法不同的線程中,以便繼續處理實際業務邏輯,同時某些「工作任務」處理日誌記錄。在MVC/WebApi應用程序中將異步與手動啓動任務混合是否合適?
一個示例場景是這樣的:
請求進入async
行動 - >電話await businessComponent.ProcessAsync(args)
- 同步_logger.Log(message, args)
>電話 - >創建new Task(() => FormatAndWrite(message, args)
,設置task.ConfigureAwait(false)
,來電task.Start()
所以我希望有人經驗更豐富與async/await
和方式ASP.NET
處理async/await
告訴我他們是否看到上述解決方案的主要問題?這是否可以在處理實際業務邏輯請求時節省時間?
這只是一個可接受的方法,如果可以偶爾錯過日誌。 – 2015-02-24 16:16:57
這是因爲在傳入請求完成並返回之前,FormatAndWrite的執行可能不會執行? – IWriteApps 2015-02-24 16:32:00
間接,是的。 ASP.NET將偶爾回收您的應用程序,但如果有請求正在處理,它將不會回收。 – 2015-02-24 16:48:10