Benefits
● High-performance communication
● Less bandwidth usage
● Multi-language/platform supports
● HTTP/2 and SSL/TLS usage
● Supports Bi-directional Streaming operations
Drawbacks
● Need additional library to generate codes
that increases complexity
● Can't read incoming-outgoing payloads that
is not good for client to service
communications
xxxxxxxxxx
syntax = “proto3”;
option csharp_namespace = “ProductGrpc.Protos”;
import “google/protobuf/timestamp.proto”;
import “google/protobuf/empty.proto”;
service ProductProtoService {
rpc GetProduct (GetProductRequest) returns (ProductModel);
rpc GetAllProducts (GetAllProductsRequest) returns (stream ProductModel);
rpc AddProduct (AddProductRequest) returns (ProductModel);
rpc UpdateProduct (UpdateProductRequest) returns (ProductModel);
rpc DeleteProduct (DeleteProductRequest) returns (DeleteProductResponse);
rpc InsertBulkProduct (stream ProductModel) returns (InsertBulkProductResponse);
rpc Test (google.protobuf.Empty) returns (google.protobuf.Empty);
}
message GetProductRequest {
int32 productId = 1;
}
message GetAllProductsRequest{
}
message AddProductRequest {
ProductModel product = 1;
}
message UpdateProductRequest {
ProductModel product = 1;
}
message DeleteProductRequest {
int32 productId = 1;
}
message DeleteProductResponse {
bool success = 1;
}
message InsertBulkProductResponse {
bool success = 1;
int32 insertCount = 2;
}
message ProductModel{
int32 productId = 1;
string name = 2;
string description = 3;
float price = 4;
ProductStatus status = 5;
google.protobuf.Timestamp createdTime = 6;
}
enum ProductStatus {
INSTOCK = 0;
LOW = 1;
NONE = 2;
}