谷歌開源gRPC-Kotlin/JVM

發(fā)布時(shí)間:2020-04-20 08:46:13  |  來源:開源中國  

谷歌開源了gRPC-Kotlin/JVM,讓開發(fā)者可以在 Kotlin 項(xiàng)目中更方便地使用 gRPC,以更簡(jiǎn)單的方式構(gòu)建可靠的網(wǎng)絡(luò)連接服務(wù)。

gRPC 是谷歌開源的高性能、通用 RPC 框架,支持多種編程語言,包括 C++、Java、Objective-C、Python、Ruby、Go、C# 與 Node.js 等。gRPC 基于 Protocol Buffers,它面向移動(dòng)和基于 HTTP/2 標(biāo)準(zhǔn)設(shè)計(jì),帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多復(fù)用請(qǐng)求等特性。這些特性使得其在移動(dòng)設(shè)備上表現(xiàn)更好,更省電且節(jié)省空間占用。

谷歌認(rèn)為,將 gRPC 與世界上第二流行的 JVM 編程語言 Kotlin 結(jié)合,開發(fā)者可以構(gòu)建從移動(dòng)應(yīng)用程序到云端微服務(wù)的一切。此項(xiàng)目構(gòu)建在 gRPC 的 Java API 之上,提供了對(duì) Kotlin 友好的 gRPC 類,支持 Kotlin 協(xié)程。

下面來看一個(gè)例子。首先需要一個(gè) proto 定義,這是一個(gè)語言無關(guān)的服務(wù)接口定義:

message HelloRequest {

string name = 1;

}

message HelloReply {

string message = 1;

}

service Greeter {

rpc SayHello (HelloRequest) returns (HelloReply) {}

}

運(yùn)行 gRPC Kotlin 生成器之后,能夠以協(xié)程的形式實(shí)現(xiàn)服務(wù):

private class HelloWorldService: GreeterCoroutineImplBase() {

override suspend fun sayHello(request: HelloRequest) = HelloReply

.newBuilder()

.setMessage("Hello ${request.name}")

.build()

}

并從客戶端異步調(diào)用它:

val request = HelloRequest.newBuilder().setName(name).build()

val response = async { stub.sayHello(request) }

println("Received: ${response.await().message}")

協(xié)程非常適合用于異步編程,而 Kotlin 版本的 gRPC 則使它變得更容易。

開發(fā)者如果希望在自己的項(xiàng)目中使用gRPC Kotlin,需要同時(shí)添加生成器和 grpc-java 配置。目前 gRPC Kotlin 仍處于測(cè)試階段,初始版本為 0.1.1 版本。

關(guān)鍵詞:

 

網(wǎng)站介紹  |  版權(quán)說明  |  聯(lián)系我們  |  網(wǎng)站地圖 

星際派備案號(hào):京ICP備2022016840號(hào)-16 營業(yè)執(zhí)照公示信息版權(quán)所有 郵箱聯(lián)系:920 891 263@qq.com