Seriál gRPC - Komunikace v gRPC
Efektivní komunikace v gRPC službách je zajištěna spojením výhod HTTP/2 protokolu a Protobuf serializaci. HTTP/2 protokol přinesl mnoho vylepšení, na kterých jsou gRPC služby postaveny. Základním pilířem je tzv. streamování z klienta na server, ze serveru na klienta nebo v obou směrech. Rychlost zvyšuje i výkonná binární serializace do formátu Protocol Buffers, který je též úsporný při přenosu po síti.
Protokol HTTP/2
Přenosový protokol HTTP/2 umí efektivně využít TCP připojení pro komunikaci mezi klientem a serverem. Je postaven na binárním framingu, který komunikační zprávy rozděluje do tzv. headers a data framů. Jejich posílání je mnohem efektivnější, než složitý komunikační rámec v HTTP/1.1.
Menší nevýhodou gRPC služeb je používání dodatečného header framu (trailing header) na konci komunikace. Tento frame na sebe váže status gRPC komunikace a běžné prohlížeče s ním neumí pracovat. I proto jsou nejčastěji gRPC služby používané pro komunikaci typu API 2 API. V případě prostředí webu je možné používat různé proxy, které tento problém obchází.
Streaming
Kromě unární komunikace typu request - response lze používat tzv. streaming. V případě client streamingu může klient otevřít spojení se serverem a kontinuálně na něj zasílat zprávy. Server na konci komunikace odešle odpověď. Směr komunikace lze i otočit, takže klient pošle na server požadavek a ten následně směrem na klienta odesílá po určitou dobu zprávy (tzv. server streaming). V neposlední řadě lze otevřené připojení použít k plně duplexní komunikaci, kdy si zprávy posílají server a klient vzájemně.
Využití gRPC služeb
Ideální volba gRPC padá na synchronní komunikaci mezi dvěma mikroslužbami nebo službami obecně. Vysoká rychlost a spolehlivost se hodí přesně tam, kde by klasické HTTP (REST) API nedělaly dobrou službu. Výhodou je též jazyková nezávislost a tudíž se gRPC hodí ve firemním prostředí, kde spolu potřebují komunikovat služby napsané v různých frameworcích. V kombinaci s proxy se gRPC služby také osvědčují v Blazor aplikacích, kde nabízí lepší výkonnost oproti REST přístupu.