gRPC 服務 - 除了 Web API 之外的新選擇
gRPC 全名叫 gRPC Remote Procedure Calls,是一個由 Google 開發的 RPC 框架,基於 HTTP/2 協定及 Protocol Buffers 序列化協定設計而成的,主打著高性能、跨平台、跨語言(這一點頗吸引我),我們可以將 gRPC Host 在 ASP.NET Core 上做為一個服務發佈出去。 什麼是 RPC? RPC 是 Remote Procedure Calls(遠端程序呼叫)的縮寫,顧名思義,就是去呼叫位於遠端主機上的一個程序,要完成這樣一件事情,標準的 RPC 架構需要四個元件: Client 、 Client Stub 、 Server 、 Server Stub ,其互動方式如下圖: 關於 RPC 更詳細的資訊,網路上已經有很多了,這個就請大家自行 Google 了。 gRPC 服務 RPC 的架構就如剛剛所描述的,至少需要一個 RPC 的 Server 提供服務,gRPC 也不例外,關於這點 gRPC 官網的 Tutorials 有各種程式語言的範例,可以一步一步地純手工打造,但是我們是寫 C# 的,微軟已經幫我們準備好 gRPC 服務的專案範本,直接拿來用就好了,我們打開 Visual Studio 2019(這邊使用的版本是 16.3.2),專案類型選擇「Web」,就可以看到 gRPC 服務 ,點擊下一步把專案建起來。 Protocol Buffers Protocol Buffers 是由 Google 所定義的一種資料格式,檔案的副檔名是 .proto ,很像 JSON 但不是 JSON,還記得剛剛所說的 RPC 架構的四個元件吧? gRPC 中的 Client Stub 及 Server Stub 就必須依賴 proto 檔來產生,可以把 proto 檔看成是 API 的定義檔,所以撰寫 gRPC 服務得先從 proto 檔下手。 我們使用的 Protocol Buffers 格式的版本是 proto3 , Google 的文件 也很清楚地告訴我們該怎麼撰寫,那我就不使用專案範本中 GreeterService 的範例,而是自己想一個範例,從無到有地建立起...