欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

gRPC如何在ASP.NETCore3.0項(xiàng)目中使用-創(chuàng)新互聯(lián)

這篇文章給大家介紹gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到章貢網(wǎng)站設(shè)計(jì)與章貢網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋章貢地區(qū)。

一.簡(jiǎn)介

gRPC 是一個(gè)由Google開(kāi)源的,跨語(yǔ)言的,高性能的遠(yuǎn)程過(guò)程調(diào)用(RPC)框架。 gRPC使客戶(hù)端和服務(wù)端應(yīng)用程序可以透明地進(jìn)行通信,并簡(jiǎn)化了連接系統(tǒng)的構(gòu)建。它使用HTTP/2作為通信協(xié)議,使用 Protocol Buffers 作為序列化協(xié)議。

它的主要優(yōu)點(diǎn):

  • 現(xiàn)代高性能輕量級(jí) RPC 框架。

  • 約定優(yōu)先的 API 開(kāi)發(fā),默認(rèn)使用 Protocol Buffers 作為描述語(yǔ)言,允許與語(yǔ)言無(wú)關(guān)的實(shí)現(xiàn)。

  • 可用于多種語(yǔ)言的工具,以生成強(qiáng)類(lèi)型的服務(wù)器和客戶(hù)端。

  • 支持客戶(hù)端,服務(wù)器雙向流調(diào)用。

  • 通過(guò)Protocol Buffers二進(jìn)制序列化減少網(wǎng)絡(luò)使用。

  • 使用 HTTP/2 進(jìn)行傳輸

這些優(yōu)點(diǎn)使gRPC非常適合:

  • 高性能輕量級(jí)微服務(wù) - gRPC設(shè)計(jì)為低延遲和高吞吐量通信,非常適合需要高性能的輕量級(jí)微服務(wù)。

  • 多語(yǔ)言混合開(kāi)發(fā) - gRPC工具支持所有流行的開(kāi)發(fā)語(yǔ)言,使gRPC成為多語(yǔ)言開(kāi)發(fā)環(huán)境的理想選擇。

  • 點(diǎn)對(duì)點(diǎn)實(shí)時(shí)通信 - gRPC對(duì)雙向流調(diào)用提供出色的支持。gRPC服務(wù)可以實(shí)時(shí)推送消息而無(wú)需輪詢(xún)。

  • 網(wǎng)絡(luò)受限環(huán)境 - 使用 Protocol Buffers二進(jìn)制序列化消息,該序列化始終小于等效的JSON消息,對(duì)網(wǎng)絡(luò)帶寬需求比JSON小

不建議使用gRPC的場(chǎng)景:

  • 瀏覽器可訪問(wèn)的API - 瀏覽器不完全支持gRPC。雖然gRPC-Web可以提供瀏覽器支持,但是它有局限性,引入了服務(wù)器代理

  • 廣播實(shí)時(shí)通信 - gRPC支持通過(guò)流進(jìn)行實(shí)時(shí)通信,但不存在向已注冊(cè)連接廣播消息的概念

  • 進(jìn)程間通信 - 進(jìn)程必須承載HTTP/2才能接受傳入的gRPC調(diào)用,對(duì)于Windows,進(jìn)程間通信管道是一種更快速的方法。

摘自微軟官方文檔

支持的語(yǔ)言如下:

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

二.gRPC on .NET Core

gRPC 現(xiàn)在可以非常簡(jiǎn)單的在 .NET Core 和 ASP.NET Core 中使用,在 .NET Core 上的實(shí)現(xiàn)的開(kāi)源地址:https://github.com/grpc/grpc-dotnet ,它目前由微軟官方 ASP.NET 項(xiàng)目的人員進(jìn)行維護(hù),良好的接入 .NET Core 生態(tài)。

.NET Core 的 gRPC 功能如下:

  • Grpc.AspNetCore 一個(gè)用于在ASP.NET Core承載gRPC服務(wù)的框架,將 gRPC和ASP.NET Core 功能集成在一起,如:日志、依賴(lài)注入、身份認(rèn)證和授權(quán)。

  • Grpc.Net.Client 基于HttpClient (HttpClient現(xiàn)已支持HTTP/2)的 gRPC客戶(hù)端

  • Grpc.Net.ClientFactory 與gRPC客戶(hù)端集成的HttpClientFactory,允許對(duì)gRPC客戶(hù)端進(jìn)行集中配置,并使用DI注入到應(yīng)用程序中

