Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Note
Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.
Warning
A ASP.NET Core ezen verziója már nem támogatott. További információt a .NET és a .NET Core támogatási szabályzatában talál. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.
Írta: James Newton-King
gRPC egy nyelvi agnosztikus, nagy teljesítményű távoli eljáráshívási (RPC) keretrendszer.
A gRPC fő előnyei a következők:
- Modern, nagy teljesítményű, könnyű RPC-keretrendszer.
- A protokollpuffereket alapértelmezés szerint használó szerződés-első API-fejlesztés, amely lehetővé teszi a nyelvi agnosztikus implementációkat.
- Számos nyelvhez elérhető eszköz, amely erősen gépelt kiszolgálókat és klienseket hoz létre.
- Támogatja az ügyfél-, kiszolgáló- és kétirányú streamelési hívásokat.
- Csökkentett hálózati használat a Protobuf bináris szerializálásával.
Ezek az előnyök ideálissá teszik a gRPC-t a következőkhöz:
- Egyszerűsített mikroszolgáltatások, ahol a hatékonyság kritikus fontosságú.
- Többnyelvű rendszerek, amelyek fejlesztéséhez több nyelvre van szükség.
- Pont–pont valós idejű szolgáltatások, amelyeknek streamelési kéréseket vagy válaszokat kell kezelnie.
C#-eszközök támogatása .proto-fájlokhoz
A gRPC egy szerződés-első megközelítést használ az API-fejlesztéshez. A szolgáltatások és üzenetek a .proto fájlokban vannak definiálva:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
.NET szolgáltatások, ügyfelek és üzenetek típusai automatikusan létrejönnek .proto fájlok projektbe való belefoglalásával:
- Adjon hozzá egy csomaghivatkozást a Grpc.Tools csomaghoz .
-
.proto-fájlokat adhat hozzá az
<Protobuf>elemcsoporthoz.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
A gRPC eszköztámogatásával kapcsolatos további információkért tekintse meg a GRPC-szolgáltatásokat a C#-tal.
gRPC-szolgáltatások a ASP.NET Core-on
A gRPC-szolgáltatások a ASP.NET Core-on üzemeltethetők. A szolgáltatások teljes mértékben integrálódnak ASP.NET alapvető funkciókkal, például a naplózással, a függőséginjektálással (DI), a hitelesítéssel és az engedélyezéssel.
GRPC-szolgáltatások hozzáadása egy ASP.NET Core-alkalmazáshoz
A gRPC használatához a Grpc.AspNetCore csomag szükséges. A gRPC .NET-alkalmazásokban való konfigurálásáról további információt a gRPC konfigurálása című témakörben talál.
A gRPC szolgáltatás projektsablonja
A ASP.NET Core gRPC-szolgáltatás projektsablonja egy kezdőszolgáltatást biztosít:
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 a GreeterBase típusból öröklődik, amely a .proto fájlban található Greeter szolgáltatásból lett generálva. A szolgáltatás elérhetővé válik az ügyfelek számára a Program.cs fájlban:
app.MapGrpcService<GreeterService>();
Ha többet szeretne megtudni, nézze meg a következő forrást: gRPC-szolgáltatások az ASP.NET Core-ral.
gRPC szolgáltatáshívások .NET ügyféllel
A gRPC-ügyfelek konkrét ügyféltípusok, amelyek .proto fájlokból jönnek létre. A konkrét gRPC-ügyfél a .proto fájlban található gRPC szolgáltatásra lefordított metódusokat tartalmazza.
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);
A gRPC-ügyfél egy csatornával jön létre, amely hosszú élettartamú kapcsolatot jelöl egy gRPC-szolgáltatással. A csatorna a következő használatával GrpcChannel.ForAddresshozható létre: .
Az ügyfelek létrehozásával és a különböző szolgáltatási módszerek meghívásával kapcsolatos további információkért lásd: GRPC-szolgáltatások hívása a .NET-ügyféllel.
Kapcsolódó tartalom
gRPC egy nyelvi agnosztikus, nagy teljesítményű távoli eljáráshívási (RPC) keretrendszer.
A gRPC fő előnyei a következők:
- Modern, nagy teljesítményű, könnyű RPC-keretrendszer.
- Szerződés-első API-fejlesztés, amely alapértelmezés szerint protokollpuffereket használ, lehetővé téve a nyelvi agnosztikus implementációkat.
- Számos nyelvhez rendelkezésre állnak eszközkészletek, amelyek erősen típusozott kiszolgálókat és klienseket generálnak.
- Támogatja az ügyfél-, kiszolgáló- és kétirányú streamelési hívásokat.
- Csökkentett hálózati használat a Protobuf bináris szerializálásával.
Ezek az előnyök ideálissá teszik a gRPC-t a következőkhöz:
- Egyszerűsített mikroszolgáltatások, ahol a hatékonyság kritikus fontosságú.
- Többnyelvű rendszerek, amelyek fejlesztéséhez több nyelvre van szükség.
- Pont–pont valós idejű szolgáltatások, amelyeknek streamelési kéréseket vagy válaszokat kell kezelnie.
C#-eszközök támogatása fájlokhoz .proto
A gRPC egy szerződés-első megközelítést használ az API-fejlesztéshez. A szolgáltatások és üzenetek a fájlokban .proto vannak definiálva:
syntax = "proto3";
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
A .NET-típusok a szolgáltatásokhoz, ügyfelekhez és üzenetekhez automatikusan generálódnak azáltal, hogy .proto fájlokat tartalmaznak egy projektben.
- Adjon hozzá egy csomaghivatkozást a Grpc.Tools csomaghoz .
- Adj hozzá
.protofájlokat az<Protobuf>elemcsoporthoz.
<ItemGroup>
<Protobuf Include="Protos\greet.proto" />
</ItemGroup>
A gRPC-eszközök támogatásáról további információt a GRPC Services with C# című cikkben talál.
gRPC-szolgáltatások a ASP.NET Core-on
A gRPC-szolgáltatások a ASP.NET Core-on üzemeltethetők. A szolgáltatások teljes mértékben integrálódnak ASP.NET alapvető funkciókkal, például a naplózással, a függőséginjektálással (DI), a hitelesítéssel és az engedélyezéssel.
GRPC-szolgáltatások hozzáadása egy ASP.NET Core-alkalmazáshoz
A gRPC használatához a Grpc.AspNetCore csomag szükséges. A gRPC .NET-alkalmazásokban való konfigurálásáról további információt a gRPC konfigurálása című témakörben talál.
A gRPC szolgáltatás projektsablonja
A gRPC szolgáltatás projektsablonja egy kezdőszolgáltatást biztosít:
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 a GreeterBase típusból öröklődik, amely a Greeter fájlban lévő .proto szolgáltatásból lett generálva. A szolgáltatás a következő helyen érhető el az ügyfelek számára Startup.cs:
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
A ASP.NET Core gRPC-szolgáltatásaival kapcsolatos további információkért tekintse meg a gRPC-szolgáltatásokat ASP.NET Core-nal.
GRPC-szolgáltatások meghívása .NET-ügyféllel
A gRPC-ügyfelek konkrét kliens típusok, amelyek generálódnak .proto fájlokból. A konkrét gRPC-ügyfél olyan metódusokat tartalmaz, amelyek a .proto fájlban lévő gRPC szolgáltatásra fordítják le.
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);
A gRPC-ügyfél egy csatornával jön létre, amely egy gRPC szolgáltatás hosszú élettartamú kapcsolatát jelöli. A csatorna a következővel GrpcChannel.ForAddresshozható létre: .
Az ügyfelek létrehozásával és a különböző szolgáltatási módszerek meghívásával kapcsolatos további információkért lásd: GRPC-szolgáltatások hívása a .NET-ügyféllel.