Diskuze: vlákna v ASP NET

C# .NET .NET (C# a Visual Basic) vlákna v ASP NET American English version English version

Avatar
peet.d
Člen
Avatar
peet.d:

Ahoj,

chtěl bych vytvořit background vlákno v metodě controlleru a výsledek zobrazit při dalším requestu. Chtěl bych tedy, abych se dostal k datům, které vypočítá vlákno z jiného controlleru, než kde jsem ho vytvořil.

V podstatě mi jde o toto:

  1. přijde request na controller, který spouští background vlákno.
  2. přijde request na jiný controller původní spuštěné vlákno stále běží.
  3. jakmile vlákno doběhne, tak bych chtěl získat data, které vrátilo - už, ale nejsem v controlleru, kde jsem vlákno spustil.

Tak jsem se chtěl zeptat, jaké by mohlo být řešení - možná by to šlo přes statickou proměnnou, ale nevím jestli je to úplně správné.

díky za nápady.

 
Odpovědět 5.6.2014 14:12
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Obecně vlákna nejsou ve webovych aplikacích, myslím, vůbec dobrý nápad. Jak si to napsal tak píšeš v kontextu jednoho uživatele, což je hrubý omyl. Zkus to takhle

1. přijde 1000 uživatelů a vytvoří request na controller, který spouští background vlákno.

Víš kam mířím?

Koukni se na Tasky oni je taky používají pro dlouhodobější operace. V případě že bys na tom trval bych volil počítací Singleton, který bude mít nějakou frontu požadavků na spočtení čehosi. Ten si bude v případě potřeby počítat ve vláknu a pro tebe bude držet poslední výsledek.

 
Nahoru Odpovědět 5.6.2014 15:22
Avatar
peet.d
Člen
Avatar
Odpovídá na Milan Křepelka
peet.d:

ok, díky.

Já jsem právě něco takovéhoto viděl v Javě pomocí ThreadPool myslím, proto jsem se na to ptal, ne že bych přímo něco takového teď chtěl dělat.
Jednalo se o webovou aplikaci, která zobrazovala okno čekejte prosím a právě pozadí této stránky běželo vlákno, klient však mohl jít na jinou stránku a dělat něco dalšího, pokud se vrátil na stránku čekejte prosím, tak podle toho zda již vlákno doběhlo tak se zobrazil výsledek vlákna - nějaké informace z backend služby (které právě získalo to vlákno).
Pravda je, že tam byla použita session, pro jednotlivé uživatele a výsledek vlákna uložen do session a pak nějak zobrazen.

Jinak mě to zajímalo spíš teoreticky jak by se to v NET řešilo.

 
Nahoru Odpovědět 5.6.2014 15:55
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Tak tohle je typická AJAXová situace. Přes View normálně vykreslíš stránku. Tam kde očekáváš nějaký dlouhý výsledek hodíš do nějakýho obsahovýho containeru obrázek nebo text "Teďka počítám problémy vesmíru". AJAXem zavoláš metodu na serveru a až ti přijde odpověď - obrázek javascriptem zničíš a naplníš výsledkem.

 
Nahoru Odpovědět 5.6.2014 16:39
Avatar
peet.d
Člen
Avatar
Odpovídá na Milan Křepelka
peet.d:

Jo to by bylo řešení.

děkuju

 
Nahoru Odpovědět 6.6.2014 8:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.