亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

.NET6中使用GRPC的示例代碼

瀏覽:18日期:2022-06-14 14:16:57
目錄一、簡單使用二、實際應用1.安裝包Grpc.AspNetCore 2.復制文件3.創建GreeterService.cs,直接復制就行了4.在Program.cs中注入5.在項目文件中,增加如下代碼6.運行webapi和剛才的控制臺程序看效果

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

一、簡單使用

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

2.文件說明

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

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

greet.proto文件

Greeter 定義的服務名字

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

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

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

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

Google.ProtobufGrpc.Net.ClientGrpc.Tools

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

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

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一起使用的

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

1.安裝包Grpc.AspNetCore

2.復制文件

3.創建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內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: ASP.NET
主站蜘蛛池模板: 国产成人免费高清激情视频 | 91蝌蚪九色| 免费黄色大片在线观看 | 最新国产精品好看的国产精品 | 久久夏同学国产免费观看 | 日本精品中文字幕有码 | 国产高清亚洲精品26u | 婷婷久 | 91精品国产9l久久久久 | 日本乱人伦片中文字幕三区 | 亚洲xx站 | 欧美不卡精品中文字幕日韩 | 欧美性野久久久久久久久 | 免费观看的黄色网址 | 黑人巨大videosjapan高清 黑人巨大vsさとう遥希 | 亚洲第一视频区 | 亚洲欧洲日韩国产一区二区三区 | 综合图片亚洲 | 欧美v亚洲v国产v | 美国一级做a爰片性色毛片 美国人与性xxxxxxx | 国产亚洲综合视频 | 亚洲第一免费播放区 | 日韩在线不卡一区在线观看 | 亚洲国产一二三 | 日本精品视频一区二区三区 | 中文字幕婷婷 | 午夜精品久久久久久91 | 色综合999| 黄色美女在线观看 | 国产毛片在线高清视频 | 婷婷色在线观看 | 欧美日韩国产一区三区 | 国产成人精品日本亚洲语音 | 精品综合久久久久久97超人 | 毛片久久久 | 日韩一区二区不卡 | 国语对白清晰好大好白在线 | 一级呦女专区毛片 | 亚洲欧美中文日韩在线v日本 | 中文字幕亚洲另类天堂 | 黄毛片|