第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 MVC C# 中實現(xiàn) TAP

在 MVC C# 中實現(xiàn) TAP

C#
慕妹3242003 2023-08-27 16:03:14
很抱歉提出一個一般性問題,但我想要關于代碼中可以啟用 TAP(任務異步編程)以獲得更好性能的功能/區(qū)域的建議。我還使用 Web API,其中可以使用 async-await 從數(shù)據(jù)庫檢索數(shù)據(jù)并執(zhí)行 CRUD 操作。但是我們有關于如何在 MVC C# 中實現(xiàn) TAP 的任何指南或具體方法嗎?提前致謝?。?!..
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經(jīng)驗 獲得超8個贊

很抱歉提出一個一般性問題,但我想要關于代碼中可以啟用 TAP(任務異步編程)以獲得更好性能的功能/區(qū)域的建議。

首先我們來了解一下,什么是異步編程,它只是意味著在后臺處理邏輯,而主線程處理繼續(xù)進行,而不會像同步處理那樣阻塞調用線程,有兩種異步處理:

  1. IO Async,這是主要用例,它適用于進程范圍之外的任何調用,例如對數(shù)據(jù)庫或 Web 服務/Web API 的調用,在本例中是基于硬件的并發(fā)由于不再需要軟件線程,一旦通過網(wǎng)絡分派調用,軟件線程就可以返回到線程池來服務其他請求,從而提高系統(tǒng)的可擴展性或可用性,如 @Fabio 所建議的。軟件線程的作用是分派調用并接收結果,沒有任何等待,在大多數(shù)情況下,假設沒有內存邏輯,這非???< 1 毫秒。想象一下,池中只有 25 個線程用于同步調用,最多可以服務 50-100 個請求,因為等待管道會因長時間運行的請求(幾秒鐘)而膨脹,但對于異步處理,可以分派 1000 個請求,因為它們是通過網(wǎng)絡分派進行處理的,所以實際上沒有等待線程池線程分派

  2. In Memory Async,這不是最常見的用例,但這更多的是關于釋放 Ui 線程,同時可以在后臺進行邏輯內存處理。它有助于保持界面的響應能力。在這種情況下,Ui 也可以響應,因為數(shù)據(jù)庫調用是異步完成的,因為同步調用總是會阻塞主線程,從而使系統(tǒng)無響應。

異步處理和并行處理有什么區(qū)別?

并行處理始終在內存中,旨在利用所有計算能力并行處理邏輯元素(最好是互斥的)并最終聚合結果。它旨在利用所有 CPU 處理能力。相比之下,異步處理是在后臺進行處理,而不是阻塞主處理線程,內存中的異步處理,如果并行化可能仍然使用 CPU 核心,但否則它不會使 CPU 核心激增。

我還使用 Web API,其中可以使用 async-await 從數(shù)據(jù)庫檢索數(shù)據(jù)并執(zhí)行 CRUD 操作。

Web API通常托管在IIS等Web服務器上,該服務器具有有限的線程池,并且CRUD操作是應用程序邊界之外的DB調用。如上所述,這是使用異步調用并提高系統(tǒng)可擴展性的理想情況。

設計原則:

可以列出一些主要細節(jié):

  1. 在C#中async方法需要以運算符為await前綴

  2. 從入口到出口的完整鏈需要啟用Async-Await,如果我們錯過了中間的任何地方,那么調用將變成非異步/阻塞,因為只有當通過網(wǎng)絡進行 IO 調用分派并且任何其他線程接管時,實際線程才會被釋放對于內存中的調用。啟用 MVC 和 WebAPI 等框架使控制器(入口點)默認異步

  3. 對于線程池線程可以用來ConfigureAwait(false)指示任何池線程接收結果,它不需要進入相同的同步上下文,這是默認的,除了 Ui 線程,它不能被任何其他線程替換(因為它的特殊性和只能渲染控件)。

結論

相同的原則Async適用于所有框架,MVC,WebAPI,WCF,因為同一個框架可以同時進行AsyncSync調用,異步調用的行為更像是一個切面(橫切),其中線程可以被引導到同步模式(阻塞)或異步模式(非阻塞),從而增加系統(tǒng)Scalability / Availability


查看完整回答
反對 回復 2023-08-27
  • 1 回答
  • 0 關注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號