【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】
宣布 Dart 官方 gRPC 支援

gRPC 是一個高效能、開源的 RPC 框架。它提供簡單的服務定義,建立在 http/2 之上,並支援雙向串流和完全整合的可插拔身份驗證。 gRPC 框架支援 多種語言,我們很高興地宣布 Dart 語言的支援現在已進入 Beta 階段!Dart gRPC 支援適用於 1.24.3 或更高版本的 Dart SDK,目前支援 Flutter 和 VM/伺服器 平台。
建立伺服器和撰寫 gRPC 服務定義
gRPC 服務通常使用 Protocol Buffers v3 描述其端點和資料序列化。以下是一個小型範例服務定義,它定義了一個名為「Greeter」的服務,其中包含一個名為「SayHello」的 rpc 訊息(兩條訊息中的數字「1」指定了 訊息欄位 的唯一 ID):
1 | service Greeter { |
定義服務後,您可以自動產生伺服器的框架:
1 | protoc --dart_out=grpc:generated -Iprotos protos/greeter.proto |
這會在 generated
目錄中產生一個 GreeterServiceBase
類別,然後您可以將其子類別化以加入實際的服務實作:
1 | class GreeterService extends GreeterServiceBase { |
使用 gRPC 用戶端呼叫伺服器
當我們產生上面的服務 stub 時,protoc
編譯器也產生了一個用戶端函式庫:
1 | import 'package:grpc/grpc.dart'; |
這樣,從用戶端層呼叫服務就很簡單了:
當運行時,這將列印以下輸出:
1 | Greeter client received: Hello, Michael! |
後續步驟
要開始在 Dart 中使用 gRPC,請查看我們新的 Dart gRPC 快速入門,它將引導您運行和擴展 Greeter 範例。接下來,查看 Dart gRPC 教程。
如果您遇到任何問題,請 提交 issue。我們也很樂意聽到您對任何您希望看到的變更或新增的回饋;例如,我們已經聽到了一些支援 gRPC-Web 協定 的請求。提供快速回饋的一種具體方法是透過按下 issue 最上方評論中的 GitHub 豎起大拇指 👍 按鈕來「投票」給 issue。
我們期待看到您使用 Dart 的 gRPC 建立的成果!