[ trodon @ 30.03.2011. 14:45 ] @
Pozdrav ljudi,

angazovan sam na poslu za implementaciju sistema koji bi trebalo da klijente obavestava o kontaktima zahtevanim od strane drugih klijenata (recimo kao na Facebook-u, kad neko iskomentarise moju sliku, pa meni stigne notifikacija). Sistem bi trebalo da funkcionishe sa velikim brojem korisnika (ovde podrazumevam vishe od 10 000).

Cela aplikacija je napisana u asp.net, .net 4.0. Ostalo je josh da se ubaci ovaj sistem. Imam sledece opcije:

1. Javascript + WebMethod reshenje
- ovde bi recimo napravio klase koje bi chuvale notifikacije, i kada jedan klijent recimo pozove drugog klijenta na chat stranicu radi diskusije, notifikacija o ChatRequest-u se ubacuje i chuva u Session-u.
- Svaki klijent na stranici ima javascript koji na svakih recimo 5 sekundi (pomocu setInterval()) gadja WebMethod na serveru, u kome se iz session-a chita odgovarajuci set pristiglih ChatRequest-ova, i u zavisnosti od njih prikazujem te notifikacije kod klijenta sa javascript-om (npr. u nekoj tabeli, na osnovu primljene poruke u JSON formatu).

2. Flash reshenje
- ova varijanta podrazumeva da se pomocu SharedObject-a i NetConnection-a u Flash-u klijent po logovanju u sistem konektuje na Flash server, pravi svoj sharedobject i otvara konekciju, pa kada notifikacija treba da se primi, to ce se uraditi pomocu sharedobject metoda i event-ova. Zatim, pomocu externalinterface-a iz flash-a zovem javascript na stranici, koji ce klijentu prikazati notifikacije negde na stranici, na isti nachin kao i u prvom sluchaju.

Opcija sa Flash-om mi se ukazala kao mogucnost posle razgovora sa kolegom koji je u tim vodama, ja sam samo napisao shta mi je on rekao, jer se u Flash ne razumem, pa ako je potrebno detaljnije objashnjenje, recite da ga pitam.

Odgovor koji trazim je: Shta je od ove dve metode optimalnije, s' obzirom na broj klijenata koji treba da bude podrzan? Sa jedne strane imam gadjanje servera iz javascript-a na svakih 5 sekundi (shto kada se pomnozi sa brojem klijenata nije zanemarljivo, to je ~10 000 http request-ova na svakih 5 sekundi), a sa druge strane imam Flash i njegove sharedobject-e i NetConnection, za koje ne znam koliko su zahtevni, i shta rade u pozadini.

Izvinjavam se ako sam mozda promashio forum, ali s' obzirom da je moje pitanje vezano i za Flash i za ASP.NET, odluchio sam da pitanje postavim ovde.

Unapred hvala.
[ pl4stik @ 30.03.2011. 18:51 ] @
Session je single user objekt koji se btw reciklira posle nekog vremena, koristi application objekt...

Create an Ajax Chat Client in 8 minutes and 15 seconds