ASP.NET gRPC Client, Server, File Upload, Life Cycles

GRPC Nedir?

gRPC Google tarafından geliştirilmiş, açık kaynaklı Remote Procedure Call (RPC) protokülünü kullanan bir frameworktür. gRPC Google tarafından uzun süre kullanılmış, daha sonra Cloud Native Computing Foundation (CNCF) ekosisteminin bir parçası haline gelip, açık kaynaklı bir şekilde topluluğa sunulmuştur.

RPC, sunucu tarafındaki methodları sanki istemci tarafındaymış gibi kullanmamızı sağlayan bir iletişim aracıdır.

RPC çok önceden kullanılan bir teknolojidir. gRPC'nin RPC'den farkı HTTP 2.0 nimetlerinden yararlanmamızı ve dilden bağımsız bir şekilde çalışmamızı sağlamasıdır. gRPC, sunucu ve istemci arasındaki .proto (ProtoBuf) dosyalarıyla iletişim kurmaktadır.

Protocol Buffer (ProtoBuf) Nedir?

Google tarafından sıkça kullanılan, XML ve JSON serialization'a göre performansı çok yüksek olan Binary serialization yapan bir haberleşme protokülüdür.

gRPC’nin başlıca avantajları:

  • Yüksek performans
  • Dil bağımsız
  • Bi-directional Streaming (Çift yönlü haberleşme)
  • HTTP 2.0 ve Binary serialization ile birlikte daha az ağ trafiği
  • Mikroservis mimarilerde kullanışlı olması

gRPC’nin dezavantajları:

  • Tarayıcı desteğinin az olması (gRPC-Web kullanılmaz ise)
  • Binary serialization kullanıldığından verilerin okunabilirliği zor

gRPC Mimarisi ve Yaşam Döngüsü

gRPC Interface Definition Language (IDL) arayüz tanımlama dili sayesinden aşağıdaki gibi .proto dosyaları aracılığıyla arayüz, kontrat ve methodları başka bir dil (C#, C, C++, Go, Java, Kotlin, Node.js, Php vs.) kullansak bile hem sunucu hemde istemci tarafından otomatik olarak oluşturur.

 hello.proto Dosyası

syntax = "proto3";

option csharp_namespace = "AspNetGrpc.V1.Unary";

package Hello;

service Hello {
  rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
  string name = 1;
}

message HelloResponse {
  string message = 1;
}

RPC Yaşam Döngüleri

  • Unary RPC

İstemcinin tek bir request yaptığı ve tek bir response aldığı basit bir RPC türüdür.

  • Server streaming RPC

İstemci tarafından istek başlatılır, sunucu tarafından istemciye doğru bir ileti akışı başlar. (Örnek: Sunucu'dan dosya indirme)

  • Client streaming RPC

İstemci tarafından çoklu bir iletişim akışının başladığı sunucu tarafından tek bir cevabın döndürüldüğü bir RPC türüdür. (Örnek: Sunucuya dosya yükleme)

  • Bidirectional streaming RPC

Hem istemci hemde sunucu tarafından bir ileti akışının başladığı bir RPC türüdür.

gRPC yaşam döngüleri ve dosya yükleme ile ilgili projeleri github üzerinden indirmek veya görüntülemek için https://github.com/ayzdru/AspNetGrpcLifeCycleshttps://github.com/ayzdru/AspNetGrpcFileStreaming adreslerine gidebilirsiniz.

BONUS:

 

 

 

 

Yorumlar kapalı