Skip to content

Latest commit

 

History

History
65 lines (42 loc) · 2.98 KB

File metadata and controls

65 lines (42 loc) · 2.98 KB

gRPC

Sta je najbitnije da se zna

  • 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 i Current - metode za citanje sledeceg podatka u stream-u;
      • WriteAsync za upisivanje podatka u stream;

[!IMPORTANT] VAZNO Vodi racuna o konkurentnosti - implementiraj neki mutual exclusion ili koristi konkurentne strukture

Primeri

simple-ping

  • Uvodni primer - prost gRPC ping servis;

Implementacija:

simple-messaging

  • Zadatak iz Junskog ispitnog roka (i prvog kolokvijuma);

Implementacija:

accumulator-ops

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:

vlasnici-skladista

  • TBA;

Povratak na pocetni README