三.使用 ASP.NET Core 創(chuàng)建 gRPC 服務(wù)

通過(guò) Visual Studio 2019 (16.3.0)提供的模板,可以快速創(chuàng)建 gRPC 服務(wù)。

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

來(lái)扒拉一下默認(rèn)源碼包含了什么東東。

① 配置文件appsettings.json ,多了Kestrel 啟用 HTTP/2 的配置,因?yàn)?gRPC 是基于 HTTP/2 來(lái)通信的

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

② PB協(xié)議文件greet.proto 用于自動(dòng)生成服務(wù)、客戶(hù)端和消息(表示傳遞的數(shù)據(jù))的C# Class

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

③ 服務(wù)類(lèi)GreeterService ,服務(wù)類(lèi)集成的Greeter.GreeterBase 來(lái)自于根據(jù)proto文件自動(dòng)生成的,生成的類(lèi)在obj\Debug\netcoreapp3.0目錄下

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

自動(dòng)生成的類(lèi):

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

Startup.cs類(lèi),將 gRPC服務(wù)添加到了終結(jié)點(diǎn)路由中

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

⑤ csproj 項(xiàng)目文件,包含了 proto 文件引用

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

2.運(yùn)行

第一次運(yùn)行會(huì)提示是否信任證書(shū),點(diǎn)擊“是”

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

這是因?yàn)镠TTP/2需要HTTPS,盡管HTTP/2協(xié)議沒(méi)有明確規(guī)定需要HTTPS,但是為了安全在瀏覽器實(shí)現(xiàn)上都要求了HTTPS,所以現(xiàn)在的HTTP/2和HTTPS基本都是一對(duì)。

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

四. 創(chuàng)建 gRPC 客戶(hù)端

1.添加一個(gè).NET Core 控制臺(tái)應(yīng)用程序

2.通過(guò)nuget添加包:Grpc.Net.Client、Google.Protobuf、Grpc.Tools

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

3.將服務(wù)的 proto 文件復(fù)制到客戶(hù)端

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

4.編輯客戶(hù)端項(xiàng)目文件,添加關(guān)于proto文件的描述

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

注意GrpcServices="Client" 這里是Client和服務(wù)是不一樣的

5.生成客戶(hù)端項(xiàng)目可以通過(guò)proto文件生成類(lèi)

6.添加客戶(hù)端調(diào)用代碼

static async Task Main(string[] args)
{
 var channel = GrpcChannel.ForAddress("https://localhost:5001");
 var client = new Greeter.GreeterClient(channel);
 var reply = await client.SayHelloAsync(
  new HelloRequest { Name = "曉晨" });
 Console.WriteLine("Greeter 服務(wù)返回?cái)?shù)據(jù): " + reply.Message);
 Console.ReadKey();
}

7.先啟動(dòng)服務(wù),然后運(yùn)行客戶(hù)端

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

這里可以看到,客戶(hù)端成功調(diào)用了服務(wù),收到了返回的消息。

五.自己動(dòng)手寫(xiě)一個(gè)服務(wù)

前面我們使用的 Greeter 服務(wù)是由模板自動(dòng)給我們創(chuàng)建的,現(xiàn)在我們來(lái)自己動(dòng)手寫(xiě)一個(gè)服務(wù)。

1.定義 proto 文件LuCat.proto,并在csproj項(xiàng)目文件中添加描述

syntax = "proto3";

option csharp_namespace = "AspNetCoregRpcService";

import "google/protobuf/empty.proto";
package LuCat; //定義包名

//定義服務(wù)
service LuCat{
 //定義吸貓方法
 rpc SuckingCat(google.protobuf.Empty) returns(SuckingCatResult);
}

message SuckingCatResult{
 string message=1;
}

2.實(shí)現(xiàn)服務(wù)LuCatService.cs

public class LuCatService:LuCat.LuCatBase
{
 private static readonly List<string> Cats=new List<string>(){"英短銀漸層","英短金漸層","美短","藍(lán)貓","貍花貓","橘貓"};
 private static readonly Random Rand=new Random(DateTime.Now.Millisecond);
 public override Task<SuckingCatResult> SuckingCat(Empty request, ServerCallContext context)
 {
  return Task.FromResult(new SuckingCatResult()
  {
   Message = $"您吸了一只{Cats[Rand.Next(0, Cats.Count)]}"
  });
 }
}

