Google 刚刚开源了grpc, 一个基于HTTP2 和 Protobuf 的高性能、开源、通用的RPC框架。Protobuf 本身虽然提供了RPC 的定义语法,但是一直以来,Google 只开源了Protobuf 序列化反序列化的代码,而没有开源RPC 的实现,于是存在着众多良莠不齐的第三方RPC 实现,不过我在项目中采用WCF搭配Protobuf是一个很不错的RPC实现,Google这个框架是是基于HTTP2的,这是他有特色的地方,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
从实现和特性看来,grpc 更多的是考虑移动场景情况下客户端和服务端的通信,正如其自称的「general RPC framework that puts mobile and HTTP/2 first」。HTTP2 本身提供了连接多路复用、Body 和 Header 压缩等机制,grpc 基于此可以提供比较高效的实现。目前Firefox、Chrome、Safari、Opera、iOS版Safari、Android版Chrome、Windows 8上的IE 11都已经支持HTTP/2,Windows 10预览版自带的浏览器也支持它。Apache、Windows 10上的IIS和Nginx都已经实现了SPDY 3.1或4(这就是HTTP/2),剩下的工作就是网站管理员们去升级服务器软件了。
grpc 所使用的依赖都比较新,如protbuf 需要3.0 版本, c++ 使用了c++11, Java 实现中的netty 需要5.0 版本, HTTP2 也是刚刚定稿。现阶段官方支持C++、JAVA、Python等三种编程语言,并以c 共享库的方式来支持Node.js, Python, Ruby, Objective-C, PHP 和 C# 语言 (由此看来,c++, Java 和golang 在Google 有着一等公民的地位)。其中Java 语言的实现亦可以用于Android 客户端,Objective-C 的实现主要针对IOS 客户端。
重点看了一下C# 的实现(https://github.com/grpc/grpc/tree/master/src/csharp ),目前代码只能在Mono下运行,主要是windows下的GRPC C core库的P/Invoke包装还没有完成,这里也可以看出Google的主要开发环境是Linux,对Mono的支持还不错,这点对同样是互联网公司国内同行很有借鉴意义。
http://www.cnblogs.com/shanyou/p/grpc.html
相关推荐
[libprotobuf ERROR external/com_google_protobuf/src/google/protobuf/descriptor_database.cc:393] Invalid file descriptor data passed to EncodedDescriptorDatabase::Add(). [libprotobuf FATAL external/...
获取protobuf $ curl -v http://localhost:8080/person > GET /person HTTP/1.1 > User-Agent: curl/7.30.0 > Host: localhost:8080 > Accept: * / * > < HTTP/1.1 200 OK < Server: Apache-Coyote/1.1 < ...
赠送jar包:grpc-protobuf-1.24.0.jar; 赠送原API文档:grpc-protobuf-1.24.0-javadoc.jar; 赠送源代码:grpc-protobuf-1.24.0-sources.jar; 赠送Maven依赖信息文件:grpc-protobuf-1.24.0.pom; 包含翻译后的API...
赠送jar包:grpc-protobuf-1.24.0.jar; 赠送原API文档:grpc-protobuf-1.24.0-javadoc.jar; 赠送源代码:grpc-protobuf-1.24.0-sources.jar; 赠送Maven依赖信息文件:grpc-protobuf-1.24.0.pom; 包含翻译后的API...
编译protobuf的 .pb.go文件时报错,如 undefined: grpc.SupportPackageIsVersion6 或 undefined: grpc.ClientConnInterface 和这个贴子的表现一样,https://github.com/grpc/grpc-go/issues/3347 解决办法 方法1:...
基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现...
protobuf-net.Grpc使用本机Grpc.Core API或完全托管的Grpc.Net.Client / Grpc.AspNetCore.Server API通过protobuf-net.Grpc添加了代码优先的服务支持。 它应该适用于所有可以远程生成某些内容的.NET语言,例如常规...
#include <google/protobuf/stubs/common.h> namespace google { namespace protobuf { // Defined in this file. class Service; class RpcController; class RpcChannel; // Defined in other files. class ...
初识gRPC还是一位做JAVA的同事在项目中用到了它,为了C#的客户端程序和java的服务器程序进行通信和数据交换,当时还是对方编译成C#,我直接调用。 后来,自己下来做了C#版本gRPC编写,搜了很多资料,但许多都是从...
赠送jar包:protobuf-java-3.11.4.jar; 赠送原API文档:protobuf-java-3.11.4-javadoc.jar; 赠送源代码:protobuf-java-3.11.4-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.11.4.pom; 包含翻译后的API...
(2)安装: make make install (3)配置环境变量: sudo vi .bash_profile (4)添加配置文件: export PROTOBUF=/Users/XXX/protobuf export PATH=$PROTOBUF/bin:$PATH (5)测试: protoc --version
protobuf-rpc是一个基于的远程方法调用(RPC))实现,服务器端当前仅支持Java(JDK 1.7及以上),客户端支持Objective-C(cocoa/iOS)和Java(J2SE/Android)。 Why protobuf-rpc? 对于纯的基于Windows或者Linux的服务器来...
lab2-grpc-poll 这是 CMPE273 的 GRPC lab2 如何运行: 登录 EC2 实例$ ssh sjsu $ cd protobuf/java/grpc-java-v1 $ ./gradlew 安装$ ./gradlew :grpc-examples:pollServer 在单独的终端$ cd protobuf/java/grpc-...
它包括libprotobuf-c一个纯粹的C库实现的Protobuf编码和解码,以及protoc-c一个码产生器,其将协定缓冲.proto基于所述原始文件到C描述符代码, protoc 。 protobuf-c以前包括RPC实现; 该代码已拆分到项目中。 ...
聊天基于gRPC和Protobuf的CLI聊天要求JRE> = 1.7 安装了 已安装如何建造解决Maven依赖$ mvn dependency:copy-dependencies使用maven mvn构建jar $ mvn package怎么跑从target文件夹中生成的jar运行ChatServer $ java...
grpcbin httpbin喜欢gRPC链接伺服器不安全的gRPC(通过HTTP,不带TLS):grpc://grpcb.in:9000 安全的gRPC(使用TLS加密):grpc://grpcb.in:443和grpc://grpcb.in:9001 网络服务器: : 服务 例子多种语言: :...
grpc编译好的二进制Windows 32位的程序,开发的时候直接使用,不用再编译了,省去编译的...grpc_print_google_default_creds_token.exe grpc_python_plugin.exe grpc_ruby_plugin.exe grpc_verify_jwt.exe protoc.exe
适用qt5.9 win 环境下 protobuf 3.16 源码加已编译的静态库
https://github.com/google/protobuf https://github.com/google/protobuf protobuf安装包
ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,...protobuf-java-3.2.0.jar包 太难找了,只能是自己发布一个jar包 特此分享出来