Monitorování stavu klientské aplikace   zodpovězená otázka

VB.NET, Databáze

Dobrý den, mám databázovou aplikaci která mimo jiné i zapisuje logování/odlogování uživatelů. Řeším jak zajistit korektní odhlášení uživatele v případě, že uživateli vypadne síťové připojení,spadne aplikace atd. Nechal jsem se inspirovat článkem na tomto webu (kreslící tabule která komunikuje po síti). Napadlo mě, že by na serveru kde mám nainstalovaný sql server neustále běžela aplikace, která by naslouchala na určitém portu a kam by se klientské aplikace po spuštění připojovaly.Pokud by z nějákého důvodu došlo k přerušení spojení, tak by aplikace na serveru věděla že se uživatel odhlásil (nebo došlo k problému) a provedla odhlášení v databázi (zápis do tabulek log-off). Chtěl bych jen vědět zda toto považujete za dobrý nápad a zda tím nebude neúměrně zatížen server. Aplikaci používá cca 60 lidí (tzn. 60 připojení).Server má 3,5GB RAM a procesory 4xIntel Xeon 3,4GHz.

Díky za názory:)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podle mě je to zbytečně překombinované, nestačilo by, že by si aplikace zjistila, že nebyla ukončena korektně, a v takovém případě se nejprve odhlásila a hned přihlásila, pokud už to odhlašování vyloženě musíte dělat a nejde to bez něj? Stejně ji po pádu uživatelé pustí v 99% případů hned znovu.

Aplikace, která by držela spojení a při jejich ukončení provedla odhlášení, je sice v pohodě, ale pokud se spojení ukončí nestandardně (aplikace spadne), tak si toho může aplikace na serveru všimnout až za několik sekund či minut, je tam nějaký časový limit. Server by to nezatěžovalo, pokud aplikace nebude nic dělat, jen držet spojení a čekat, až budou ukončena. Ale říkám, aplikace to nemusí zjistit hned, ale až třeba za minutu, a to už se uživatel může zkoušet počtvrté přihlásit znovu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No přihlašování a odhlašování tam být musí (kontroluje to pracovník kdy jsou v práci). Teď to mám nastaveno tak, že aplikace při přihlášení kontroluje zda poslední odhlášení bylo korektní a pokud ne, tak provede odhlášení a hned přihlášení.(to znamená do času odhlášení dosadí aktuální datum a čas a do přihlášení také). Funguje to bez problémů, jen tam není ošetřen případ, kdy klientská aplikace spadne až ke konci pracovní doby (nebo nejde v kanclu proud,síť atd.) a uživatel se přihlásí až následující den. V tom případě mi to udělá pěkný maglajs ve statistikách které se automaticky generují.Já jsem si právě myslel, že aplikace na serveru zareaguje hned (stejně jako u té kreslící tabule,pokud se odpojím aplikace která je zrovna server zareaguje ihned).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A jaká je architektura vaší aplikace? Klient-SQL Server nebo Klient-Server-SQL Server? Ve druhém případě by bylo vše jednoduché, protože o správu klientů by se staral server a navíc je to řešení velmi škálovatelné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Teď moc nerozumím.Klientské aplikace jsou na lokální PC u každého uživatele a aplikace se připojuje na SQL server.A na stejném serveru na kterém běží ten SQL server by běžela i ta aplikace které by se starala o monitorování připojení.(na tom serveru neběží pouze SQL databáze ale je tam toho víc).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A jak mate vyreseno to, ze kdyz nekdo si z te aplikace vytahne heslo, ktere se pouziva k databazi, a pripoji se k ni a nastavi si, ze byl v praci az do vecera? Pripojovani klienta primo k sql serveru je lidove receno "o usta".

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, já bych to viděl takhle. Sledovat, jestli je pracovník v práci podle toho, zda-li má puštěnou aplikaci, je myšlenka totálně zvrácená. To je takový problém odejít a nechat počítač puštěný i s aplikací?

Pokud jde pouze o orientační sledování, pak to fungovat bude, aplikace za normálních okolností nepadá a když spadne, tak ji uživatel spustí hned znovu.

Pokud to chcete sledovat opravdu přesně, tak na to jsou jiná řešení, např. čipové karty u vchodu.

To, že se aplikace připojuje přímo k databázovému serveru, je v pohodě, pokud uživatelé nejsou programátoři. Běžný uživatel si z EXE souboru heslo nevytáhne a k databázi se nepřipojí.

Ale sledovat tímto způsobem přítomnost pracovníků v práci je opravdu kravina. Pro orientační a namátkovou kontrolu to stačí, ale spolehlivé to není.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud to s takovou aplikací myslíte vážně a má se skutečně používat v běžném provozu, doporučuji začít od začátku s uplně jiným konceptem a hlavně opravdovou klient-server architekturou. Nebo můžete použít některé hotové produkty, jsem přesvědčen že softwaru pro kontrolu docházky je dostatek.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Rád bych uvedl věci na pravou míru. Předně že se bude docházka sledovat tímto způsobem není výmysl můj ale vedení. A jde o to že aplikace primárně slouží k přidělování různých typů úkolů, počítání doby zpracování jednotlivých položek podle zaměření pracovníka atd, je toho více. Toho že by si někdo odchytnul heslo se nebojím. 99% pracovníků jsou ženy 40 let+ a nikdo z nich neumí programovat. Navíc user pod kterým se aplikace přihlašuje má oprávnění pouze na spouštění uložených procedur SQL serveru takže (pokud by to někdo z nich uměl jako že neumí) si neudělají ani select a mimo naše oddělení se na server nikdo nedostane. Výstup z aplikace je mimo jiné spoustu čísel a grafů pro vedení. A to je také důvod proč nikdo nenechá spuštěnou aplikaci aniž by u ní skutečně byl. Mimo jiné se totiž počítá produktivita práce pracovníka, takže pokud bude jen přihlášená aplikace ale pracovník nebude nic dělat, produktivita mu strašným způsobem klesne a hned to bude vidět...Aplikace spolehlivě funguje půl roku, k lepší kontrole korektního odhlašování mě přimělo to, že nám nedávno vypadnul asi na 2 hodiny proud. Bylo to bohužel ke konci pracovní doby a část pracovníků odešla domů, tudíž se přihlásila až druhý den a udělalo nám to problém ve statistikách.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A co tak logovat události do xml souboru na lokálním PC a ten xml souborek poté naimportovat do DB. Vše by se dalo zautomatizovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tam je problém v tom, že se do databáze nezapisuje pouze přihlášení/odhlášení uživatele do aplikace, ale zapisují se tam časy a "stavy" z číselníků (to znamená zaznamenává se jakou činnost pracovník v dané chvíli dělá) a vše musí být online aby to vedení mělo průběžně k dispozici.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback