čtení databáze jinak   zodpovězená otázka

VB.NET, WinForms, Databáze

Zdravím, jsem samouk to na začátek a tvořím si pro sebe aplikaci na které bych se naučil a pochopil funkci služeb a čtení z db.

Mám vytvořenou a spuštěnou službu, díky článku tady na webu, která mi po intervalu zapíše do db udaje a vytvářím aplikaci která mi ty udaje z db načte do datagriview.

Jakou metodu, způsob nejlépe zvolit, aby byly do DGV přidávány nové řádky, které se opět zapíšou službou do DB?

Díky za navedení a pomoc

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

Co myslíte tím přidávat řádky, které pak služba zapíše do DB?

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

No chtěl bych docílit toho, že když mám otevřenou aplikaci pro čtení DB tak aby se aktualizoval DGV o řádky, které mezitím neustále zapisuje služba do oné DB.

řekněme že služba zapisuje každou vteřinu data. Otevřu aplikaci, vidím třeba už 3000 řádků, služba ale dál pracuje a zapisuje data...a za 10 vteřin mám dalších 10 záznamů v DB které v aplikaci nevidím.

Zkoušel jsem to vyřešit pomocí Timeru ale nepřipadlo mi to jako elegantní a komfortní řešení. Ale připouštím že je to asi jediné řešení.

Jenom jsem přemýšlel jestli není nějaká vlastnost jak DGV aktualizovat postupně, při změně obsahu DB. Ale to mě teď napadlo, že by to bylo asi více náročnější než Timerem nebo tlačítkem znovu plnit DGV.

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

a ta služba, která to plní by neuměla po nějakém časovém intervalu udělat refresh DGV?

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

tak daleko zase ve svých vědomostech nejsem, ale asi to možné je... řekněme že by to byla služba která by plnila DGV aplikace... jak takovou službu donutit plnit konkretní DGV v konkrétní aplikaci?

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

Tento scénář se principiálně dá řešit takto:

-Klient komunikuje se službou na serveru. Každý klient si na službě zaregistruje odběr notifikací o tom, že vznikají nové data. Pro tuto komunikaci je možné použít WCF duplexní binding nebo nově SignalR.

-Pokud je touto službou přímo služba zodpovědná za pořizování těch zdrojových dat (např. je zapisuje do db ona), tak o vzniku nových dat již ví a rovnou může notifikovat klienty.

-Pokud data vznikají do db jinak (přímý zápis do třetí stranou apod.) tak tato služba musí v pravidelném časovém intervalu volat načítání nových dat v monitorované tabulce a udržuje si aktuální ID (nebo datum a čas) posledního dříve načteného záznamu. O zjištěných nových záznamech odesílá notifikace na klienty.

-Klient na notifikace reaguje obnovením UI (přidáním nových záznamů do gridu apod.)

K některých případech by možná mohlo jít pro detekci nových záznamů využít přímo mechanismus notifikací MS SQL Serveru, s tím nemám ale praktické zkušenosti.

Případně pokud je klientů málo by mohl detekci nových záznamů provádět každý z nich (každý by volal dotaz/uloženou proc. pro zjištění nových záznamů a udržoval si svůj ukazatel posledního záznamu) bez nutnosti služby na serveru.

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