gRPC入門學習之旅(二)

DotNet菜园發表於2024-03-16

gRPC入門學習之旅(一)

gRPC是一個高效能、通用的開源遠端過程呼叫(RPC)框架,基於底層HTTP/2協議標準協議層Protobuf序列化協議開發,支援眾多的開發語言,由Google開源。

gRPC也是基於以下理念:定義一個服務,指定其能夠被遠端呼叫的方法(包含引數和返回型別)。在服務端實現這個介面,並執行一個 gRPC伺服器來處理客戶端呼叫。在客戶端擁有一個存根能夠像服務端一樣的方法。

gRPC 客戶端和服務端可以在多種環境中執行和互動。你可以用Java建立一個 gRPC 服務端,用 Go、Python、C# 來建立客戶端。

特點:

  • 跨語言;
  • 基於HTTP/2之上的二進位制協議;
  • Protobuf序列化機制,比JSON體積小,網路傳輸快;
  • 一個連線上可以多路複用,併發處理多個請求和響應;
  • 多種語言的類庫實現;
  • 服務定義檔案和自動程式碼生成(.proto 檔案和 Protobuf 編譯工具);
  • 適合高效能輕量的微服務,一般對外的介面用Restful API,內部服務的呼叫用gRPC。gRPC是一個分散式服務框架,和以前的WebService,WCF類似;
  • gRPC還提供了很多擴充套件點,用於對框架進行功能定製和擴充套件,例如,透過開放負載均衡介面可以無縫的與第三方元件進行整合對接(Zookeeper、域名解析服務、SLB 服務等)。

gRPC 使用 HTTP/2 作為傳輸協議。 雖然與 HTTP 1.1 也能相容,但 HTTP/2 具有許多高階功能:

用於資料傳輸的二進位制組幀協議 - 與 HTTP 1.1 不同,HTTP 1.1 是基於文字的。

對透過同一連線傳送多個並行請求的多路複用支援 - HTTP 1.1 將處理限制為一次處理一個請求/響應訊息。

雙向全雙工通訊,用於同時傳送客戶端請求和伺服器響應。

內建流式處理,支援對大型資料集進行非同步流式處理的請求和響應。

減少網路使用率的標頭壓縮。

gRPC 是輕量型且高效能的。 其處理速度可以比 JSON 序列化快 8 倍,訊息小 60% 到 80%。 在 Microsoft Windows Communication Foundation (WCF) 中,gRPC 的效能超過經過高度最佳化的 NetTCP 繫結的速度和效率。 與偏向於 Microsoft 堆疊的 NetTCP 不同,gRPC 是跨平臺的。


接下來,我們透過一個Demo,來學習一下,如何在Visual Studio 2022中實現gRPC功能。

2、建立gRPC服務端

2.1、建立gRPC服務端專案

1. 開啟Visual Studio 2022,在開始介面中選擇“建立新專案”。如下圖。

2.或者在選單上點選檔案—>新建—>專案—>彈出“建立新專案”的介面。如下圖。

3. Visual Studio 2022彈出的“建立新專案”的對話方塊中做如下選擇。如下圖。

  • 在最左邊的下拉框中,選擇 “C# ,如下圖中1處
  • 在中間的下拉框中,選擇 “所有平臺”,如下圖2處。
  • 在最右邊的下拉框中,選擇“Web”,如下圖3處。
  • 在下圖中4處,選擇“ASP.NET Core gRPC服務”gRPC專案模板,點選“下一步”按鈕。

4.在彈出的“配置新專案”的對話方塊中,如下圖,在“專案名稱”輸入框中,輸入“Demo.GrpcService”。然後使用滑鼠點選“下一步”按鈕。

5. 在彈出的“其他資訊”的對話方塊,如下圖。在“框架”下拉框中,選擇“NET 7.0(標準期限支援)”。其他值選擇預設值即可。然後使用滑鼠點選“建立”按鈕。

6.預設專案檔案結構,如下圖所示:

2.2、專案檔案說明

  • appsettings.json
    我們開啟appsettings.json檔案,其中有一個Protocols屬性,代表基於Http2進行通訊。

  • Protos
    在建立的專案中,我們會看到有一個名稱為Protos的資料夾,該資料夾用於存放proto協議檔案,其中的greet.proto是專案預設給我們建立的一個示例檔案,它會根據協議自動生成需要的類檔案。該協議檔案中的具體說明如下圖所示:

  • Services
    在建立的專案中,我們會看到有一個名稱Services的資料夾,該資料夾用於存放具體的業務實現類(即:服務類),其中的GreeterService.cs是專案預設給我們建立的一個示例檔案,具體說明如下圖所示:

上述圖中的Greeter.GreeterBase來自greet.proto檔案生成的類檔案,具體位置如下圖所示:

  • 註冊服務

在Visual Studio 2022的“解決方案資源管理器”中找到Program.cs檔案,使用滑鼠雙擊開啟Program.cs檔案,在這個檔案中需要新增gRPC服務,同時需要將所有的業務服務進行註冊,如下圖所示:

相關文章