[ Valerij Zajcev @ 02.09.2010. 15:36 ] @
Zamislio sam neki scenario pa bih hteo da isprobam, samo ne znam kako da zavrsim
Klijent aplikacija desktop/web/mobile ima statistiku svog racuna.
Podaci o racunu se nalaze u bazi.
Korisnik moze da trosi pare dok ih ima, i recimo da na racunu postoji 200$.
Administrator ili neko drugi sa privilegijama moze da dopuni racun, bilo preko aplikacije bilo direktnim, rucnim upisom u bazu.
I sada, korisnik koristi aplikaciju i gleda svoje stanje racuna, neko mu u tom trenutku uplati 1000$... E kako sada taj podatak efikasno (odmah) osveziti kod korisnika? Mislio sam na timer koji bi proveravao svaki cas ali to je onda mnogo upita ka bazi mora da ima neki bolji metod.
[ Mihajlo Cvetanović @ 02.09.2010. 15:51 ] @
Osmisli bazu i upit tako da je poliranje super-efikasano. Često nije baš neopodno da se stanje vidi ODMAH, nego je i pauza od jednog minuta sasvim prihvatljiva. Zapravo, pauza bi mogla da ima i neko dinamičko trajanje, u zavisnosti od toga koliko ljudi u jedinici vremena polira bazu, pa ako ih je više onda produžiš pauzu svakome. Najbolje bi bilo da zapravo i nemaš automatsko poliranje, nego da korisnik sam pokrene čitanje stanja kad mu to zatreba.
[ lukeguy @ 02.09.2010. 15:54 ] @
Ne znam šta koristiš za komunikaciju. WCF ima callback servise koji služe za ovakve stvari.
[ mmix @ 02.09.2010. 16:11 ] @
Posto pise mobile medju klijentima pretpostavljam da ti je SOAP u opticaju pa zaboravi na callback.

Ako ti je skupa operacija odredjivanja stanja ili sta vec moras da uradis postoji i tehnika kesiranja (slicnu koristi HTTP protkol). Dakle imaj za svakog korisnika polje LastCriticalModify datetime, kad povuces podatke na klijente daj korisniku i server time. Svaka promena koja vodi do promene rezultat tvoje skupe operacije updatuje i ovo polje, ostatak pretpostalvjam da pretpostavljas, imas poseban metod koji ti vraca samo taj datetime (ovo je jeftina operacija), klijent ga proveri svaki cas i uporedi sa svojim vremenom kesiranih podataka i ako je polje pomereno u buducnost znaci da server ima nove podatke i da treba da zapocnes skupu operaciju da osvezis klijenta. Ceo process je data-pull only i radi sa svim protokolima komunikacije.