關(guān)于gRPC和Google protobuf
gRPC 是一種可以跨語言運(yùn)行的現(xiàn)代高性能遠(yuǎn)程過程調(diào)用 (RPC) 框架。gRPC 實(shí)際上已經(jīng)成為 RPC 框架的行業(yè)標(biāo)準(zhǔn),Google 內(nèi)外的組織都在使用它來從微服務(wù)到計(jì)算的“最后一英里”(移動(dòng)、網(wǎng)絡(luò)和物聯(lián)網(wǎng))的強(qiáng)大用例。
gRPC是一個(gè)高性能的開源的通用RPC框架,由Google公司開發(fā),支持常用的C++、Java、Python、C#/.Net、Go、Node、Dart、Kotlin、Object-C、PHP、Ruby等語言,采用protobuf作為數(shù)據(jù)交換格式,并且采用C++開發(fā),支持Windows 、Linux、macOS跨平臺開發(fā)。對于跨語言服務(wù)調(diào)用非常方便,只要使用protobuf定義接口協(xié)議,然后按照gRPC語言SDK調(diào)用即可。比如我們使用C++對環(huán)保數(shù)采儀器設(shè)備通過串口或者網(wǎng)口傳送的數(shù)據(jù)協(xié)議如Modbus協(xié)議、HJ212協(xié)議、或者廠商自定義的協(xié)議進(jìn)行解析之后,將數(shù)據(jù)存放到本地?cái)?shù)據(jù)庫,這個(gè)時(shí)候我們?nèi)绾螌++的數(shù)據(jù)傳給前端網(wǎng)頁呢?
這個(gè)時(shí)候可以使用多種方式。比如通過數(shù)據(jù)庫、HTTP協(xié)議、WebSocket協(xié)議、RPC遠(yuǎn)程過程調(diào)用等方式。
我之前做環(huán)保的時(shí)候,采用C++和環(huán)保硬件設(shè)備打交道,通過C++后臺程序?qū)?shù)采儀數(shù)據(jù)解析之后存入到本地Sqlite數(shù)據(jù)庫中(分表分頁存儲),然后由于展示的網(wǎng)頁比較簡單,只是用網(wǎng)頁展示當(dāng)前站點(diǎn)的數(shù)據(jù),前端采用ElementUI和Vue.js,后端采用Node.js。另外,C++后臺寫了一套RPC服務(wù)端接口,Node.js通過RPC客戶端調(diào)用C++的后臺RPC服務(wù),雙方之間通過Google Protobuf數(shù)據(jù)協(xié)議交互。
在 gRPC 中,客戶端應(yīng)用程序可以像本地對象一樣直接調(diào)用不同機(jī)器上的服務(wù)器應(yīng)用程序上的方法,從而使您更輕松地創(chuàng)建分布式應(yīng)用程序和服務(wù)。與許多 RPC 系統(tǒng)一樣,gRPC 基于定義服務(wù)的思想,指定可以遠(yuǎn)程調(diào)用的方法及其參數(shù)和返回類型。在服務(wù)器端,服務(wù)器實(shí)現(xiàn)這個(gè)接口并運(yùn)行一個(gè)gRPC服務(wù)器來處理客戶端調(diào)用。在客戶端,客戶端有一個(gè)存根(在某些語言中簡稱為客戶端),它提供與服務(wù)器相同的方法。
gRPC 客戶端和服務(wù)器可以在各種環(huán)境中運(yùn)行和相互通信(從 Google 內(nèi)部的服務(wù)器到您自己的桌面),并且可以用 gRPC 支持的任何語言編寫。例如,您可以使用 Java 輕松創(chuàng)建 gRPC 服務(wù)器,并使用 Go、Python 或 Ruby 編寫客戶端。此外,最新的 Google API 將具有其接口的 gRPC 版本,讓您可以輕松地將 Google 功能構(gòu)建到您的應(yīng)用程序中。
在 C#和ASP.NET Core中創(chuàng)建 gRPC 客戶端和服務(wù)器
在 C#和ASP.NET Core中創(chuàng)建 gRPC 客戶端和服務(wù)器十分簡單,可以參考微軟官方的幾篇文章:
- 使用 C# 的 gRPC 服務(wù)
- 使用 .NET 客戶端調(diào)用 gRPC 服務(wù)
-
教程:在 ASP.NET Core 中創(chuàng)建 gRPC 客戶端和服務(wù)器
對應(yīng)在VS2022中分別運(yùn)行GRPC服務(wù)端和客戶端的SayHello
示例接口調(diào)用如下圖所示:文章來源:http://www.zghlxwxcb.cn/news/detail-855862.html
- C# / .NET
C# 中的 gRPC 簡介視頻教程
另外,油管上面有來自UP主IAmTimCorey于2019年9月30日創(chuàng)作的一篇關(guān)于C#中使用GRPC的視頻,地址為:Intro to gRPC in C# - How To Get Started
相關(guān)示例代碼我已經(jīng)上傳到我的Github倉庫,地址為:https://github.com/ccf19881030/GrpcGreeterDemo
我們git clone https://github.com/ccf19881030/GrpcGreeterDemo.git
源代碼到本地后,使用VS2022
打開GrpcGreeterDemo.sln
解決方案,里面有GrpcGreeter
和GrpcGreeterClient
兩個(gè)項(xiàng)目,分別是基于ASP.Net Core的gRPC服務(wù)端程序和基于.NetCore控制臺的gRPC客戶端程序,我的VS2022使用的是.NetCore 7.0。如下圖所示:
我們首選將GrpcGreeter
gRPC服務(wù)端程序作為啟動(dòng)項(xiàng)目,然后運(yùn)行,如下圖所示:
接著我們再將GrpcGreeterClient
gRPC客戶端作為啟動(dòng)項(xiàng)目,然后運(yùn)行,結(jié)果如下圖所示:文章來源地址http://www.zghlxwxcb.cn/news/detail-855862.html
參考資料
- https://grpc.io/
- Introduction to gRPC
- gRPC-Quick start
- https://github.com/grpc/grpc The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
- gRPC in 5 minutes | Eric Anderson & Ivy Zhuang, Google
- Protocol Buffers
- Protocol Buffers - Google’s data interchange format
- 使用 ASP.NET Core 的 gRPC 服務(wù)
- Intro to gRPC in C# - How To Get Started
- https://github.com/ccf19881030/GrpcGreeterDemo
- 將本地托管代碼添加到 GitHub
到了這里,關(guān)于在 C#和ASP.NET Core中創(chuàng)建 gRPC 客戶端和服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!