=

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ů.

Princip návrhu gRPC služeb

Samotný návrh gRPC služeb se skládá z návrhu tzv. services a jednotlivých procedur. Každá procedura pak obsahuje vstupní a výstupní zprávu. Ve svém základu je tedy struktura následující:

service1
    procedure1 (requestMessage + responseMessage)
    procedure2 (requestMessage + responseMessage)
service2
    procedureX (requestMessage + responseMessage)

Důležité je, že konečnou podobou je vygenerovaný C# kód, který se skládá z tříd (services), metod (procedures) a tříd pro zprávy (messages). Návrh gRPC služeb přes svou contract-first formu probíhá nejčastěji přímo v kódu, jelikož nabídka GUI nástrojů pro návrh služeb je omezená.

gRPC Code-First

Komunitní projekt protobuf-net.Grpc umožňuje navrhovat gRPC služby bez potřeby vytvářet Protobuf soubory. Je poněkud nešťastně pojmenován jako Code-First. Zatímco standardně musíme nejprve napsat Protobuf soubor, který je následně kompilován do C# kódu, v případě Code-First odpadá tento krok a rovnou vytváříme C# třídy a interfaces.

image-20220118092459964

Principielně se jedná o podobný přístup, jako v případě WCF služeb. C# třídy musí však obsahovat dodatečné instrukce pro serializer.

[DataContract]
public class HelloReply
{
    [DataMember(Order = 1)]
    public string Message { get; set; }
}

[DataContract]
public class HelloRequest
{
    [DataMember(Order = 1)]
    public string Name { get; set; }
}

[ServiceContract]
public interface IGreeterService
{
    [OperationContract]
    Task<HelloReply> SayHelloAsync(HelloRequest request,
        CallContext context = default);
}

Komunitní projekt protobuf-net.Grpc poskytuje kompletní tooling včetně podpory gRPC klienta nebo tzv. reflection service, která usnadňuje testování gRPC služeb.

Hlavní nabídka

Úvod do gRPC
Historie a .NET
Komunikace
Protobuf
Návrh služeb
Reflection
Cheatsheet
🧑‍🎓 Školení

Miroslav Holec

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.

kontakt zde

Dotazy, poptávky a objednávky

mirek@miroslavholec.cz
Loading