Úvod do gRPC v .NET
gRPC je jazyk nezávislá, vysoce výkonné rozhraní vzdáleného volání procedur (RPC).
Mezi výhody gRPC patří:
- Moderní, výkonná a jednoduchá architektura RPC
- Vývoj rozhraní API začínající kontraktem, který standardně využívá vyrovnávací paměti protokolů, čímž umožňuje implementace nezávislé na jazycích
- Nástroje dostupné pro řadu jazyků, se kterými lze generovat servery a klienty silného typu
- Podpora volání klienta, serveru a obousměrného streamování
- Menší využití sítě díky binární serializaci Protobuf
Díky těmto výhodám je gRPC ideální pro:
- Odlehčené mikroslužby, ve kterých je efektivita nejdůležitější.
- Polyglot systémy, ve kterých se pro vývoj vyžaduje více jazyků.
- Služby v reálném čase Point-to-Point, které potřebují zpracovávat žádosti o streamování nebo odpovědi.
Upozornění
ASP.NET Core gRPC má další požadavky pro použití s Azure App Service nebo službou IIS. Další informace o tom, kde lze použít gRPC, naleznete v tématu gRPC na platformách podporovaných .NET .
Podpora nástrojů C# pro soubory.
gRPC využívá přístup ke vývoji rozhraní API, který je prvním kontraktem. Služby a zprávy jsou definovány v souboru * . proto soubory:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
Typy .NET pro služby, klienty a zprávy jsou automaticky generovány zahrnutím * souborů do projektu:
- Přidejte odkaz na balíček do balíčku Grpc. Tools .
- Do skupiny položek přidejte soubory * .. .
<Protobuf>
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Další informace o podpoře nástrojů gRPC naleznete v tématu Služby gRPC s jazykem C# .
gRPC Services na ASP.NET Core
služby gRPC lze hostovat na ASP.NET Core. služby mají úplnou integraci s ASP.NET Core funkcemi, jako je protokolování, vkládání závislostí (DI), ověřování a autorizace.
přidání služeb gRPC services do aplikace ASP.NET Core
gRPC vyžaduje balíček gRPC. AspNetCore . Informace o konfiguraci gRPC v aplikaci .NET najdete v tématu Configure gRPC.
Šablona projektu služby gRPC
šablona projektu služby ASP.NET Core gRPC poskytuje počáteční službu:
public class GreeterService : Greeter.GreeterBase
{
private readonly ILogger<GreeterService> _logger;
public GreeterService(ILogger<GreeterService> logger)
{
_logger = logger;
}
public override Task<HelloReply> SayHello(HelloRequest request,
ServerCallContext context)
{
_logger.LogInformation("Saying hello to {Name}", request.Name);
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
GreeterServicedědí z GreeterBase typu, který je vygenerován ze Greeter služby v souboru * .. . Služba je zpřístupněna klientům v programu. cs:
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
Další informace o službách gRPC Services v ASP.NET Core najdete v tématu Služby gRPC s ASP.NET Core .
Volání služeb gRPC Services pomocí klienta .NET
gRPC klienti jsou konkrétní typy klientů, které jsou vygenerovány ze souborů * . proto. Konkrétní klient gRPC má metody, které se převádějí do služby gRPC v souboru * .. .
var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(
new HelloRequest { Name = "World" });
Console.WriteLine(response.Message);
Klient gRPC se vytvoří pomocí kanálu, který představuje dlouhodobé připojení ke službě gRPC. Kanál se dá vytvořit pomocí GrpcChannel.ForAddress .
Další informace o vytváření klientů a volání různých metod služby najdete v tématu Volání služeb gRPC pomocí klienta .NET .
Další zdroje informací
gRPC je jazyk nezávislá, vysoce výkonné rozhraní vzdáleného volání procedur (RPC).
Mezi výhody gRPC patří:
- Moderní, výkonná a jednoduchá architektura RPC
- Vývoj rozhraní API začínající kontraktem, který standardně využívá vyrovnávací paměti protokolů, čímž umožňuje implementace nezávislé na jazycích
- Nástroje dostupné pro řadu jazyků, se kterými lze generovat servery a klienty silného typu
- Podpora volání klienta, serveru a obousměrného streamování
- Menší využití sítě díky binární serializaci Protobuf
Díky těmto výhodám je gRPC ideální pro:
- Odlehčené mikroslužby, ve kterých je efektivita nejdůležitější.
- Polyglot systémy, ve kterých se pro vývoj vyžaduje více jazyků.
- Služby v reálném čase Point-to-Point, které potřebují zpracovávat žádosti o streamování nebo odpovědi.
Upozornění
ASP.NET Core gRPC má další požadavky pro použití s Azure App Service nebo službou IIS. Další informace o tom, kde lze použít gRPC, naleznete v tématu gRPC na platformách podporovaných .NET .
Podpora nástrojů C# pro soubory.
gRPC využívá přístup ke vývoji rozhraní API, který je prvním kontraktem. Služby a zprávy jsou definovány v souboru * . proto soubory:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
Typy .NET pro služby, klienty a zprávy jsou automaticky generovány zahrnutím * souborů do projektu:
- Přidejte odkaz na balíček do balíčku Grpc. Tools .
- Do skupiny položek přidejte soubory * .. .
<Protobuf>
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Další informace o podpoře nástrojů gRPC naleznete v tématu Služby gRPC s jazykem C# .
gRPC Services na ASP.NET Core
služby gRPC lze hostovat na ASP.NET Core. služby mají úplnou integraci s ASP.NET Core funkcemi, jako je protokolování, vkládání závislostí (DI), ověřování a autorizace.
přidání služeb gRPC services do aplikace ASP.NET Core
gRPC vyžaduje balíček gRPC. AspNetCore . Informace o konfiguraci gRPC v aplikaci .NET najdete v tématu Configure gRPC.
Šablona projektu služby gRPC
Šablona projektu služby gRPC poskytuje počáteční službu:
public class GreeterService : Greeter.GreeterBase
{
private readonly ILogger<GreeterService> _logger;
public GreeterService(ILogger<GreeterService> logger)
{
_logger = logger;
}
public override Task<HelloReply> SayHello(HelloRequest request,
ServerCallContext context)
{
_logger.LogInformation("Saying hello to {Name}", request.Name);
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
GreeterServicedědí z GreeterBase typu, který je vygenerován ze Greeter služby v souboru * .. . Služba je k dispozici pro klienty při spuštění. cs:
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
Další informace o službách gRPC Services v ASP.NET Core najdete v tématu Služby gRPC s ASP.NET Core .
Volání služeb gRPC Services pomocí klienta .NET
gRPC klienti jsou konkrétní typy klientů, které jsou vygenerovány ze souborů * . proto. Konkrétní klient gRPC má metody, které se převádějí do služby gRPC v souboru * .. .
var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(
new HelloRequest { Name = "World" });
Console.WriteLine(response.Message);
Klient gRPC se vytvoří pomocí kanálu, který představuje dlouhodobé připojení ke službě gRPC. Kanál se dá vytvořit pomocí GrpcChannel.ForAddress .
Další informace o vytváření klientů a volání různých metod služby najdete v tématu Volání služeb gRPC pomocí klienta .NET .