webapi和GRPC性能对比

平台:dotnet 3.0.100-preview6-012264

IDE:VS2019

硬件

 

新建WEBAPI项目

 webapi和GRPC性能对比_第1张图片

webapi和GRPC性能对比_第2张图片

webapi和GRPC性能对比_第3张图片

API项目创建完成,下一步创建GRPC项目

webapi和GRPC性能对比_第4张图片

 添加控制台测试项目

 webapi和GRPC性能对比_第5张图片

为控制台项目添加nuget依赖:Google.Protobuf  Grpc.Core Grpc.Tools

添加文件夹Protos  把GRPC项目的greet.proto复制到文件夹下面

 webapi和GRPC性能对比_第6张图片

 

右键单击项目并选择“编辑 GrpcGreeterClient.csproj”

 

生成控制台项目

在控制台程序中写两个测试方法

static async Task Main(string[] args)

        {

            Console.WriteLine("测试开始");

            var a=await ApiTest();

           var b=await GRpcTest();

 

           Console.WriteLine($"WEBAPI耗时:{a}毫秒");

           Console.WriteLine($"GRPC耗时:{b}毫秒");

            Console.WriteLine("测试完成");

            Console.ReadKey();

        }

 

        static async Task ApiTest()

        {

            Stopwatch s=new Stopwatch();

            s.Start();

            HttpClient client=new HttpClient();

            for (int i = 0; i < 1000; i++)

            {

                Console.WriteLine(await client.GetStringAsync("https://localhost:5001/api/values"));

            }

            return s.ElapsedMilliseconds;

           

        }

 

        static async Task GRpcTest()

        {

            Stopwatch s = new Stopwatch();

            s.Start();

            var channel = new Channel("localhost:50051",

                ChannelCredentials.Insecure);

      

            var client = new Greeter.GreeterClient(channel);

            for (int i = 0; i < 1000; i++)

            {

                var reply = await client.SayHelloAsync(

                    new HelloRequest { Name = "GreeterClient" });

                Console.WriteLine("Greeting: " + reply.Message);

            }

            return s.ElapsedMilliseconds;

        }

运行程序开始测试

webapi和GRPC性能对比_第7张图片

 

WEBAPI耗时:48701毫秒

GRPC耗时:5485毫秒

 

转载于:https://www.cnblogs.com/lidezhen/p/11042836.html

你可能感兴趣的:(webapi和GRPC性能对比)