PDA

Prikaži potpunu verziju : Server-Client programiranje (Java;Android)


Ivan452
13.9.2012, 17:24
Pozdrav svima,

Planiram da pravim jedan server-client program. Klijentski deo bi bila Android aplikacija, a server bi bio JAVA.
Medjutim sada sam u multilemi sta da radim sto se tice servera, ono sto mi je do sada palo na pamet od mogucnosti:
1. Da se klijent komunicira sa serverom standardnim request/response putem.
2. Da koristim RemoteProcedureCall pristup.

Pa ne znam sta bi bio bolji pristup od ova dva i da li postoje jos neki. Takodje, voleo bih server da nekada i okacim negde, a kako znam da su aplikacioni serveri poprilicno skupi da li se neko time bavio?
I da li je neko radio sa google app enginom?

ivan90BG
14.9.2012, 10:55
Osim klasičnog request response načina postoji i drugi, a to je asinhrona dvosmerna komunikacija (sa ili bez potvrda). Postoje situacije gde recimo imaš takav sistem gde klijent mora u skoro realnom vremenu da ažurira svoje podatke. Standardni request/response bi ovde bio kao polling (analogija sa računarskim periferijama). Kod računarskih periferija je odavno poznat bolji sistem asinhrone kominikacije bazirane na hardverskim prekidima (objasniću :)). Odnosno ovde obe strane šalju podatke (kod req/resp samo jedna strana šalje na drugu i pita drugu da li ima nešto da pošalje). Znači server takođe zove klijenta ako ima neke podatke za njega. Ali onda server mora da zna koji su klijenti on-line i mora da ima njihovu IP adresu i port na koji će da zove, što može da dobije od klijent kad se uloguje na server.

Ali, ako uređaj na kome je klijent iza NAT-a (što verovatno jeste u mobilnoj telefoniji), onda mora da se održava stalna konekcija jer server ne može nikako da pozove on-line klijenta koji je iza NAT-a. Pa bi klijent onda morao da pređe u request response mod, eventualno bi mogla da se uspostavi duža konekcija ako recimo klijent i server imaju potrebu za razmenom podataka za koju se zna da će poruke sa jedne i druge strane da se ređaju u relativno kratkom razmaku (recimo instant mesaging ili zvuk, video). Po završetku te razmene bi se konekcija prekinula i klijent bi se vratio u req/resp (polling) mod kad se ovo specijalno stanje završi.

Naravno, i ako klijent nije iza NAT-a, valjalo bi uspostaviti stalnu konekciju, ako ima potrebe za tim, samo što u slučaju kad klijent nije iza NAT-a, server može da inicira konekciju sa svoje strane, ako ima podatke za klijenta.

Tako nekako. :)