您好,登錄后才能下訂單哦!
.Net Core3.0如何使用gRPC,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
gRPC是可以在任何環境中運行的現代開源高性能RPC框架。它可以通過可插拔的支持來有效地連接數據中心內和跨數據中心的服務,以實現負載平衡,跟蹤,運行狀況檢查和身份驗證。它也適用于分布式計算的最后一英里,以將設備,移動應用程序和瀏覽器連接到后端服務。
用于定義gRPC服務和消息的協定;服務端和客戶端共享proto文件。
.NETcore 3.0創建項目提供了一個新的gRPC模板,可以輕松地使用ASP.NET Core構建gRPC服務。我們按照步驟一步一步創建AA.GrpcService 服務,當然你可以使用命令:dotnet new grpc -o GrpcGreeter
選擇gRPC服務項目模板
最終生成的項目
syntax = "proto3";
option csharp_namespace = "AA.GrpcService";
package Greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings.
message HelloReply {
string message = 1;
}
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)
{
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
});
});
}
創建完成之后,自動包含了包的引用、proto文件的創建、services服務的生成,模板項目在后臺執行一些操作如
創建一個包含所有gRPC依賴項的ASP.NET Core項目。
創建一個名為的gRPC服務定義文件greet.proto。
根據服務定義文件自動生成所有gRPC存根。
GreeterService.cs根據自動生成的gRPC存根創建gRPC服務。
在Startup.cs中配置gRPC管道映射到GreeterService.cs
添加引用包:
package Grpc.Net.ClientFactory
package Google.Protobuf
package Grpc.Tools
Protos 文件(包含greet.proto)自動從AA.GrpcService項目拷貝
自動添加節點
<ItemGroup> <Protobuf Include="..\AA.GrpcService\Protos\greet.proto" GrpcServices="Client"> <Link>Protos\greet.proto</Link> </Protobuf> </ItemGroup>
最后,添加以下代碼進行gRPC請求;
class Program { static async Task Main(string[] args) { using var channel = GrpcChannel.ForAddress("https://localhost:5005"); var client = new Greeter.GreeterClient(channel); var response = await client.SayHelloAsync(new HelloRequest { Name = "gRPC" }); Console.WriteLine("Greeting:" + response.Message); Console.WriteLine("Press a key to exit"); Console.ReadKey(); } }
運行結果圖:
關于.Net Core3.0如何使用gRPC問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。