Thread pool
Vždy som chcel projekt prepísať do asynchrónneho formátu, ale ASP.NETMVC3 je príliš zdĺhavé na písanie, .NET 4.5 a ASP.NET MVC kód je relatívne jednoduchý, MS to vždy rád robil, každá zrelá vec sa musí vyvíjať viacerými verziami, aby sa štandardizovala. ASP.NET prečo je potrebné používať asynchrónne v MVC, IIS má vláknový pool na spracovanie používateľských požiadaviek, keď príde nová požiadavka, vlákna v poole budú naplánované na spracovanie požiadavky, avšak keď je súbežnosť vysoká, vlákna v poole už nemôžu splniť toľko požiadaviek a každé vlákno v poole je pri spracovaní požiadavky zaneprázdnené, vlákno spracovávajúce požiadavku bude zablokované a vlákno nemôže poskytovať služby inej požiadavke, ak je fronta požiadaviek plná, web Server požiadavku odmietne a je v stave obsadenosti HTTP 503. Ak máte vysokú latenciu, napríklad sieťové operácie, väčšina týchto vlákien len čaká na stav a väčšinou nič nerobí, takéto vlákna môžu používať asynchrónne programovanie na lepšie využitie.
Asynchrónne spracovanie
Napríklad, ak požiadavka generuje sieťové volanie, ktoré trvá dve sekundy, požiadavka sa vykonáVykonanie trvá dve sekundy, a to synchronne aj asynchrónne。 AlePočas asynchrónneho hovoru server neblokuje odpoveď na iné požiadavky, kým čaká na dokončenie prvej požiadavky。 Preto, keď je veľa požiadaviek volajúcich dlhodobé operácie, asynchrónne požiadavky môžu zabrániť zaradeniu žiadostí. V .NET 4.5 je maximálny pool vlákien 5000 a kľúčové slová await a async boli tiež pridané v .NET 4.5 na zjednodušenie asynchrónneho programovania.
Synchronné alebo asynchrónne (úryvok z MSDN)
- Typicky sa synchronizačné pipeline používajú, keď sú splnené nasledujúce podmienky:
- Jednoduchá prevádzka alebo krátka doba prevádzky.
- Jednoduchosť je dôležitejšia než efektivita.
- Táto operácia je primárne operácia CPU, nie operácie vyžadujúce veľkú režijnú záťaž disku alebo siete. Použitie asynchrónnej metódy pre operácie viazané na CPU neprináša žiadny prínos a zároveň vedie k väčšej režijnej záťaži.
Vo všeobecnosti sa asynchrónne pipeline používajú, keď sú splnené nasledujúce podmienky:
- Operácie sú viazané na sieť alebo I/O, nie na CPU.
- Testy ukázali, že blokovacie operácie sú úzkym miestom pre výkon lokality, a použitím asynchrónnych metód pre tieto blokovacie volania môže IIS obslúžiť viac požiadaviek.
- Paralelizmus je dôležitejší než jednoduchosť kódu.
- Chcete poskytnúť mechanizmus, ktorý umožní používateľom zrušiť dlhodobé požiadavky.
ASP.NET používať asynchrónne regulátory v MVC
|