没有合适的资源?快使用搜索试试~ 我知道了~
首页gRPC官方文档中文版:高性能RPC框架详解
gRPC官方文档中文版:高性能RPC框架详解
需积分: 11 4 下载量 105 浏览量
更新于2024-07-20
收藏 560KB PDF 举报
gRPC官方文档中文版V1.0是一份详细的指南,介绍了一个高性能、开源且通用的远程过程调用(RPC)框架,特别针对移动和HTTP/2设计。它由Google开发,支持多种编程语言,包括C、Java和Go,对应的库分别为grpc、grpc-java和grpc-go。C版本甚至扩展到了C++、Node.js、Python、Ruby、Objective-C、PHP和C#等多种语言。 gRPC基于HTTP/2标准构建,这一版本引入了许多关键特性,如双向流、流控机制、头部压缩以及单TCP连接上的多路复用请求。这些特性使得gRPC在移动设备上表现出色,不仅提升了性能,还减少了电量消耗和存储空间占用。文档由多位译者在开源中国平台上合作完成,包括@sofeminer负责Guides部分,@马博文负责Tutorials部分,而@jason0916则进行了整体校对。 文档的结构从快速入门开始,通过实例演示如何快速启动和使用gRPC,为不同编程语言提供了详细的安装和入门教程,如C++和Java的示例链接。开发者可以在此找到一系列深入的教程和参考文档,确保他们能够逐步熟悉并掌握gRPC的使用。 对于文档的反馈或问题,读者可以通过指定网址http://www.oschina.net/news/70391/grpc-docs-cn进行交流。值得注意的是,该中文版文档由开源中国组织翻译,所有引用或分享时必须注明来源,未经许可,不得用于商业用途。 gRPC官方文档中文版V1.0是开发人员学习和实践gRPC技术的重要资源,提供了从基础到进阶的全面指导,适合各种规模和背景的开发者使用。随着社区的发展,文档会不断更新和充实,以满足日益增长的需求。
资源详情
资源推荐
• Python
生成的 Python 代码有一个根据频道创建存根的帮助方法。
• Go
在 gRPC Go 你是使用一个特殊的 Dial() 方法来创建频道。
• Ruby
stub = Helloworld::Greeter::Stub.new('localhost:50051')
在 Ruby 里,我们可以在一个方法里调用从 .proto 文件里生成的存根类。
• Node.js
var client = new hello_proto.Greeter('localhost:50051');
在 Node.js ,我们可以在一步调用 Greeter 存根构造器。
• C#
class GreeterClient {
public:
GreeterClient(std::shared_ptr<ChannelInterface> channel)
: stub_(Greeter::NewStub(channel)) {}
...
private:
std::unique_ptr<Greeter::Stub> stub_;
};
channel = implementations.insecure_channel('localhost', 50051)
stub = helloworld_pb2.beta_create_Greeter_stub(channel)
...
const (
address = "localhost:50051"
defaultName = "world"
)
func main() {
// Set up a connection to the server.
conn, err := grpc.Dial(address)
if err != nil {
log.Fatalf("did not connect: %v", err)
}
defer conn.Close()
c := pb.NewGreeterClient(conn)
...
}
• Objective-C
在 Objective-C 里,我们可以用生成的 HLWGreeter 类指定的初始化方法完成,这个方法需要用
NSString * 类型表示的服务器和端口作为参数。
当用给定的 host:port 对通讯的时候,注意对 useInsecureConnectionsForHost: 的调用,要
通知 gRPC 库使用明文 (而不是 TLS 加密的连接)。
• PHP
在 PHP 里,我们可以使用 GreeterClient 类的构造器一步完成。
调用 RPC
现在我们可以联系服务并获得一个 greeting :
1. 我们创建并填充一个 HelloRequest 发送给服务。
2. 我们用请求调用存根的 SayHello(),如果 RPC 成功,会得到一个填充的 HelloReply ,从其中我
们可以获得 greeting。
• Java
你可以在 HelloWorldClient.java(https://github.com/grpc/grpc-
java/blob/master/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldClient.j
ava) 里查看完整的客户端代码。
• C++
Channel channel = new Channel("127.0.0.1:50051", Credentials.Insecure);
var client = Greeter.NewClient(channel);
...
#import <GRPCClient/GRPCCall+Tests.h>
...
static NSString * const kHostAddress = @"localhost:50051";
...
[GRPCCall useInsecureConnectionsForHost:kHostAddress];
HLWGreeter *client = [[HLWGreeter alloc] initWithHost:kHostAddress];
$client = new helloworld\GreeterClient(
new Grpc\BaseStub('localhost:50051', []));
HelloRequest req = HelloRequest.newBuilder().setName(name).build();
HelloReply reply = blockingStub.sayHello(req);
std::string SayHello(const std::string& user) {
HelloRequest request;
request.set_name(user);
HelloReply reply;
你可以在
greeter_client.cc(https://github.com/grpc/grpc/blob/master/examples/cpp/helloworld/gr
eeter_client.cc) 里查看完整的客户端代码。
• Python
你可以在
greeter_client.py(https://github.com/grpc/grpc/blob/master/examples/python/helloworl
d/greeter_client.py) 里查看完整的客户端代码。
• Go
你可以在 greeter_client/main.go(https://github.com/grpc/grpc-
go/blob/master/examples/helloworld/greeter_client/main.go) 里查看完整的客户端代码。
• Ruby
你可以在
greeter_client.rb(https://github.com/grpc/grpc/blob/master/examples/ruby/greeter_clien
t.rb) 里查看完整的客户端代码。
• Node.js
你可以在
ClientContext context;
Status status = stub_->SayHello(&context, request, &reply);
if (status.ok()) {
return reply.message();
} else {
return "Rpc failed";
}
}
response = stub.SayHello(helloworld_pb2.HelloRequest(name='you'),
_TIMEOUT_SECONDS)
print "Greeter client received: " + response.message
r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})
if err != nil {
log.Fatalf("could not greet: %v", err)
}
log.Printf("Greeting: %s", r.Message)
message = stub.say_hello(Helloworld::HelloRequest.new(name: user)).message
p "Greeting: #{message}"
client.sayHello({name: user}, function(err, response) {
console.log('Greeting:', response.message);
});
/examples/node/greeter_client.js(https://github.com/grpc/grpc/blob/master/examples/n
ode/greeter_client.js) 里查看完整的客户端代码。
• C#
你可以在
GreeterClient/Program.cs(https://github.com/grpc/grpc/blob/master/examples/csharp/h
elloworld/GreeterClient/Program.cs) 里查看完整的客户端代码。
• Objective-C
你可以在 examples/objective-
c/helloworld(https://github.com/grpc/grpc/tree/master/examples/objective-
c/helloworld) 里查看完整的客户端代码。
• PHP
你可以在
greeter_client.php(https://github.com/grpc/grpc/blob/master/examples/php/greeter_clie
nt.php) 里查看完整的客户端代码。
试一下!
你可以尝试用同一个语言在客户端和服务端构建并运行例子。或者你可以尝试 gRPC 最有用的一个
功能 - 不同的语言间的互操作性,即在不同的语言运行客户端和服务端。每个服务端和客户端使用
从同一过 proto 文件生成的接口代码,则意味着任何 Greeter 客户端可以与任何 Greeter 服务端
对话。
• Java
首先运行服务端:
你可以从 examples 目录构建并运行服务端。首先构建客户端和服务端:
`
$ ../gradlew -PskipCodegen=true installDist
`
var reply = client.SayHello(new HelloRequest { Name = user });
Console.WriteLine("Greeting: " + reply.Message);
HLWHelloRequest *request = [HLWHelloRequest message];
request.name = @"Objective-C";
[client sayHelloWithRequest:request handler:^(HLWHelloReply *response, NSError
*error) {
NSLog(@"%@", response.message);
}];
$request = new helloworld\HelloRequest();
$request->setName($name);
list($reply, $status) = $client->SayHello($request)->wait();
$message = $reply->getMessage();
然后运行服务端,服务端将监听 50051 :
`
$ ./build/install/grpc-examples/bin/hello-world-server
`
• C++
你可以从 examples/cpp/helloworld 目录下构建并运行服务端。首先构建客户端和服务端:
$ make
然后运行服务端,服务端将监听 50051 :
$ ./greeter_server
• Python
你可以用如下命令到 examples/python/helloworld 下运行服务端:
$ ./run_server.sh
• Go
你可以用如下命令到 examples/helloworld 下运行服务端:
$ greeter_server &
• Ruby
你可以用如下命令到 examples/ruby 下运行服务端:
$ bundle exec ./greeter_server.rb &
• Node.js
你可以用如下命令到 examples/node 下运行服务端:
$ node ./greeter_server.js &
• C#
构建解决方案,然后到 examples/csharp :
一旦服务器在运行,在其他的终端窗口运行客户端并确认它收到一个消息。
• Java
你可以在 examples 目录下构建并运行客户端。假如你还没有构建客户端,可以使用如下命令:
`
$ ../gradlew -PskipCodegen=true installDist
`
然后运行客户端:
`
$ ./build/install/grpc-examples/bin/hello-world-client
`
• C++
> cd GreeterServer/bin/Debug
> GreeterServer.exe
剩余119页未读,继续阅读
OpenIrving
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功