最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.NET6中使用GRPC的示例代碼

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

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

一、簡(jiǎn)單使用

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

2.文件說(shuō)明

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

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

greet.proto文件

Greeter 定義的服務(wù)名字

這里結(jié)合下面寫(xiě)的,SayHello方法名字,HelloRequest請(qǐng)求參數(shù),HelloReply返回的參數(shù)

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

為了方便我們建立一個(gè)控制臺(tái)程序,實(shí)際情況,什么程序都是可以的

4.客戶端需要安裝3個(gè)包

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

5. 然后把服務(wù)端的這個(gè)文件夾整體拿過(guò)來(lái)放在客戶端下面

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

6.同理,也把服務(wù)端的ItemGroup復(fù)制到客戶端

把Server改成Client

千萬(wàn)別把上面的替換了,這句在最下面

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

7.然后在Program中調(diào)用

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($"結(jié)果:message:{reply.Message}");
            }
            Console.ReadKey();
            //AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);  //http調(diào)用
            //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($"結(jié)果:message:{reply.Message}");
            //}
            //Console.ReadKey();
        }
    }
}

8.效果

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

補(bǔ)充:在IOC注入的方式調(diào)用GRPC,后面可以參考源碼

二、實(shí)際應(yīng)用

實(shí)際中使用,我們應(yīng)該結(jié)合webapi和grpc一起使用的

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

1.安裝包Grpc.AspNetCore 

2.復(fù)制文件

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

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.在項(xiàng)目文件中,增加如下代碼

然后點(diǎn)擊生成

如果報(bào)錯(cuò)的話,一定要注意greet.proto中你寫(xiě)的命名空間,命名空間是什么,那么就引用什么,否則繼承的時(shí)候,一直報(bào)錯(cuò)

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

所有文件

6.運(yùn)行webapi和剛才的控制臺(tái)程序看效果

可以看到,webapi和控制臺(tái)程序全部通了

此時(shí),我們就可以全部使用了,對(duì)自己的軟件調(diào)用GRPC,增加效率。對(duì)外部的軟件使用webapi,比較安全

源碼:

Net6GrpcService: Net6GrpcService

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

相關(guān)文章

最新評(píng)論

青岛市| 万安县| 将乐县| 永善县| 乐昌市| 赫章县| 宁夏| 四会市| 新密市| 岳阳市| 纳雍县| 三台县| 商河县| 凤台县| 遂昌县| 景德镇市| 金昌市| 东兴市| 万全县| 德格县| 库尔勒市| 简阳市| 宜良县| 郁南县| 嵩明县| 太原市| 友谊县| 达州市| 阳曲县| 丹阳市| 肃宁县| 竹北市| 韶关市| 迭部县| 上栗县| 沙洋县| 察雅县| 莆田市| 沂源县| 宽城| 高阳县|