欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET6中使用GRPC的示例代碼

 更新時間:2023年06月19日 11:24:42   作者:故里2130  
本文主要介紹了.NET6中使用GRPC的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Supported languages | gRPC,官網(wǎng)。至于原理就不說了,可以百度原理之后,然后再結合代碼,事半功倍,就能很好理解GRPC了。

一、簡單使用

1.使用vs2022創(chuàng)建一個grpc程序,直接就默認值,下一步

2.文件說明

文件1:就是對外面調用的自定義協(xié)議,也可以理解是接口,雙方必須規(guī)定一致性,把寫的方法暴露出去。

文件2:就是一般寫的方法,業(yè)務邏輯。

greet.proto文件

Greeter 定義的服務名字

這里結合下面寫的,SayHello方法名字,HelloRequest請求參數(shù),HelloReply返回的參數(shù)

3.此時,默認的程序就是一個服務端,那么我們就創(chuàng)建一個客戶端去訪問它

為了方便我們建立一個控制臺程序,實際情況,什么程序都是可以的

4.客戶端需要安裝3個包

  • Google.Protobuf
  • Grpc.Net.Client
  • Grpc.Tools

5. 然后把服務端的這個文件夾整體拿過來放在客戶端下面

這個意思就是,他們有共同的協(xié)議,就互通了

6.同理,也把服務端的ItemGroup復制到客戶端

把Server改成Client

千萬別把上面的替換了,這句在最下面

  <ItemGroup>
    <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
  </ItemGroup>

7.然后在Program中調用

using Grpc.Net.Client;
using GrpcService1;
namespace ClientGRPC
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string url = "https://localhost:5001";   //https
            using (var channel = GrpcChannel.ForAddress(url))
            {
                var client = new Greeter.GreeterClient(channel);
                var reply = client.SayHello(new HelloRequest()
                {
                    Name = "故里2130"
                });
                Console.WriteLine($"結果:message:{reply.Message}");
            }
            Console.ReadKey();
            //AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);  //http調用
            //string url = "http://localhost:5000";
            //using (var channel = GrpcChannel.ForAddress(url))
            //{
            //    var client = new Greeter.GreeterClient(channel);
            //    var reply = client.SayHello(new HelloRequest()
            //    {
            //        Name = "故里2130"
            //    });
            //    Console.WriteLine($"結果:message:{reply.Message}");
            //}
            //Console.ReadKey();
        }
    }
}

8.效果

這樣,我們就完成了,簡單的使用過程,和webapi的效果差不多。但是它的速度遠遠大于webapi。

補充:在IOC注入的方式調用GRPC,后面可以參考源碼

二、實際應用

實際中使用,我們應該結合webapi和grpc一起使用的

其實就是把剛才創(chuàng)建的GrpcService1全部遷移到webapi中就行了

1.安裝包Grpc.AspNetCore 

2.復制文件

3.創(chuàng)建GreeterService.cs,直接復制就行了

using Grpc.Core;
using GrpcService1;
namespace webapiGRPC.Controllers
{
    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
            });
        }
    }
}

4.在Program.cs中注入

using GrpcService1;
using webapiGRPC.Controllers;
namespace webapiGRPC
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            // Add services to the container.
            builder.Services.AddControllers();
            // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen();
            builder.Services.AddGrpc();
            var app = builder.Build();
            // Configure the HTTP request pipeline.
            //if (app.Environment.IsDevelopment())
            //{
            app.UseSwagger();
            app.UseSwaggerUI();
            //}
            app.UseHttpsRedirection();
            app.UseAuthorization();
            app.MapGrpcService<GreeterService>();
            app.MapControllers();
            app.Run();
        }
    }
}

5.在項目文件中,增加如下代碼

然后點擊生成

如果報錯的話,一定要注意greet.proto中你寫的命名空間,命名空間是什么,那么就引用什么,否則繼承的時候,一直報錯

  <ItemGroup>
    <Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
  </ItemGroup>

所有文件

6.運行webapi和剛才的控制臺程序看效果

可以看到,webapi和控制臺程序全部通了

此時,我們就可以全部使用了,對自己的軟件調用GRPC,增加效率。對外部的軟件使用webapi,比較安全

源碼:

Net6GrpcService: Net6GrpcService

到此這篇關于.NET6中使用GRPC的示例代碼的文章就介紹到這了,更多相關.NET6使用GRPC內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

最新評論