Programiranje

Protocol DSL - Google protocol buffers

Deus ex machina pet 11.9.2009 14:04

Hellou,

Google Protocol Buffers bi mogli biti vrlo interesantni i korisni za nekoga tko se bavi bilo kakvom formom custom networkinga, ie. potrebom da izmislja vlastiti protokol.

Ovaj DSL (Domain Specific Language) omogucava definiciju protokola u vrlo konciznoj i direktnoj sintaksi te onda generaciju protokol-koda u skoro bilo kojem od vodecih GP jezika (C++, Java, Python, nisam siguran za C#)

 

Osim toga sto cini kod citljivijim (direktna sintaksa) i manje osjetljivim na greske (code generator), za sve nas koji pisu klijente i servere u razlicitim jezicima, ili planiraju portove, fenomenalna stvar. Nisam jos sve ulovio jer eksperimentiram ali zasada djeluje obecavajuce, kao vise manje svaki googleov framework...

Tracer pet 11.9.2009 14:49

Mogu reći da sam se poprilično puno napisao klijent-server aplikacija (i tutorijale gore u sticky-u) i iz prakse mogu reći da TCP skup protokola uglavnom zadovoljava sve potrebe dvosmjerne komunikacije. Teško mi je zamisliti da mi pokraj TCP-a, ICMP-a, FTP-a, i eventualno UDP-a nešto drugo treba jer njima je više-manje definirano sve što je bitno. Naravno, tu je SMTP, TFTP i dr.. no mislim da su manje bitni.

 

A najgora boljka od svega jest sigurnost u tom novom protokolu. Npr. u TCP skupu protokola za cjelovitost paketa i njihov ispravan redoslijed se brine hrpa pozadinskih servisa, dok za novi protokol ne znam čime bi si to osigurao. Sve u svemu lijep je to feature ali mi je nekako ipak nesigurno uzdati se u to jer već postojeći protokoli rade dobro i pouzdano (izuzetak UDP) Osmijeh.

Deus ex machina pet 11.9.2009 15:16
Tracer kaže...

Mogu reći da sam se poprilično puno napisao klijent-server aplikacija (i tutorijale gore u sticky-u) i iz prakse mogu reći da TCP skup protokola uglavnom zadovoljava sve potrebe dvosmjerne komunikacije. Teško mi je zamisliti da mi pokraj TCP-a, ICMP-a, FTP-a, i eventualno UDP-a nešto drugo treba jer njima je više-manje definirano sve što je bitno. Naravno, tu je SMTP, TFTP i dr.. no mislim da su manje bitni.

 

A najgora boljka od svega jest sigurnost u tom novom protokolu. Npr. u TCP skupu protokola za cjelovitost paketa i njihov ispravan redoslijed se brine hrpa pozadinskih servisa, dok za novi protokol ne znam čime bi si to osigurao. Sve u svemu lijep je to feature ali mi je nekako ipak nesigurno uzdati se u to jer već postojeći protokoli rade dobro i pouzdano (izuzetak UDP) Osmijeh.

 

???!!!!???? Framework nije namijenjen konstruiranju novih transport layer protokola, nego aplikacijskih protokola. Apsolutno sam siguran u to da klijent/server komunikacija kod bilo koje aplikacije trazi svoj protokol. Apsolutno sam siguran da bilo koji MMO ima vlastiti protokol za komunikaciju klijenata izmedju servera, i minimalno jos jedan za komunikaciju izmedju gamservera u clusteru. I najcesce jos jedan za komunikaciju customer service toolsa sa gameserverom.

 

Npr. komunicirati izmedju raznih application servera putem HTML-a??? Ili FTP command bytestreamova??? Mislim da ne :-).

Mislim da cu prije napisati svoj protokol i strukturirati ga putem XML-a i slati na neki random >10000 port. A ovaj framework mi omogucava da to napravim puno jednostavnije, i u tiru preswitcham protokol na binarni umjesto ASCII XML-a, za release distro.

Sigurnost se rijesi na jos jednostavniji nacin: provuces svoj TCP protokol kroz SSH tunel i tadaaah...

Deus ex machina pet 11.9.2009 16:28
Tracer kaže...

Aha... ja skužio da je riječ baš o definiranju novih mrežnih protokola, a ne o frameworku Namigiva.

 

Ah, ne, nema brige ;-) ;-)

Google nije Microsoft, oni ne trebaju svoje standarde da zakljucaju ekipu na svoju platformu :-D Cak im je i OS za mobitele polu-opensource.

Tux Slave pet 11.9.2009 17:54

Za sve zainteresirane kako to radi u praksi preporučam da povučete git unstable od mumblea. Sadašnja stabilna verzija(1.1.8) koristi custom made networking(dal sam ovo uopće dobro rekao O_o) i upravo zbog toga imaju jako puno problema s implementacijom novih mogućnosti. Protobuf daje ogromnu fleksibilnost i nije potrebno mjenjati cijeli protokol(što uzrokuje nekompatibilnost s prijašnjim verzijama) samo da bi se uvela nova mogućnost vezana uz taj networking thing. Sljedeća verzija(1.2.0, izlazi čim CELT izađe kao stable) koristi protobuf za taj networking thing!