Trådpool
Jeg har alltid ønsket å skrive om prosjektet til asynkront, men ASP.NETMVC3 er for tungvint å skrive, .NET 4.5 og ASP.NET MVC-kode er relativt enkelt, MS ser ut til alltid å ha likt å gjøre dette, alt modent må det utvikle flere versjoner for å kunne standardiseres. ASP.NET hvorfor du må bruke asynkront i MVC? IIS har en trådpool for å behandle brukerforespørsler. Når en ny forespørsel kommer, vil trådene i poolen bli planlagt til å behandle forespørselen, men når samtidigheten er høy, kan trådene i poolen ikke lenger møte så mange forespørsler, og hver tråd i poolen er opptatt når forespørselen behandles, vil tråden som behandler forespørselen bli blokkert, og tråden kan ikke levere tjenester til en annen forespørsel. Hvis forespørselskøen er full, vil weben være Serveren avviser forespørselen og er i en HTTP 503 opptatt-tilstand. Hvis du har høy forsinkelse, som nettverksoperasjoner, venter de fleste av disse trådene bare på tilstanden og gjør ingenting mesteparten av tiden, slike tråder kan bruke asynkron programmering for å utnytte det bedre.
Asynkron prosessering
For eksempel, hvis en forespørsel genererer et nettverkskall som tar to sekunder å fullføre, blir forespørselen gjortDet tar to sekunder å utføre både synkront og asynkront。 MenUnder et asynkront kall blokkerer ikke serveren svaret på andre forespørsler mens den venter på at den første forespørselen skal fullføres。 Derfor, når det er mange forespørsler som kaller langvarige operasjoner, kan asynkrone forespørsler forhindre at forespørsler kommer i kø. I .NET 4.5 er maksimal trådpool 5000, og nøkkelordene await og async er også lagt til i .NET 4.5 for å forenkle asynkron programmering.
Synkron eller asynkron (utdrag fra MSDN)
- Vanligvis brukes synkroniseringspipelines når følgende betingelser er oppfylt:
- Enkel drift eller kort driftstid.
- Enkelhet er viktigere enn effektivitet.
- Denne operasjonen er primært CPU-operasjoner, snarere enn operasjoner som involverer mye disk- eller nettverksoverhead. Å bruke en asynkron operasjonsmetode for CPU-bundne operasjoner gir ingen fordel og fører også til mer overhead.
Generelt brukes asynkrone rørledninger når følgende betingelser er oppfylt:
- Operasjonene er nettverksbundne eller I/O-bundne i stedet for CPU-bundne.
- Tester har vist at blokkeringsoperasjoner er en flaskehals for nettstedets ytelse, og ved å bruke asynkrone metoder for disse blokkeringskallene, kan IIS betjene flere forespørsler.
- Parallellisme er viktigere enn enkelhet i koden.
- Du ønsker å tilby en mekanisme som lar brukere kansellere langvarige forespørsler.
ASP.NET bruker asynkrone kontrollere i MVC
|