.NetCore3.0如何使用gRPC

.Net Core3.0如何使用gRPC,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(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ò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,福清網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

gRPC是什么

gRPC是可以在任何環(huán)境中運(yùn)行的現(xiàn)代開(kāi)源高性能RPC框架。它可以通過(guò)可插拔的支持來(lái)有效地連接數(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ù)端和客戶(hù)端共享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)目模板

.Net Core3.0如何使用gRPC

最終生成的項(xiàng)目

.Net Core3.0如何使用gRPC

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<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            });        }    }
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<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");                });            });        }

創(chuàng)建完成之后,自動(dòng)包含了包的引用、proto文件的創(chuàng)建、services服務(wù)的生成,模板項(xiàng)目在后臺(tái)執(zhí)行一些操作如

  • 創(chuàng)建一個(gè)包含所有g(shù)RPC依賴(lài)項(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ù)

.Net Core3.0如何使用gRPC

創(chuàng)建gRPC客戶(hù)端

下面,我們創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序作為客戶(hù)端調(diào)用gRPC服務(wù);

.Net Core3.0如何使用gRPC

引用gRPC服務(wù),步驟:右鍵項(xiàng)目添加=》服務(wù)引用彈出以下頁(yè)面;

.Net Core3.0如何使用gRPC

點(diǎn)擊確定

.Net Core3.0如何使用gRPC

.Net Core3.0如何使用gRPC

我們看項(xiàng)目結(jié)構(gòu),他們會(huì)自動(dòng)幫我們處理一下操作:
  • 添加引用包:

  1.  package Grpc.Net.ClientFactory

  2.  package Google.Protobuf

  3.  package Grpc.Tools

  • Protos 文件(包含greet.proto)自動(dòng)從AA.GrpcService項(xiàng)目拷貝

  • 自動(dòng)添加節(jié)點(diǎn)

<ItemGroup>    <Protobuf Include="..\AA.GrpcService\Protos\greet.proto" GrpcServices="Client">      <Link>Protos\greet.proto</Link>    </Protobuf>  </ItemGroup>
最后,添加以下代碼進(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é)果圖:

.Net Core3.0如何使用gRPC

關(guān)于.Net Core3.0如何使用gRPC問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

分享文章:.NetCore3.0如何使用gRPC
標(biāo)題鏈接:http://muchs.cn/article10/gheogo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)