Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Note
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikel voor de huidige release.
Warning
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie het .NET- en .NET Core-ondersteuningsbeleid voor meer informatie. Zie de .NET 9-versie van dit artikel voor de huidige release.
Important
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikel voor de huidige release.
Door James Newton-King
gRPC- is een taalneutraal RPC-framework (High Performance Remote Procedure Call).
De belangrijkste voordelen van gRPC zijn:
- Moderne, prestatiegerichte, lichtgewicht RPC-framework.
- Contract-first API-ontwikkeling, met protocolbuffers standaard, waardoor taalagnostische implementaties mogelijk zijn.
- Er zijn tools beschikbaar voor veel programmeertalen om sterk getypte servers en clients te genereren.
- Ondersteunt client-, server- en bidirectionele streaming-aanroepen.
- Verminderd netwerkgebruik met protobuf binaire serialisatie.
Deze voordelen maken gRPC ideaal voor:
- Lichtgewicht microservices waarbij efficiƫntie essentieel is.
- Polyglot-systemen waarbij meerdere talen vereist zijn voor ontwikkeling.
- Punt-naar-punt-realtimeservices die streamingaanvragen of -antwoorden moeten verwerken.
Tooling-ondersteuning voor C# voor .proto bestanden
gRPC maakt gebruik van een contract-first benadering voor API-ontwikkeling. Services en berichten worden gedefinieerd in .proto bestanden:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
.NET-typen voor services, clients en berichten worden automatisch gegenereerd door het opnemen van .proto bestanden in een project:
- Voeg een pakketreferentie toe aan het Grpc.Tools-pakket .
- Voeg
.protobestanden toe aan de<Protobuf>itemgroep.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Zie gRPC-services met C# voor meer informatie over gRPC-hulpprogramma's.
gRPC-services op ASP.NET Core
gRPC-services kunnen worden gehost op ASP.NET Core. Services hebben volledige integratie met ASP.NET Core-functies, zoals logboekregistratie, afhankelijkheidsinjectie (DI), verificatie en autorisatie.
gRPC-services toevoegen aan een ASP.NET Core-app
gRPC vereist het pakket Grpc.AspNetCore. Zie GRPC configureren voor meer informatie over het configureren van gRPC in een .NET-app.
De gRPC-serviceprojectsjabloon
De ASP.NET Core gRPC Service-projectsjabloon biedt een startersservice:
public class GreeterService(ILogger<GreeterService> logger) : Greeter.GreeterBase
{
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
});
}
}
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
});
}
}
GreeterService neemt over van het GreeterBase type dat wordt gegenereerd door de Greeter service in het .proto bestand. De service wordt toegankelijk gemaakt voor clients in Program.cs:
app.MapGrpcService<GreeterService>();
Zie gRPC-services met ASP.NET Core voor meer informatie over gRPC-services op ASP.NET Core.
GRPC-services aanroepen met een .NET-client
gRPC-clients zijn concrete clienttypen die worden gegenereerd op basis van .proto bestanden. De concrete gRPC-client heeft methoden die vertalen naar de gRPC-service in het .proto-bestand.
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);
Er wordt een gRPC-client gemaakt met behulp van een kanaal, dat een langdurige verbinding met een gRPC-service vertegenwoordigt. Er kan een kanaal worden gemaakt met behulp van GrpcChannel.ForAddress.
Zie GRPC-services aanroepen met de .NET-client voor meer informatie over het maken van clients en het aanroepen van verschillende servicemethoden.
Additional resources
gRPC- is een taalneutraal RPC-framework (High Performance Remote Procedure Call).
De belangrijkste voordelen van gRPC zijn:
- Moderne, hoogwaardige prestaties, lichtgewicht RPC-framework.
- Contract-first API-ontwikkeling, met protocolbuffers standaard, waardoor taalagnostische implementaties mogelijk zijn.
- Er zijn tools beschikbaar voor veel talen om sterk getypte servers en clients te genereren.
- Ondersteunt client-, server- en bidirectionele streaming-aanroepen.
- Verminderd netwerkgebruik met protobuf binaire serialisatie.
Deze voordelen maken gRPC ideaal voor:
- Lichtgewicht microservices waarbij efficiƫntie essentieel is.
- Polyglot-systemen waarbij meerdere talen vereist zijn voor ontwikkeling.
- Punt-naar-punt-realtimeservices die streamingaanvragen of -antwoorden moeten verwerken.
Tooling-ondersteuning voor C# voor .proto bestanden
gRPC maakt gebruik van een contract-first benadering voor API-ontwikkeling. Services en berichten worden gedefinieerd in .proto bestanden:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
.NET-typen voor services, clients en berichten worden automatisch gegenereerd door het opnemen van .proto bestanden in een project:
- Voeg een pakketreferentie toe aan het Grpc.Tools-pakket .
- Voeg
.protobestanden toe aan de<Protobuf>itemgroep.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Zie gRPC-services met C# voor meer informatie over gRPC-hulpprogramma's.
gRPC-services op ASP.NET Core
gRPC-services kunnen worden gehost op ASP.NET Core. Services hebben volledige integratie met ASP.NET Core-functies, zoals logboekregistratie, afhankelijkheidsinjectie (DI), verificatie en autorisatie.
gRPC-services toevoegen aan een ASP.NET Core-app
gRPC vereist het pakket Grpc.AspNetCore. Zie GRPC configureren voor meer informatie over het configureren van gRPC in een .NET-app.
De gRPC-serviceprojectsjabloon
De gRPC-serviceprojectsjabloon biedt een startersservice:
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
});
}
}
GreeterService neemt over van het GreeterBase type dat wordt gegenereerd door de Greeter service in het .proto bestand. De service wordt toegankelijk gemaakt voor clients in Startup.cs:
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
Zie gRPC-services met ASP.NET Core voor meer informatie over gRPC-services op ASP.NET Core.
GRPC-services aanroepen met een .NET-client
gRPC-clients zijn concrete clienttypen die worden gegenereerd op basis van .proto bestanden. De concrete gRPC-client heeft methoden die vertalen naar de gRPC-service in het .proto-bestand.
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);
Er wordt een gRPC-client gemaakt met behulp van een kanaal, dat een langdurige verbinding met een gRPC-service vertegenwoordigt. Er kan een kanaal worden gemaakt met behulp van GrpcChannel.ForAddress.
Zie GRPC-services aanroepen met de .NET-client voor meer informatie over het maken van clients en het aanroepen van verschillende servicemethoden.