Bence burda websocket vs RPC konularını anlamak önem teşkil ediyor. gRPC benim anladığım bir RPC gerçekleştirimi (implementation)
RPC: Remote Procedure Call; yani istemciden bir procedure çağırmak istediğin zaman bu procedure çalıştırılması (execution) sunucu makinanın üzerinde olacağı bir mekanizma. Örneğin:
calculateSum(10, 50, 40)
Böyle bir procedure/function çağırdığını düşünelim. Bu çağırdığın fonksiyonun çalıştığı bilgisayar senin işlemcin olmayacak. Bir sunucuda çalışıp sana sonuç verecek. Yanlış hatırlamıyorsam bir sürü RPC gerçekleştirimi var. RMI vardı Java'da, ya da zamanında GWT kullanırken bir sürü kullanımı vardı.
Şimdi gelelim WebSocket'e. Ağ yapıları dersinde gördüğün TCP üzerinden iki bilgisayar arasında açtığın bi-directional veri aktarımı konusunun günümüzde browser/istemci -> sunucu arasındaki biraz daha güvenli haline biz WebSocket diyoruz. Yani temel amacı iki bilgisayar arasında veri akışınının sağlanması. Normal HTTP mesajlara göre ise HTTP payload kısımları hiç olmadığı için daha etkin, yani az yükle veri taşımış oluyorsun. Diğer konu HTTP gibi tek taraftan initialize (başlatma) etmene gerek yok. Hem sunucu hem de istemci tarafından başlatabiliyorsun.
Toparlarsak; RPC gerçekleştirimi için HTTP veya WebSocket kullanabilirsin. Burdan da aslında WebSocket'in biraz daha altta yatan bir teknoloji olduğunu çıkarabiliriz. RPC; WebSocket üzerine kurgulayabileceğin bir enstüman diyebiliriz.
İyi çalışmalar.