Trådpool
Jag har alltid velat skriva om projektet till asynkront, men ASP.NETMVC3 är för omständligt att skriva, .NET 4.5 och ASP.NET MVC-kod är relativt enkelt, Microsoft verkar alltid ha gillat att göra detta, varje mogen sak måste utveckla flera versioner för att kunna standardiseras. ASP.NET varför du behöver använda asynkront i MVC? IIS har en trådpool för att behandla användarförfrågningar, när en ny förfrågan kommer kommer trådarna i poolen att schemaläggas för att behandla förfrågan, men när samtidigheten är hög kan trådarna i poolen inte längre möta så många förfrågningar, och varje tråd i poolen är upptagen när förfrågan behandlas, tråden som behandlar förfrågan blockeras, och tråden kan inte tillhandahålla tjänster till en annan förfrågan, om förfrågningskön är full, webben Servern avvisar förfrågan och är i ett HTTP 503-upptaget tillstånd. Om du har hög latens, som nätverksoperationer, väntar de flesta av dessa trådar bara på tillståndet och gör oftast ingenting, sådana trådar kan använda asynkron programmering för att bättre utnyttja det.
Asynkron bearbetning
Till exempel, om en förfrågan genererar ett nätverksanrop som tar två sekunder att slutföra, görs förfråganDet tar två sekunder att köra både synkront och asynkront。 MenUnder ett asynkront anrop blockerar servern inte svaret på andra förfrågningar medan den väntar på att den första förfrågan ska slutföras。 Därför kan asynkrona förfrågningar förhindra kö när många förfrågningar anropar långvariga operationer. I .NET 4.5 är den maximala trådpoolen 5000, och nyckelorden await och async har också lagts till i .NET 4.5 för att förenkla asynkron programmering.
Synkron eller asynkron (utdrag från MSDN)
- Vanligtvis används synkpipelines när följande villkor är uppfyllda:
- Enkel drift eller kort drifttid.
- Enkelhet är viktigare än effektivitet.
- Denna operation är främst CPU-operationer snarare än operationer som involverar mycket disk- eller nätverksöverhead. Att använda en asynkron operationsmetod för CPU-bundna operationer ger ingen fördel och leder dessutom till mer overhead.
Generellt används asynkrona pipelines när följande villkor är uppfyllda:
- Operationerna är nätverksbundna eller I/O-bundna snarare än CPU-bundna.
- Tester har visat att blockeringsoperationer är en flaskhals för platsens prestanda, och genom att använda asynkrona metoder för dessa blockeringsanrop kan IIS hantera fler förfrågningar.
- Parallellism är viktigare än enkelhet i koden.
- Du vill erbjuda en mekanism som gör det möjligt för användare att avbryta långvariga förfrågningar.
ASP.NET använder asynkrona styrenheter i MVC
|