Vītņu baseins
Es vienmēr esmu gribējis pārrakstīt projektu uz asinhronu, bet ASP.NETMVC3 ir pārāk apgrūtinošs, lai rakstītu, .NET 4.5 un ASP.NET MVC kods ir salīdzinoši vienkāršs, MS, šķiet, vienmēr ir paticis to darīt, katra nobriedusi lieta, tai ir jāattīsta vairākas versijas, lai tendence standartizēt. ASP.NET kāpēc MVC ir jāizmanto asinhrons, IIS ir pavedienu pūls, lai apstrādātu lietotāju pieprasījumus, kad tiek saņemts jauns pieprasījums, pūlā esošie pavedieni tiks ieplānoti pieprasījuma apstrādei, bet, ja vienlaicīgums ir augsts, baseina pavedieni vairs nevar apmierināt tik daudz pieprasījumu, un katrs baseina pavediens ir aizņemts, apstrādājot pieprasījumu, pieprasījuma apstrādes pavediens tiks bloķēts, un pavediens nevar sniegt pakalpojumus citam pieprasījumam, ja pieprasījuma rinda ir pilna, tīmeklis Serveris noraida pieprasījumu un ir HTTP 503 aizņemtības stāvoklī. Ja jums ir darīšana ar lielu latentumu, piemēram, tīkla operācijām, lielākā daļa šo pavedienu vienkārši gaida stāvokli un lielāko daļu laika neko nedara, šādi pavedieni var izmantot asinhronu programmēšanu, lai to labāk izmantotu.
Asinhronā apstrāde
Piemēram, ja pieprasījums ģenerē tīkla zvanu, kura pabeigšana aizņem divas sekundes, pieprasījums tiek veiktsGan sinhroni, gan asinhroni izpilde aizņem divas sekundes。 BetAsinhronā zvana laikā serveris nebloķē atbildi uz citiem pieprasījumiem, gaidot pirmā pieprasījuma pabeigšanu。 Tāpēc, ja ir daudz pieprasījumu, kas izsauc ilgstošas operācijas, asinhronie pieprasījumi var novērst pieprasījumu rindu. .NET 4.5 maksimālais pavedienu kopums ir 5000, un .NET 4.5 ir pievienoti arī gaidīšanas un asinhronie atslēgvārdi, lai vienkāršotu asinhrono programmēšanu.
Sinhrons vai asinhrons (fragments no MSDN)
- Parasti sinhronizācijas cauruļvadi tiek izmantoti, ja ir izpildīti šādi nosacījumi:
- Vienkārša darbība vai īss darbības laiks.
- Vienkāršība ir svarīgāka par efektivitāti.
- Šī darbība galvenokārt ir CPU operācijas, nevis darbības, kas saistītas ar lielu diska vai tīkla pieskaitāmo izdevumu. Asinhronās darbības metodes izmantošana ar CPU saistītām operācijām nesniedz nekādu labumu un rada arī lielākas pieskaitāmās izmaksas.
Parasti asinhronie cauruļvadi tiek izmantoti, ja ir izpildīti šādi nosacījumi:
- Operācijas ir saistītas ar tīklu vai I/O, nevis CPU.
- Testi ir parādījuši, ka bloķēšanas operācijas ir vietnes veiktspējas vājš kakls, un, izmantojot asinhronās metodes šiem bloķēšanas zvaniem, IIS var apkalpot vairāk pieprasījumu.
- Paralēlisms ir svarīgāks par koda vienkāršību.
- Jūs vēlaties nodrošināt mehānismu, kas ļauj lietotājiem atcelt ilgstošus pieprasījumus.
ASP.NET izmantot asinhronos kontrolierus MVC
|