當前位置 主頁 > 服務器問題 > win服務器問題匯總 > 最大化 縮小

    ASP.NET Core 3.0使用gRPC的具體方法

    欄目:win服務器問題匯總 時間:2019-12-26 00:25

    一.簡介

    gRPC 是一個由Google開源的,跨語言的,高性能的遠程過程調用(RPC)框架。 gRPC使客戶端和服務端應用程序可以透明地進行通信,并簡化了連接系統的構建。它使用HTTP/2作為通信協議,使用 Protocol Buffers 作為序列化協議。

    它的主要優點:

    現代高性能輕量級 RPC 框架。 約定優先的 API 開發,默認使用 Protocol Buffers 作為描述語言,允許與語言無關的實現。 可用于多種語言的工具,以生成強類型的服務器和客戶端。 支持客戶端,服務器雙向流調用。 通過Protocol Buffers二進制序列化減少網絡使用。 使用 HTTP/2 進行傳輸

    這些優點使gRPC非常適合:

    高性能輕量級微服務 - gRPC設計為低延遲和高吞吐量通信,非常適合需要高性能的輕量級微服務。 多語言混合開發 - gRPC工具支持所有流行的開發語言,使gRPC成為多語言開發環境的理想選擇。 點對點實時通信 - gRPC對雙向流調用提供出色的支持。gRPC服務可以實時推送消息而無需輪詢。 網絡受限環境 - 使用 Protocol Buffers二進制序列化消息,該序列化始終小于等效的JSON消息,對網絡帶寬需求比JSON小

    不建議使用gRPC的場景:

    瀏覽器可訪問的API - 瀏覽器不完全支持gRPC。雖然gRPC-Web可以提供瀏覽器支持,但是它有局限性,引入了服務器代理 廣播實時通信 - gRPC支持通過流進行實時通信,但不存在向已注冊連接廣播消息的概念 進程間通信 - 進程必須承載HTTP/2才能接受傳入的gRPC調用,對于Windows,進程間通信管道是一種更快速的方法。

    摘自微軟官方文檔

    支持的語言如下:

    二.gRPC on .NET Core

    gRPC 現在可以非常簡單的在 .NET Core 和 ASP.NET Core 中使用,在 .NET Core 上的實現的開源地址:https://github.com/grpc/grpc-dotnet ,它目前由微軟官方 ASP.NET 項目的人員進行維護,良好的接入 .NET Core 生態。

    .NET Core 的 gRPC 功能如下:

    Grpc.AspNetCore 一個用于在ASP.NET Core承載gRPC服務的框架,將 gRPC和ASP.NET Core 功能集成在一起,如:日志、依賴注入、身份認證和授權。 Grpc.Net.Client 基于HttpClient (HttpClient現已支持HTTP/2)的 gRPC客戶端 Grpc.Net.ClientFactory 與gRPC客戶端集成的HttpClientFactory,允許對gRPC客戶端進行集中配置,并使用DI注入到應用程序中

    三.使用 ASP.NET Core 創建 gRPC 服務

    通過 Visual Studio 2019 (16.3.0)提供的模板,可以快速創建 gRPC 服務。

    來扒拉一下默認源碼包含了什么東東。

    ① 配置文件 appsettings.json ,多了Kestrel 啟用 HTTP/2 的配置,因為 gRPC 是基于 HTTP/2 來通信的

    ② PB協議文件 greet.proto 用于自動生成服務、客戶端和消息(表示傳遞的數據)的C# Class

    ③ 服務類 GreeterService ,服務類集成的 Greeter.GreeterBase 來自于根據proto文件自動生成的,生成的類在 obj\Debug\netcoreapp3.0目錄下

    自動生成的類:

    Startup.cs類,將 gRPC服務添加到了終結點路由中

在线观看中文字幕理论片