grpc-web:跨平台實時應用編程解決方案

一、grpc-web簡介

grpc-web是Google於2018年發布的一個支持在Web瀏覽器中使用gRPC服務的技術。gRPC 是一個高性能的遠程過程調用框架,支持多種語言,包括 C、C#、Go、Java、Python、Ruby、Objective-C 等等。在跨平台方面,gRPC 也特彆強大,我們既可以使用 gRPC 在各種環境間通訊,也可以使用更輕量級的 protobuf 協議來實現跨語言調用。而 grpc-web 實現了在Web瀏覽器中使用 gRPC 服務的功能,已經在一些大型項目中得到了應用。

二、grpc-web的優點

相對於原本的http通訊,引入gRPC的通訊有如下優點:

1. 更優秀的性能

gRPC採用 Protobuf(Protocol Buffers)作為序列化工具,而 Protobuf 是一種二進制序列化工具,能夠高效地進行編解碼。因此,採用 gRPC 相比 HTTP 通信可以顯著提升性能,尤其是在移動端和高並發場景下。

2. 跨平台支持

gRPC 使用 Protobuf 協議,在不同平台和編程語言之間實現了不受限制的通訊,同時還支持 HTTP/2 協議,使其在 Web 應用中可以很好地使用。

3. 更加靈活的傳輸

gRPC支持多種協議類型,可以選擇不同的序列化方式以及傳輸協議。例如,在 TCP/IP 協議底層上使用 Protobuf 來序列化通訊數據,或者在 HTTP/2 上使用 ProtoBuf 來序列化通訊數據,從而兼具高性能和跨語言支持。

4. 自動生成代碼

gRPC不僅自動生成了客戶端和服務端的底層代碼,還可以通過 proto 編譯器生成相應語言的代碼,方便了開發人員快速上手,減少了開發人員的編寫工作量。

三、grpc-web的使用

1. 環境搭建

在使用 grpc-web 之前,我們需要先安裝 protobuf 和 grpc 環境。同時,也需要安裝對應語言的 grpc 插件,例如 gRPC for Java等。這裡只提供Javascript環境的安裝方式:


npm install grpc-web

同時還需要生成 proto 文件並編譯為 JavaScript,由 proto-loader 幫助我們實現 proto 文件和 JavaScript 的相互轉換。使用如下命令可以進行 proto-loader 的安裝:


npm install  @grpc/proto-loader

2. 生成.proto文件

首先需要編寫Protobuf語言的.proto文件,protobuf是一種語言中立、平台中立、可擴展的序列化結構數據的格式,適用於數據存儲、數據交換和配置文件等領域。

以下是簡單的proto文件定義:


syntax = "proto3";

package greeter;

option go_package = "pb";

service Greeter {
  rpc Hello(HelloRequest) returns (HelloReply) {
  }
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1; 
}

編譯.proto文件:


protoc --proto_path=. ./greeter.proto --js_out=import_style=commonjs:. --grpc-web_out=import_style=commonjs,mode=grpcwebtext:.

3. 編寫前端代碼

使用前需要調用MetholdNameClient來進行初始化:


const { MetholdNameClient } = require('service_grpc_web_pb.js');
const { MetholdRequst } = require('service_pb.js');

const client = new MetholdNameClient('http://localhost:8080', null, null);

const name = 'world';
const request = new MetholdRequst();
request.setName(name);

client.metholdName(request, {}, (err, response) => {
  if (err) {
    console.log(err);
  } else {
    console.log(response.getData());
  }
});

初始化後,就可以通過調用gRPC方法進行通訊了。

四、grpc-web的實際應用

grpc-web已經在一些大型項目中得到了應用,如Uber的調度系統等。另外,使用 gRPC + grpc-web 進行微服務架構的部署也是不錯的選擇。

五、總結

grpc-web是一個非常高效的跨平台實時應用編程解決方案,它充分利用了gRPC和Protobuf所提供的高性能和跨平台支持等優點,在Web應用開發中得到廣泛應用。使用 grpc-web,我們可以給 Web 應用帶來更快、更穩定的通訊能力。

原創文章,作者:EKUJA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/315720.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EKUJA的頭像EKUJA
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相關推薦

發表回復

登錄後才能評論