Diskuze: Společná DLL pro web i exe úlohu?

C# .NET .NET (C# a Visual Basic) Společná DLL pro web i exe úlohu? American English version English version

Avatar
pletron
Člen
Avatar
pletron:

Ahoj,

mám obecnou otázku co se týká návrhu webové aplikace a systémové úlohy.

V dot.netu mám v C# kódu vytvořené webové stránky, říkejme jim "burza". Data čtou z databáze MSSQL.

Dále mám v C# vytvořenou systémovou aplikaci "server.exe", která stále "žije" v paměti počítače a přepočítává data a ukládá je do MSSQL, které pak IIS poskytuje uživatelům.

A já bych chtěl pro lepší optimalizaci práce sdílet společná data (cache) ve společném paměťovém prostoru. Ne přes MSSQL. Když serverová úloha zapíše do cache, aby je ihned mohly číst IIS webové stránky.

Je řešením DLL? Nějaké společně sdílené? Jakási společná bussines vrstva?

Napadlo mě vše udělat v jednom webovém projektu, mít pěkně společné zdrojáky a "server.exe" naroubovat a spouštět v global.asax. Ale problém je, že IIS se čas od času restartuje. A to by se bohužel restartoval i server.exe, který musí běžet stále, kvůli přepočtům.

Snad jsem to vysvětlil srozumitelně, děkuji moc za jakoukoliv radu.:)

Zdeněk

 
Odpovědět 5.12.2014 16:52
Avatar
Michal Štěpánek:

Restartuje se IIS nebo stroj, na kterém to IIS běží?

Nahoru Odpovědět 5.12.2014 18:31
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na pletron
Michal Štěpánek:

zapomněl jsem stisknou tlačítko odpovědět

Nahoru Odpovědět 5.12.2014 18:31
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
pletron
Člen
Avatar
Odpovídá na Michal Štěpánek
pletron:

No, AppPool v IIS jednou za čas restartuje IIS pro větší stabilitu a důsledkem toho by se bohužel restartovala i úloha "server", třeba zrovna v nějakém kritickém přepočtu. Nebo ne?

 
Nahoru Odpovědět 6.12.2014 0:34
Avatar
Odpovídá na pletron
Michal Štěpánek:

Nevím, ale myslím si, že exe soubor není závislý na běhu webové služby, protože je spouštěn "ze serveru" a ne IISkem. Takže pokud se nerestartuje "stroj", ale jen služba IIS nemělo by to mít vliv na tu úlohu "server"

Nahoru Odpovědět 6.12.2014 0:43
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
pletron
Člen
Avatar
Odpovídá na Michal Štěpánek
pletron:

Ano, to vím, že exe je nezávislý, ale to je současný nevyhovující stav. Exe úloha a IIS web.

Ptám se na to, jak to spojit. Můj dotaz je o tom, jak můžu tyto dvě činnosti spojit tak, aby data (cache) byla společná.

Rád bych celé řešení udělal společně pod webovou aplikací, ale App Pool IIS občas restartuje web a tím by mohl v nevhodný čas přerušit přepočet.

Jinak řečeno, potřebuji cache, která bude společná pro exe i web.

 
Nahoru Odpovědět 6.12.2014 1:32
Avatar
coells
Redaktor
Avatar
Odpovídá na pletron
coells:

Pokud máš pod kontrolou AppPoolIdentity, dá se to udělat. Nejjednodušší řešení by byla sdílená paměť přes memory-mapped files, ale budeš muset mít vlastní serializaci v rámci sdíleného prostoru, protože .NET objekty musí zůstat v kontextu procesu, kde byly vytvořeny. Navíc ti v rámci IIS poběží více procesů stejné aplikace (bez ohledu na nastavení AppPoolu), takže služba běžící vedle bude muset umět komunikovat s více nezávislými procesy současně.

Jestliže tě složitost nejjednoduššího řešení neodradila, tak ti ještě prozradím, že je to pitomost už z toho důvodu, že na stroji, kde běží IIS, nesmí běžet jiné (náročné) aplikace. Řešení přes SQL je správné a měl by ses ho držet.

V případě jednostranné komunikace ze strany IIS do služby je velice efektivní řešení WCF over TCP, které na stejném stroji jede přes named pipes (sdílený paměťový prostor).

 
Nahoru Odpovědět  +1 6.12.2014 2:02
Avatar
Odpovídá na pletron
sadlomaslox25:

tak si udelej pouze jeden projekt a to Windows service. v ramci teto servisy ti pobezi v jednom vlakne to co dela tvuj "server.exe" a ve druhem vlakne ti pobezi tvoje webove stranky.

 
Nahoru Odpovědět 6.12.2014 18:44
Avatar
pletron
Člen
Avatar
Odpovídá na sadlomaslox25
pletron:

Děkuji za zajímavou radu. Jak založit projekt Windows service bych asi zvladnul, ale vůbec netusim jak k tomu projektu připojím webové stránky.
Mohl bys mě prosím nasměrovat konkrétněji na nějaký web?

Moc děkuji.

 
Nahoru Odpovědět 6.12.2014 19:06
Avatar
Odpovídá na pletron
sadlomaslox25:

Zalezi jak moc sou ty stranky komplexni. Ted si uprime nejsem jisty jak moc je co uz prevedene do OWINu. Zacal bych treba tu
http://www.asp.net/…oject-katana
http://nancyfx.org/

 
Nahoru Odpovědět 7.12.2014 14:15
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 10 zpráv z 10.