- kako se pise protobuf specifikacija, poruke (
message
), servisi (service
) odnosno deklaracije poziva udaljenih metoda (rpc
); - sta je unary RPC, client streaming RPC, bidirectional (full duplex) streaming RPC (i pozeljno je da se razume server streaming) - kako da prepoznas sta kad treba da pises;
- kako se implementira servis u C#-u po datoj protobuf specifikaciji;
- izvodi se iz
ImeDeklarisanogPaketa.ImeDeklarisanogServisaBase
; override
-uju se sve RPC metode deklarisane u protobuf specifikaciji;- za stream RPC-eve:
IAsyncStreamReader
- kada klijent stream-uje;IServerStreamWriter
- kada server stream-uje;MoveNext
iCurrent
- metode za citanje sledeceg podatka u stream-u;WriteAsync
za upisivanje podatka u stream;
- izvodi se iz
[!IMPORTANT] VAZNO Vodi racuna o konkurentnosti - implementiraj neki mutual exclusion ili koristi konkurentne strukture
- Uvodni primer - prost gRPC ping servis;
Implementacija:
- Link do proto fajla;
- Link do implementacije servisa po protobuf specifikaciji;
- Link do klijenta;
- Zadatak iz Junskog ispitnog roka (i prvog kolokvijuma);
Implementacija:
- Link do proto fajla;
- Link do implementacije servisa po protobuf specifikaciji;
- Link do klijenta;
Postavka:
Implementirati i testirati servis koji u sebi sadrzi prost celobrojni akumulator, nad kojim se moze vrsiti 3 operacije:
- INC - inkrementira vrednost akumulatora i vraca vrednost nakon inkrementiranja;
- DEC - dekrementira vrednost akumulatora i vraca vrednost nakon dekrementiranja;
- ADD op - dodaje operand
op
akumulatoru i vraca vrednost nakon dekrementiranja; - NOP - dodatak, ne radi nista, vec samo vraca vrednost akumulatora (sluzi za naznacavanje kraja stream-ova);
Napomena: na optimalnost lock-ova se nije mnogo obracalo paznje, oni su tu samo reprezentativno, da bi moglo vise klijenata istovremeno da pristupa servisu bez konflikata. Nisu bitni za sam koncept gRPC-a, vec su vise dobra praksa, zato sto je thread-safety nezaobilazna komponenta servera u realnim situacijama.
Implementacija:
- Link do proto fajla;
- Link do implementacije servisa po protobuf specifikaciji;
- Link do klijenta;
- TBA;