Szál medence
Mindig is szerettem volna átírni a projektet aszinkronra, de az ASP.NETMVC3 túl nehézkes az íráshoz, a .NET 4.5 és ASP.NET MVC kód viszonylag egyszerű, az MS mindig is szerette ezt csinálni, minden érett dolgot, több verziót kell fejlesztenie, hogy szabványosítsa magát. ASP.NET miért kell aszinkront használni az MVC-ben, az IIS-nek van egy szálkészlete a felhasználói kérések feldolgozására, azonban amikor új kérés érkezik, a pool szálai időzítve lesznek a kérés feldolgozására, de ha a párhuzamosság magas, a pool szálai már nem tudják kielégíteni a kérést, és minden szál a pool alatt foglalt a kérés feldolgozásakor, a kérést feldolgozó szál blokkolódik, és a szál nem tud szolgáltatást nyújtani egy másik kérésnek, ha a kéréssorban megtel, a web A szerver elutasítja a kérést, és HTTP 503 foglalt állapotban van. Ha nagy késleltetéssel küzdsz, például hálózati műveletekkel, ezek a szálak többsége csak várja az állapotot, és többnyire semmit sem csinál, az ilyen szálak aszinkron programozással is jobban kihasználhatják azt.
Aszinkron feldolgozás
Például, ha egy kérés olyan hálózati hívást generál, amelynek teljesítése két másodpercig tart, akkor a kérés megtörténikKét másodperc alatt egyszerre szinkronban és aszinkronban is végrehajtják。 DeAszinkron hívás során a szerver nem blokkolja a válaszokat más kérésekre, amíg az első kérés befejeződik.。 Ezért, amikor sok kérés hív hosszú ideig futó műveleteket, az aszinkron kérések megakadályozhatják a sorba állást. A .NET 4.5-ben a maximális szálkészlet 5000, és a .NET 4.5-ben is hozzáadták a wait és aszinkron kulcsszavakat az aszinkron programozás egyszerűsítése érdekében.
Szinkron vagy aszinkron (részlet az MSDN-ből)
- Általában a szinkron pipeline-okat akkor használják, ha a következő feltételek teljesülnek:
- Egyszerű üzemeltetés vagy rövid futásidő.
- Az egyszerűség fontosabb, mint a hatékonyság.
- Ez a művelet elsősorban CPU-s műveletekről szól, nem pedig olyan műveletekről, amelyek nagy lemez- vagy hálózati többletterhelést igényelnek. Az aszinkron működési módszer használata CPU-hoz kötött műveletekhez nem jár előnyt, és több többletterhelést is eredményez.
Általánosságban az aszinkron pipeline-eket akkor használják, ha a következő feltételek teljesülnek:
- A műveletek hálózathoz vagy I/O-hoz kötöttek, nem CPU-hoz kötöttek.
- Tesztek kimutatták, hogy a blokkolási műveletek szűk keresztmetszetet jelentenek a helyszín teljesítményében, és aszinkron módszerek alkalmazásával az IIS több kérést tud szolgáltatni.
- A párhuzamosság fontosabb, mint a kód egyszerűsége.
- Olyan mechanizmust szeretnél biztosítani, amely lehetővé teszi a felhasználók számára, hogy hosszú ideig tartó kéréseket töröljenek.
ASP.NET aszinkron vezérlőket használunk az MVC-ben
|