
Úvod do gRPC
gRPC je jednoduchý moderní framework, založený na vzdáleném volání procedur. Vysoká výkonnost, platformní nezávislost, jednoduchost a skvělá podpora v ASP.NET Core staví tento framework do pozice následovníka umírajících WCF. Technologii gRPC oceníte při vývoji rychlých mikroslužeb, které spolu kromě synchronní komunikace mohou komunikovat v reálném čase a využít naplno možností protokolu HTTP/2.
Možná vás teď napadá plno otázek...
- Proč používat gRPC? - jsou velmi rychlé, postavené na metodice contract-first
- Proč je contract-first výhoda? - gRPC lze používat ve všech frameworcích
- V čem spočívá rychlost gRPC? - zejména v efektivním použití HTTP/2 protokolu
- Je vývoj gRPC služeb složitý? - je to srovnatelné s vývojem REST služeb
- Na co se nejvíce gRPC hodí? - na synchronní komunikaci mezi mikroslužbami
- Jsou gRPC vhodné i pro web? - ano, .NET to umožňuje jednoduše skrze proxy
- Máme nahradit REST za gRPC? - ne, každý druh služeb má jiné využití a specifika
- Jsou gRPC náhradou WCF? - myšlenkově ano, ale je zde i mnoho odlišností
- Trvá dlouho se gRPC naučit? - naučím vás to za jeden den v rámci mého školení
Ale popořadě. Připravil jsem pár stránek, kde se o gRPC dozvíte to nejdůležitější. Níže je tématický rozcestník.
Komunikace
Efektivní komunikace v gRPC službách je zajištěna spojením 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. framing a využití 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.
Protobuf
Protocol Buffers představují multiplatformní a jazykově neutrální mechanismus pro binární serializaci dat. Protobuf je jednoduchý předpis, který popisuje webovou službu a zprávy, které odesílá a přijímá. Bohatá nabídka nástrojů pro různé platformy umožňuje na základě specifikace Protobuf generovat například klientské knihovny nebo dokumentaci. Serializace pomocí Protobuf je výrazně rychlejší než v případě jiných formátů (JSON, XML) a zároveň úspornější z hlediska přenosu dat.
Návrh gRPC služeb
Kromě formátu Protobuf je možné navrhovat gRPC služby výhradně s využitím jazyka C# a .NET frameworku. Tento přístup vyhovuje zejména týmům přecházejícím z WCF frameworku a firmám, které svá API používají pro vnitrofiremní komunikaci v rámci .NET platformy. Vývoj a komunikace s gRPC službami se tak výrazně zjednodušuje, protože veškeré kontrakty lze sdílet mezi projekty ve formě NuGet balíčků.
Reflection
Pro účely vystavení kontraktů a testování gRPC služeb lze použít tzv. reflection services. Ty dokáží zpětně objevit veškeré API endpointy včetně kontraktů a vystavit endpoint se specifikací gRPC služby. Reflection je velmi podobný mechanismu Swashbuckle Swagger, který se používá u REST API. Mechanismus lze použít jak v režimu práce s Protobuf soubory, tak v případě přístupu Code-First bez souborů proto.
Nástroje
Zkombinujete-li osvědčené přístupy pro návrh gRPC služeb, otevře se vám cesta k několika nástrojům pro testování gRPC služeb. Tyto nástroje Vám umožní zkoumat gRPC služby z příkazové řádky (CLI) nebo pomocí grafického rozhraní. Spustit je lze lokálně na vývojářském počítači a kromě základních scénářů typu request-response testovat i práci se streamy.
Web a gRPC
Dnes už nejsou gRPC jen službami pro výměnu dat mezi aplikačními systémy. V prostředí .NETu lze gRPC použít i ve scénáři klient - server, kde je klientem například webová aplikace napsaná v Blazoru. Kombinace UI frameworku a gRPC služeb výrazně zrychluje komunikaci. Vše je postaveno na tzv. proxy, kterou lze v případě .NET platformy používat v nativní podobě middlewaru.
Hlavní nabídka
🏚️ Úvod do gRPC
✍️ Historie a .NET
✍️ Komunikace
✍️ Protobuf
✍️ Návrh služeb
✍️ Reflection
✍️ Cheatsheet
🧑🎓 Školení

Miroslav Holec
Jsem nezávislý konzultant a lektor na volné noze se zaměřením na vývojářské technologie Microsoftu. Školím ve firmách po celé České republice a na Slovensku.