新聞中心
.Net Core3.0如何使用gRPC,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),福清企業(yè)網(wǎng)站建設(shè),福清品牌網(wǎng)站建設(shè),網(wǎng)站定制,福清網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,福清網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
gRPC是什么
gRPC是可以在任何環(huán)境中運(yùn)行的現(xiàn)代開源高性能RPC框架。它可以通過可插拔的支持來有效地連接數(shù)據(jù)中心內(nèi)和跨數(shù)據(jù)中心的服務(wù),以實(shí)現(xiàn)負(fù)載平衡,跟蹤,運(yùn)行狀況檢查和身份驗(yàn)證。它也適用于分布式計(jì)算的最后一英里,以將設(shè)備,移動(dòng)應(yīng)用程序和瀏覽器連接到后端服務(wù)。
proto文件
用于定義gRPC服務(wù)和消息的協(xié)定;服務(wù)端和客戶端共享proto文件。
使用新模板創(chuàng)建gRPC服務(wù)端
.NETcore 3.0創(chuàng)建項(xiàng)目提供了一個(gè)新的gRPC模板,可以輕松地使用ASP.NET Core構(gòu)建gRPC服務(wù)。我們按照步驟一步一步創(chuàng)建AA.GrpcService 服務(wù),當(dāng)然你可以使用命令:dotnet new grpc -o GrpcGreeter
選擇gRPC服務(wù)項(xiàng)目模板
最終生成的項(xiàng)目
greet.proto文件
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;
}
GreeterService.cs
public class GreeterService : Greeter.GreeterBase
{
private readonly ILogger
_logger; public GreeterService(ILogger
logger) {
_logger = logger;
}
public override Task
SayHello(HelloRequest request, ServerCallContext context) {
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
Startup.cs
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
();
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");
});
});
}
創(chuàng)建完成之后,自動(dòng)包含了包的引用、proto文件的創(chuàng)建、services服務(wù)的生成,模板項(xiàng)目在后臺(tái)執(zhí)行一些操作如
創(chuàng)建一個(gè)包含所有g(shù)RPC依賴項(xiàng)的ASP.NET Core項(xiàng)目。
創(chuàng)建一個(gè)名為的gRPC服務(wù)定義文件greet.proto。
根據(jù)服務(wù)定義文件自動(dòng)生成所有g(shù)RPC存根。
GreeterService.cs根據(jù)自動(dòng)生成的gRPC存根創(chuàng)建gRPC服務(wù)。
在Startup.cs中配置gRPC管道映射到GreeterService.cs
運(yùn)行服務(wù)
創(chuàng)建gRPC客戶端
下面,我們創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序作為客戶端調(diào)用gRPC服務(wù);
引用gRPC服務(wù),步驟:右鍵項(xiàng)目添加=》服務(wù)引用彈出以下頁面;
點(diǎn)擊確定
我們看項(xiàng)目結(jié)構(gòu),他們會(huì)自動(dòng)幫我們處理一下操作:
添加引用包:
package Grpc.Net.ClientFactory
package Google.Protobuf
package Grpc.Tools
Protos 文件(包含greet.proto)自動(dòng)從AA.GrpcService項(xiàng)目拷貝
自動(dòng)添加節(jié)點(diǎn)
Protos\greet.proto
最后,添加以下代碼進(jìn)行g(shù)RPC請(qǐng)求;
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(); } }
運(yùn)行結(jié)果圖:
關(guān)于.Net Core3.0如何使用gRPC問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
本文標(biāo)題:.NetCore3.0如何使用gRPC
網(wǎng)站鏈接:http://ef60e0e.cn/article/gheogo.html