gRPC Server Streaming RPC Client .Net Core'da Nasıl Oluşturulur ?

Daha önceki yazılarımızda genel hatlarıyla gRPC nedir ve Unary RPC Tipinde Client nasıl oluşturulur konularına değinmiştik. Kısaca gRPC'yi tekrar tanımlayacak olursak;gRPC open source olarak google tarafından geliştirlen ve ilk olarak 2015 yılında tanıtılan bir remote-procedure-call(RPC) kütüphanesidir.

Bu yazımızda ise Refund isteklerinden sonra müşteriyi notify etmek için kullanacağımız Server Streaming RPC Client türünde comm sağlayacak olan NotifyCustomer Client'ını oluşturacağız.

Creating gRPC NotifyCustomer Client 

Refund Service'de ki bir diğer service metodumuz olan NotifyCustomer içinde bir client uygulaması oluşturalım ve ilgili iadeler için bu client'a işlemlerin iletildiğini görelim. Yine bunu için solution'da NotifyCustomerClient adında bir consoleApp oluşturalım ve aynı bir önceki client'ta yaptığımız gibi nuget dll'leri referanslara ekleyelim.

static async Task Main(string[] args)
{
    var channel = GrpcChannel.ForAddress("https://localhost:5001");
    var refundClient = new RefundService.RefundService.RefundServiceClient(channel);

    Console.WriteLine("gRPC notifyCustomer client is up !");

    using (var serverStreamingCall = refundClient.NotifyCustomer(new NotifyRequest()))
    {
        while (await serverStreamingCall.ResponseStream.MoveNext())
        {
            var notifyReply = serverStreamingCall.ResponseStream.Current;
            if (notifyReply != null)
            {
                Console.WriteLine("Dear Customer your order " + notifyReply.OrderId + " is refunded.");
            }
        }
    }
}
  1. RefundClient request for a refund,
  2. RefundService Process it and stream for NotifyCustomerMessage,
  3. NotifyCustomer consumes messages from RefundService.

Şimdi geliştirmiş olduğumuz solution'da bulunan 1 service ve 2 client uygulamasını aynı anda run edip gRPC letişim türlerini kullanarak aralarında comm. kurduklarını aşağıdaki ekran görüntüsünde olduğu gibi görebilmekteyiz.

Sırasıyla ilk olarak RefundClinet RefundService Unary RPC tipinde bağlantı kurarak bir refund isteği olduğunu iletti ve sonrasında service uygulaması bu isteği işleyip refundClient'a reply message'ı döndü. NotifyCustomerClient uygulaması RefundService ilk ayağa kalkarken ben Server Streaming RPC tipinde bağlantı açarak senin Notify metodunu consume edeceğim dedi.

Bu yazımızda bir süredir hayatımzıda olan ancak yeni yeni popülaritesini arttıran gRPC kullanarak nasıl server-client yapıları tasarlayabiliriz görmüş olduk. gRPC oldukça hızlı gelişiyor ve güçlü bir community desteğine sahip. Çok daha fazla bilgiyi buradanda bulabilirsiniz. Başka bir konu dizisiyle görüşmek dileğiyle...

Source

Add comment