Siūlų telkinys
Aš visada norėjau perrašyti projektą į asinchroninį, bet ASP.NETMVC3 yra per sudėtinga rašyti, .NET 4.5 ir ASP.NET MVC kodas yra gana paprastas, MS atrodo, kad visada mėgo tai daryti, kiekvienas brandus dalykas, jis turi plėtoti keletą versijų linkę standartizuoti. ASP.NET kodėl MVC reikia naudoti asinchroninį, IIS turi gijų telkinį vartotojų užklausoms apdoroti, kai gaunama nauja užklausa, telkinio gijos bus suplanuotos apdoroti užklausą, tačiau kai sutapimas yra didelis, telkinio gijos nebegali patenkinti tiek daug užklausų, o kiekviena telkinio gija yra užimta apdorojant užklausą, užklausą apdorojanti gija bus užblokuota, o gija negali teikti paslaugų kitai užklausai, jei užklausų eilė pilna, žiniatinklis Serveris atmeta užklausą ir yra užimtas HTTP 503. Jei susiduriate su dideliu vėlavimu, pvz., tinklo operacijomis, dauguma šių gijų tiesiog laukia būsenos ir didžiąją laiko dalį nieko nedaro, tokios gijos gali naudoti asinchroninį programavimą, kad geriau ją išnaudotų.
Asinchroninis apdorojimas
Pavyzdžiui, jei užklausa sugeneruoja tinklo skambutį, kuris užtrunka dvi sekundes, užklausa pateikiamaVykdyti tiek sinchroniškai, tiek asinchroniškai užtrunka dvi sekundes。 BetAsinchroninio skambučio metu serveris neblokuoja atsakymo į kitas užklausas, laukdamas, kol bus baigta pirmoji užklausa。 Todėl, kai yra daug užklausų, iškviečiančių ilgai trunkančias operacijas, asinchroninės užklausos gali užkirsti kelią užklausų eilėje. .NET 4.5 maksimalus gijų telkinys yra 5000, o laukimo ir asinchroniniai raktažodžiai taip pat buvo įtraukti į .NET 4.5, kad būtų supaprastintas asinchroninis programavimas.
Sinchroninis arba asinchroninis (ištrauka iš MSDN)
- Paprastai sinchronizavimo srautai naudojami, kai tenkinamos šios sąlygos:
- Paprastas valdymas arba trumpas veikimo laikas.
- Paprastumas yra svarbesnis už efektyvumą.
- Ši operacija pirmiausia yra procesoriaus operacijos, o ne operacijos, susijusios su daug disko ar tinklo pridėtinių išlaidų. Asinchroninio veikimo metodo naudojimas procesoriaus operacijoms neduoda jokios naudos, be to, padidėja pridėtinės išlaidos.
Apskritai asinchroniniai vamzdynai naudojami, kai tenkinamos šios sąlygos:
- Operacijos yra susietos su tinklu arba I/O, o ne su procesoriumi.
- Bandymai parodė, kad blokavimo operacijos yra kliūtis svetainės veikimui, o naudojant asinchroninius metodus šiems blokavimo skambučiams, IIS gali aptarnauti daugiau užklausų.
- Lygiagretumas yra svarbesnis už kodo paprastumą.
- Norite pateikti mechanizmą, leidžiantį vartotojams atšaukti ilgai trunkančias užklausas.
ASP.NET naudoti asinchroninius valdiklius MVC
|