dotaz:
Mam WCF Server (S1), na ktery se pripojuje klient (K) a vola metodu, ktera vraci nejaky vysledek. Metoda na serveru vola jiny server (S2), ktery vrati ID pozadavku a po nejake dobe zavola zpatky prvni server (S1) a preda mu vysledek oznackovany tim ID, takze si to ten prvni server spoji a vrati jako navratovou hodnotu ten vysledek zpet na klienta (K).
Takze to vypada nejak takhle:
K -> S1 -> S2
...
S2 -> S1 -> K
Problem je v tom, ze komunikace K <-> S1 je synchronni, zatimco S1 <-> S2 asynchronni (muze trvat relativne dlouho). Na S1 jsem to zkousel resit pres EventWaitHandle
a WaitOne()
, ale tim se mi cely server zasekne. Problem je v tom, ze to cele bezi v jednom threadu a pri volani WaitOne()
server S1 nezvladne obsluhovat dalsi pozadavky vc. toho, ktery mu rekne, ktery handle ma uvolnit.
Mate nekdo napad, jak tohle resit? Nebo jak se to resi obecne? Zkousel jsem vselijake kombinace ConcurrencyMode
a InstanceContextMode
a bud to delam spatne a nebo to nevede k reseni...