国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

.NET6中使用GRPC的示例代碼

瀏覽:26日期:2022-06-14 14:16:57
目錄一、簡(jiǎn)單使用二、實(shí)際應(yīng)用1.安裝包Grpc.AspNetCore 2.復(fù)制文件3.創(chuàng)建GreeterService.cs,直接復(fù)制就行了4.在Program.cs中注入5.在項(xiàng)目文件中,增加如下代碼6.運(yùn)行webapi和剛才的控制臺(tái)程序看效果

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.ProtobufGrpc.Net.ClientGrpc.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)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 英超| 仁布县| 宕昌县| 南阳市| 屏东县| 青铜峡市| 依安县| 班玛县| 塘沽区| 合作市| 舒城县| 裕民县| 永丰县| 都兰县| 浮梁县| 三江| 阳城县| 天柱县| 西吉县| 临漳县| 凤城市| 彰武县| 陇川县| 达孜县| 河南省| 牡丹江市| 双牌县| 永善县| 吐鲁番市| 射洪县| 平邑县| 西藏| 黑龙江省| 哈巴河县| 六安市| 屏南县| 监利县| 丽水市| 宜阳县| 鸡西市| 沿河|