Miroslav Holec
Premium

Seriál gRPC - Historie gRPC a podpora v .NETu

Miroslav Holec   17. ledna 2022  update 3. dubna 2024

Podpora gRPC sahá až do tradičního .NET Frameworku. Skutečně snadné a zábavné použití však přinesla až moderní verze .NET Core 3.1. Vývojáře potěší, že oproti jiným technologiím se gRPC rozvíjí pomaleji a není se třeba obávat neustálých aktualizací a zpětně nekompatibilních změn.

Technologie gRPC je v tomto ohledu skutečně stabilní. Největší zásluhy na moderní implementaci gRPC v .NETu má především James Newton-King, který je též autorem známého serializeru Newtonsoft.Json a výkonnostně zmodernizované knihovny System.Text.Json. Na platformě .NET lze založit nové projekty typu gRPC a vyvíjet tento typ služeb stejně pohodlně jako jiný typ aplikací.

V současné době mají .NET vývojáři k dispozici:

  • šablonu gRPC projektu
  • kompiler, který umí překládat Protobuf do C#
  • klientskou factory, která usnadňuje komunikaci s gRPC službami
  • reflection service pro generování specifikačního endpointu
  • CLI nástroj a GUI nástroj (grpc CLI a grpc UI)

Služby gRPC lze vyvíjet v klasickém prostředí Visual Studio nebo v modernějším IDE JetBrains Rider. Pro Rider existuje mnoho užitečných rozšíření s podporou Protocol Buffers.

S příchodem .NET 7 lze již gRPC hostovat na všech běžných platformách, především na Windows a na Linuxu. Zkušenosti s vývojem gRPC na platformě macOS mám také výborné. Služby gRPC mají podporu i ze strany IIS i HTTP.sys, ovšem zde je nutné nasazovat na Windows 11 nebo Windows Server 2022 a vyšší. Podpora Kestrelu je perfektní. V případě cloudové platformy Azure lze nasazovat na AKS a Azure Container Apps. Služby gRPC běží i v prostředí Azure App Service nad Linuxem a to od verze .NET 6.

Dále s příchodem .NET 7 začal Microsoft experimentovat také s propojením RESTu a gRPC. Nově lze jednoduše anotovat gRPC služby tak, že jsou dostupné i jako tradiční HTTP API. Jeden serverový kód tedy dokáže být konzumován jak gRPC klientem, tak tradičním HTTP klientem využívajícím formát JSON. Vrchol snažení nakonec přináší podpora automatického generování dokumentace do OAS skrze nástroje Swashbuckle.Swagger.

Microsoft v každé verzi .NET Core, aktuálně již .NET 7 provádí aktualizace, kterými vylepšuje výkonnost gRPC služeb. Přestože se funkčně od .NET Core 3.0 prakticky nic nezměnilo, výkonnost novějších verzí je výrazně lepší a platforma .NET nabízí suveréně nejlepší výkonnost gRPC služeb v porovnání s konkurencí.

image-20220118091628518

Další díly seriálu gRPC