Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Warning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i supportpolicyn för .NET och .NET Core. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Important
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
gRPC är ett språkagnostiskt, högpresterande RPC-ramverk (Remote Procedure Call).
De största fördelarna med gRPC är:
- Modernt, högpresterande, lätt RPC-ramverk.
- Kontrakt-första API-utveckling, med protokollbuffertar som standard, vilket möjliggör språkagnostiska implementeringar.
- Verktyg som är tillgängliga för många språk för att generera starkt skrivna servrar och klienter.
- Stöder klient-, server- och dubbelriktade strömningsanrop.
- Minskad nätverksanvändning med protobuf binär serialisering.
Dessa fördelar gör gRPC idealiskt för:
- Lätta mikrotjänster där effektiviteten är kritisk.
- Flerspråkiga system där flera språk krävs för utveckling.
- Punkt-till-punkt-realtidstjänster som behöver hantera direktuppspelningsbegäranden eller svar.
Stöd för C#-verktyg för .proto filer
gRPC använder en kontraktsinriktad metod för API-utveckling. Tjänster och meddelanden definieras i .proto filer:
syntax = "proto3";
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
  string name = 1;
}
message HelloReply {
  string message = 1;
}
.NET-typer för tjänster, klienter och meddelanden genereras automatiskt genom att inkludera .proto filer i ett projekt:
- Lägg till en paketreferens till Grpc.Tools-paketet .
- Lägg till .protofiler i<Protobuf>objektgruppen.
<ItemGroup>
  <Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Mer information om stöd för gRPC-verktyg finns i gRPC-tjänster med C#.
gRPC-tjänster på ASP.NET Core
gRPC-tjänster kan finnas på ASP.NET Core. Tjänsterna har fullständig integrering med ASP.NET Core-funktioner som loggning, beroendeinmatning (DI), autentisering och auktorisering.
Lägga till gRPC-tjänster i en ASP.NET Core-app
gRPC kräver paketet Grpc.AspNetCore. Information om hur du konfigurerar gRPC i en .NET-app finns i Konfigurera gRPC.
gRPC-tjänstprojektmallen
Projektmallen ASP.NET Core gRPC Service tillhandahåller en starttjänst:
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 ärver från typen GreeterBase som genereras från Greeter tjänsten i .proto filen. Tjänsten görs tillgänglig för klienter i Program.cs:
app.MapGrpcService<GreeterService>();
Mer information om gRPC-tjänster på ASP.NET Core finns i gRPC-tjänster med ASP.NET Core.
Anropa gRPC-tjänster med en .NET-klient
gRPC-klienter är konkreta klienttyper som genereras från .proto filer. Den konkreta gRPC-klienten har metoder som översätter till gRPC-tjänsten i filen .proto.
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);
En gRPC-klient skapas med hjälp av en kanal som representerar en långvarig anslutning till en gRPC-tjänst. En kanal kan skapas med hjälp av GrpcChannel.ForAddress.
Mer information om hur du skapar klienter och anropar olika tjänstmetoder finns i Anropa gRPC-tjänster med .NET-klienten.
Additional resources
gRPC är ett språkagnostiskt, högpresterande RPC-ramverk (Remote Procedure Call).
De största fördelarna med gRPC är:
- Modernt, högpresterande, lätt RPC-ramverk.
- Kontrakt-första API-utveckling, med protokollbuffertar som standard, vilket möjliggör språkagnostiska implementeringar.
- Verktyg finns tillgängliga för många språk för att generera starkt typade servrar och klienter.
- Stöder klient-, server- och dubbelriktade strömningsanrop.
- Minskad nätverksanvändning med protobuf binär serialisering.
Dessa fördelar gör gRPC idealiskt för:
- Lätta mikrotjänster där effektiviteten är kritisk.
- Flerspråkiga system där flera språk krävs för utveckling.
- Punkt-till-punkt-realtidstjänster som behöver hantera direktuppspelningsbegäranden eller svar.
Stöd för C#-verktyg för .proto filer
gRPC använder en kontraktsinriktad metod för API-utveckling. Tjänster och meddelanden definieras i .proto filer:
syntax = "proto3";
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
  string name = 1;
}
message HelloReply {
  string message = 1;
}
.NET-typer för tjänster, klienter och meddelanden genereras automatiskt genom att inkludera .proto filer i ett projekt:
- Lägg till en paketreferens till Grpc.Tools-paketet .
- Lägg till .protofiler i<Protobuf>objektgruppen.
<ItemGroup>
  <Protobuf Include="Protos\greet.proto" />
</ItemGroup>
Mer information om stöd för gRPC-verktyg finns i gRPC-tjänster med C#.
gRPC-tjänster på ASP.NET Core
gRPC-tjänster kan finnas på ASP.NET Core. Tjänsterna har fullständig integrering med ASP.NET Core-funktioner som loggning, beroendeinmatning (DI), autentisering och auktorisering.
Lägga till gRPC-tjänster i en ASP.NET Core-app
gRPC kräver paketet Grpc.AspNetCore. Information om hur du konfigurerar gRPC i en .NET-app finns i Konfigurera gRPC.
gRPC-tjänstprojektmallen
Projektmallen för gRPC-tjänst erbjuder en grundtjänst:
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 ärver från typen GreeterBase som genereras från Greeter tjänsten i .proto filen. Tjänsten görs tillgänglig för klienter i Startup.cs:
app.UseEndpoints(endpoints =>
{
    endpoints.MapGrpcService<GreeterService>();
});
Mer information om gRPC-tjänster på ASP.NET Core finns i gRPC-tjänster med ASP.NET Core.
Anropa gRPC-tjänster med en .NET-klient
gRPC-klienter är konkreta klienttyper som genereras från .proto filer. Den konkreta gRPC-klienten har metoder som översätter till gRPC-tjänsten i filen .proto.
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);
En gRPC-klient skapas med hjälp av en kanal som representerar en långvarig anslutning till en gRPC-tjänst. En kanal kan skapas med hjälp av GrpcChannel.ForAddress.
Mer information om hur du skapar klienter och anropar olika tjänstmetoder finns i Anropa gRPC-tjänster med .NET-klienten.
Additional resources
ASP.NET Core