Kezdőoldal » Számítástechnika » Programozás » . NET MVC-ben mi értelme van...

. NET MVC-ben mi értelme van az async action-öknek?

Figyelt kérdés
Mert ugye az aszinkronitás azért jó hogy párhuzamos szálkezelés végett hasznos, de amikor egy Action meghívódik akkor a w3 process (az iis-en) mindig új példányt csinál, vagyis két külön user requestje sosem ugyanabba a controllerbe fut be, hanem külön példányba, vagyis nem értem az async jelentőségét. (valszeg valamit rosszul tudok, azért kérdezem)

2020. febr. 21. 09:36
 1/7 anonim ***** válasza:
92%

Nem tudom pontosan mire gondolsz, talán szemléltethetem az aszinkronitás fontosságát MVC környezetben. A view-on lévő elemek külön funkciókhoz kapcsolódnak ugyebár, például bizonyos gomb szerver kommunikációt produkál. A megnyomásával egy háttérfolyamat aszinkron módon elindul, mely a szerver válaszára vár. Például nagyobb riport lekérésére, így az eltarthat akár fél-2 percig is. Ez alatt az idő alatt minden más funkciód elérhető és elindítható, mivel az aszinkronitás lehetővé teszi a programod válaszadását más területeken. Amint végzett a riport lekérése, az álatalad korábban megadott handler callback már intézheti is a válasz lekezelését.


Nem tudom ez válasz-e a kérdésedre, de ez egy példa arra, hogy sok esetben nélkülönözhetetlen az aszinkronitás, különben a felhasználó, csak annyit lát, hogy a program le van fagyva.

2020. febr. 21. 10:39
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

Iiigen, de (ha jól értelek) ez az asszinkronitás amit te írtál a kliens és szerver közt zajló (pl egy ajax async hívás böngészőből). Én viszont arra gondolok hogy a végpont a szerver oldalon egy async metódus. Tehát a http://valami/asdf/Get az egy async method lesz, vagyis pl így nézne ki az action:


public async asdf Get(int Id) ...


és én itt nem értem az async jelentősségét, ha minden egyes request új példányt csinál a controllerből, akkor nem konkrétan ugyanezt a metódust hívja meg, hanem egy másik példánynak ugyanezen metódusát, vagyis az async értelmét veszti. (most így látom)

2020. febr. 21. 10:49
 3/7 anonim ***** válasza:
87%
Őszintén én nem .net környezetben nőttem fel, de ha a kliens lekér egy információt a szervertől, ami tényleg csupán egy getter meghívása szerver oldalon, akkor ez a művelet tényleg csak egy kérés-válasz szinkron megvalósítás. Nem tudom, az a kulcsszó mit takar. Gyanítom, ha nem volna ott, ugyanúgy működne a program.
2020. febr. 21. 11:06
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:

Ugyanaz az értelme, mint bármilyen más környezetben.

Növelni lehet vele a reszponzitivitást, mert amíg egy szál áll, addig a többi dolgozhat.

Lehet, hogy külön kérésre külön thread indul(na), de nincs elérhető végtelen thread a webserver számára.

2020. febr. 21. 11:34
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

Pontosan ahogy a 4-es mondja.

Viszont a függvények belsejét is ennek megfelelően kell megírni, mert pl ha entityframework esetén SaveChanges-t és ToListet hívsz belül SaveChangesAsnyc és ToListAsyc helyett, akor cseszheted, pont ugyanott vagy mintha nem lenne async a metódusod, hiszen blokkol a hívásokkor.

2020. febr. 21. 21:42
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Köszönöm a válaszokat. Tehát ez az async action csak akkor kap értelmet, ha az IIS szintű több szál kezelés elérte a határait? Ha van mondjuk 5 kérésnek 5 különböző kontextusa, A B C D E, és jön egy hatodik, amit már az IIS nem tudna rendesen lekezelni, akkor az A contextust használja fel hozzá hogy párhuzamosan fusson az első kéréssel?
2020. febr. 24. 09:25
 7/7 A kérdező kommentje:
kontextust írtam, de szálra gondoltam
2020. febr. 24. 09:27

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!