» »

[.NET]asinhrona procedura v web service metodi

[.NET]asinhrona procedura v web service metodi

MrStein ::

Bi šlo v telesu web service metode pognati eno asinhrono proceduro?

Torej:
WS handler se izvaja ("begin")
požene se asinhrona procedure (trajalo bo predvidoma dolgo)
WS handler se konča in vrne odgovor ("end")

Torej asinhrona procedura bi se izvajala še potem, ko se WS konča on vrne odgovor.

Asinhroni klici bi naj bili core feature v .NET, če sem prav razumel, vprašanje pa je kako je s tem v enterprise okolju (application server, transakcije).
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
  • spremenil: MrStein ()

mihies ::

async/await (predpostavljam, da misliš na tole) so del .net 4.5 in preko dodatnih knjižnic tudi na 4.0. Dela fenomenalno.

Kaj misliš s tem "kako"?

Asinhrone procedure niso zato, da tečejo ko se vrne odgovor. So zato, da se vračanje odgovora ustavi, nit se sprosti, ko se asinhrona procedura vrne, se vračanje odgovora nadaljuje.
Z drugimi besedami, asinhronost je zato, da se resursi sprostijo dokler ni razultatov.
Lahko pa poženeš tudi asinhrono metodo, ki nič ne vrača in se je ne čaka - za to zadnje lahko uporabiš kar Task.
http://blog.rthand.com/
SLODUG - uporabniška skupina
https://www.facebook.com/groups/slodug/

MrStein ::

Ja saj.

Takole bi bil scenarij:
šef dobi telefonski klic, v njem stranka pove zahtevo, šef za trenutek prisloni slušalke na prsi in zakliče "Francelj! Začni delat na tem-in-tem tasku.", nato spet prisloni slušalke ušesom in kulturno zaključi pogovor.
Francelj bo task končal čez dva dni.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

darkolord ::

Načinov je mnogo, je pa res _zelo_ odvisno od tega, kakšen task točno se bo izvajal.

Tukaj je kar nekaj čtiva (malo bolj splošno) na temo izvajanja asinhronih taskov v asp.net.

Načeloma pa spletni strežnik ni ravno namenjen izvajanju res dolgih taskov - za primer naročila, ki si ga omenil, bi bilo verjetno bolje, da spletni servis novo nalogo samo doda v čakalno vrsto, potem jo pa windows service ali nek schedulan task pobere in sprocesira.

MrStein ::

Saj ni "spletni strežnik".
Je "velik" sistem za obdelavo podatkov, ki ima med drugim en WS vmesnik.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

MrStein ::

"application server", ne "web server", če se tako izrazim.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

darkolord ::

Aja, OK. Potem lahko kar enostavno nove Taske spawnaš.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Python primer async/await

Oddelek: Programiranje
181931 (1037) jype
»

Android threadi in asynctaski

Oddelek: Programiranje
231458 (1104) Kocka
»

Asinhronost

Oddelek: Programiranje
122339 (2108) mihies
»

programerska paradigma - WTF? (strani: 1 2 )

Oddelek: Programiranje
605724 (4242) slitkx
»

Desktop aplikacije večinoma niso multithreaded??? (strani: 1 2 )

Oddelek: Programiranje
554627 (3873) Gundolf

Več podobnih tem