Lankapooli
Olen aina halunnut kirjoittaa projektin uudelleen asynkroniseksi, mutta ASP.NETMVC3 on liian kömpelö kirjoittaa, .NET 4.5 ja ASP.NET MVC-koodi on suhteellisen yksinkertainen, MS tuntuu aina pitäneen tästä, jokainen kypsä juttu, sen täytyy kehittää useita versioita standardisoituakseen. ASP.NET miksi MVC:ssä täytyy käyttää asynkronista, IIS:llä on säieallas käyttäjäpyyntöjen käsittelyyn, mutta kun uusi pyyntö tulee, poolin säikeet ajoitetaan käsittelemään pyyntöä, mutta kun samanaikaisuus on korkea, poolin säikeet eivät enää pysty täyttämään niin monia pyyntöjä, ja jokainen poolin säie on varattu, kun kyse käsitellään, säie estää ja säie ei voi tarjota palveluita toiselle pyynnölle, jos pyyntöjono on täynnä, verkko Palvelin hylkää pyynnön ja on HTTP 503:n varattutilassa. Jos kyseessä on korkea viive, kuten verkkotoiminnot, useimmat näistä säikeistä vain odottavat tilaa eivätkä tee suurimman osan ajasta mitään, tällaiset säikeet voivat käyttää asynkronista ohjelmointia hyödyntääkseen sitä paremmin.
Asynkroninen prosessointi
Esimerkiksi, jos pyyntö luo verkkokutsun, jonka suorittaminen kestää kaksi sekuntia, pyyntö tehdäänSen suorittaminen sekä synkronisesti että asynkronisesti kestää kaksi sekuntia。 MuttaAsynkronisen puhelun aikana palvelin ei estä vastausta muihin pyyntöihin odottaessaan ensimmäisen pyynnön valmistumista。 Siksi, kun paljon pyyntöjä kutsuu pitkäaikaisia operaatioita, asynkroniset pyynnöt voivat estää pyyntöjen jonottamisen. .NET 4.5:ssä maksimisäikepooli on 5000, ja await- ja async-avainsanat on lisätty myös .NET 4.5:een asynkronisen ohjelmoinnin helpottamiseksi.
Synkroninen vai asynkroninen (ote MSDN:stä)
- Tyypillisesti synkronointiputkia käytetään, kun seuraavat ehdot täyttyvät:
- Yksinkertainen käyttö tai lyhyt käyttöaika.
- Yksinkertaisuus on tärkeämpää kuin tehokkuus.
- Tämä operaatio on ensisijaisesti suorittimen toimintoja, ei niinkään toimintoja, joissa on paljon levy- tai verkkokuormitusta. Asynkronisen toimintatavan käyttäminen prosessorin rajoittamissa operaatioissa ei tuota hyötyä ja aiheuttaa myös enemmän ylikuormitusta.
Yleisesti ottaen asynkronisia putkistoja käytetään, kun seuraavat ehdot täyttyvät:
- Operaatiot ovat verkko- tai I/O-sidottuja, eivätkä CPU-sidottuja.
- Testit ovat osoittaneet, että estotoiminnot ovat pullonkaula sivuston suorituskyvylle, ja käyttämällä asynkronisia menetelmiä näissä estokutsuissa IIS voi palvella enemmän pyyntöjä.
- Rinnakkaisuus on tärkeämpää kuin koodin yksinkertaisuus.
- Haluat tarjota mekanismin, jonka avulla käyttäjät voivat peruuttaa pitkäaikaiset pyynnöt.
ASP.NET käyttää asynkronisia ohjaimia MVC:ssä
|