3.在Startup終結(jié)點(diǎn)路由中注冊(cè)

endpoints.MapGrpcService<LuCatService>();

4.添加客戶(hù)端調(diào)用

var catClient = new LuCat.LuCatClient(channel);
var catReply = await catClient.SuckingCatAsync(new Empty());
Console.WriteLine("調(diào)用擼貓服務(wù):"+ catReply.Message);

5.運(yùn)行測(cè)試

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

六.實(shí)際使用中的技巧

技巧1

上面章節(jié)的操作步驟中,我們需要在服務(wù)和客戶(hù)端之間復(fù)制proto,這是一個(gè)可以省略掉的步驟。

1.復(fù)制 Protos 文件夾到解決方案根目錄(sln文件所在目錄)

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

2.刪除客戶(hù)端和服務(wù)項(xiàng)目中的 Protos 文件夾

3.在客戶(hù)端項(xiàng)目文件csproj中添加關(guān)于proto文件的描述

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

4.在服務(wù)項(xiàng)目文件csproj中添加關(guān)于proto文件的描述

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

在實(shí)際項(xiàng)目中,請(qǐng)自己計(jì)算相對(duì)路徑

5.這樣兩個(gè)項(xiàng)目都是使用的一個(gè)proto文件,只用維護(hù)這一個(gè)文件即可

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

技巧2

我們?cè)趯?shí)際項(xiàng)目中使用,肯定有多個(gè) proto 文件,難道我們每添加一個(gè) proto 文件都要去更新 csproj文件?

我們可以使用MSBuild變量來(lái)幫我們完成,我們將 csproj 項(xiàng)目文件中引入proto文件信息進(jìn)行修改。

服務(wù)端:

 <ItemGroup>
 <Protobuf Include="..\..\Protos\*.proto" GrpcServices="Server" Link="Protos\%(RecursiveDir)%(Filename)%(Extension)" />
 </ItemGroup>

客戶(hù)端:

 <ItemGroup>
 <Protobuf Include="..\..\Protos\*.proto" GrpcServices="Client" Link="Protos\%(RecursiveDir)%(Filename)%(Extension)" />
 </ItemGroup>

示例:

gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用

關(guān)于gRPC如何在ASP.NET Core 3.0項(xiàng)目中使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

標(biāo)題名稱(chēng):gRPC如何在ASP.NETCore3.0項(xiàng)目中使用-創(chuàng)新互聯(lián)
地址分享:http://aaarwkj.com/article6/dppdog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站建設(shè)、定制網(wǎng)站、標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
成人三级中文字幕电影| 国产综合亚洲欧美日韩| 欧美日韩亚洲精品亚洲欧洲| 亚洲中文字幕乱码熟女在线| 精品一区二区三区亚洲| 国产又粗又长又大又长| 久久伊人这里都是精品| 播放欧美日韩特黄大片| 蜜臀av网站在线播放| 欧美高清成人一区二区三区| 成人福利午夜一区二区| 日韩特级黄片在线免费观看| 人妻一区二区三区中文字幕| 91嫩草中文字幕在线| 精品久久久久久亚洲野狼| 日本欧美国产一区二区| 丁香六月婷婷激情啪啪综合| 国产美女冒白浆视频免费| 久久人妻一区二区三区免费| 中文字幕乱码高清欧美日韩| 日韩精品中文一区二区| 亚洲国产成人91精品| 亚洲精品色播一区二区| 蜜臀av成人精品蜜臀av| 精品国产美女主播在线| 亚洲天堂av日韩在线| 国产男女免费完整视频| 大胸妇女引诱老师在线观看| 亚洲人妖视频在线观看| 欧美一区二区专区在线| 久久亚洲中文字幕丝袜长腿| 亚洲精品日本一区二区| 亚洲精品国产第一区第二区| 亚洲av二区三区成人| 日韩欧美一区二区在线播放| 天堂网av高清在线播放| 久久亚洲精品中文字幕一| 日本三卡=卡无人区| 亚洲图文一区二区三区四区| 欧美亚洲国产日韩另类| 欧美 国产 综合 日韩|