理想情況下,任何涉及等待時(shí)間的事情都應(yīng)該異步完成。數(shù)據(jù)庫(kù)查詢通常必須調(diào)用遠(yuǎn)程服務(wù)器,發(fā)送查詢,然后等待服務(wù)器響應(yīng)結(jié)果。這使得它成為異步的主要候選對(duì)象,因?yàn)檎麄€(gè)“等待服務(wù)器響應(yīng)”部分是應(yīng)用程序中無(wú)法考慮的變量。
在代碼等待異步操作完成時(shí),使用異步允許Web服務(wù)器重用當(dāng)前線程以字段其他Web請(qǐng)求。當(dāng)它完成時(shí),一個(gè)線程將返回給您的應(yīng)用程序以繼續(xù)處理。如果運(yùn)行同步,則在等待數(shù)據(jù)庫(kù)或其他長(zhǎng)時(shí)間運(yùn)行的進(jìn)程時(shí),線程會(huì)死鎖,并且Web服務(wù)器的池不可用。如果這樣做足夠,Web服務(wù)器可能會(huì)耗盡可用的線程,并且必須開始對(duì)進(jìn)一步的請(qǐng)求進(jìn)行排隊(duì)。異步通過(guò)釋放線程來(lái)緩解這一點(diǎn),而線程只是在等待某件事情,從而增加了Web服務(wù)器可以處理的潛在負(fù)載。