Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
13 KiB
199 lines
13 KiB
# Third-Party Add-ons for Protocol Buffers |
|
|
|
This page lists code related to Protocol Buffers which is developed and maintained by third parties. You may find this code useful, but note that **these projects are not affiliated with or endorsed by Google (unless explicitly marked)**; try them at your own risk. Also note that many projects here are in the early stages of development and not production-ready. |
|
|
|
If you have a project that should be listed here, please |
|
[send us a pull request](https://github.com/protocolbuffers/protobuf/pulls) to update this page. |
|
|
|
## Programming Languages |
|
|
|
These are projects we know about implementing Protocol Buffers for other |
|
programming languages: * Action Script: |
|
https://code.google.com/p/protobuf-actionscript3/ * Action Script: |
|
https://code.google.com/p/protoc-gen-as3/ * Action Script: |
|
https://github.com/matrix3d/JProtoc * Action Script: |
|
https://github.com/zhongfq/protobuf-as3/ * Ada: |
|
https://github.com/reznikmm/protobuf * C: |
|
https://github.com/protobuf-c/protobuf-c * C: https://koti.kapsi.fi/jpa/nanopb/ |
|
* C: https://github.com/cloudwu/pbc/ * C: https://github.com/haberman/upb/wiki * |
|
C: https://github.com/squidfunk/protobluff * C: |
|
https://github.com/eerimoq/pbtools * C++: |
|
https://github.com/protocolbuffers/protobuf (Google-official implementation) * |
|
C++: https://github.com/yksten/struct2x * C++: https://EmbeddedProto.com * |
|
C/C++: http://spbc.sf.net/ * C#: https://code.google.com/p/protobuf-csharp-port |
|
* C#: https://silentorbit.com/protobuf/ * C#/.NET/WCF/VB: |
|
https://code.google.com/p/protobuf-net/ * Clojure: |
|
http://github.com/ninjudd/clojure-protobuf * Clojure: |
|
https://github.com/clojusc/protobuf * Clojure: https://protojure.readthedocs.io |
|
* Common Lisp: http://github.com/brown/protobuf * Common Lisp: |
|
http://github.com/qitab/cl-protobuf * D: https://github.com/dcarp/protobuf-d * |
|
D: https://github.com/msoucy/dproto * D: |
|
https://github.com/opticron/ProtocolBuffer * Dart: |
|
https://github.com/dart-lang/dart-protobuf (runtime) |
|
https://github.com/dart-lang/dart-protoc-plugin (code generator) * Delphi: |
|
http://sourceforge.net/projects/protobuf-delphi/ * Delphi: |
|
http://fundementals.sourceforge.net/dl.html * Elixir: |
|
https://github.com/jeremyong/exprotoc * Elixir: |
|
https://github.com/tony612/protobuf-elixir * Elixir: |
|
https://github.com/ahamez/protox * Elm: |
|
https://github.com/tiziano88/elm-protobuf * Erlang: |
|
https://github.com/tomas-abrahamsson/gpb * Erlang: http://piqi.org/ * Erlang: |
|
https://github.com/basho/erlang_protobuffs (no longer maintained, use gpb |
|
instead) * Hacklang/HHVM: https://github.com/y3llowcake/proto-hack * GDScript: |
|
https://github.com/oniksan/godobuf (Godot v3 engine plugin) * Go: |
|
https://github.com/golang/protobuf (Google-official implementation) * Go: |
|
https://github.com/akunspy/gopbuf * Go: https://github.com/gogo/protobuf * |
|
GopherJS: https://github.com/johanbrandhorst/protobuf * Haskell: |
|
https://hackage.haskell.org/package/hprotoc * Haskell: |
|
https://github.com/google/proto-lens (Google-unofficial implementation) * |
|
Haskell: https://github.com/awakesecurity/proto3-suite (code generator) |
|
https://github.com/awakesecurity/proto3-wire (binary serializer/deserializer) * |
|
Haxe: https://github.com/Atry/protoc-gen-haxe * Java: |
|
https://github.com/protocolbuffers/protobuf (Google-official implementation) * |
|
Java/Android: https://github.com/square/wire * Java: |
|
https://github.com/HebiRobotics/QuickBuffers/ * Java ME: |
|
https://code.google.com/p/protobuf-javame/ * Java ME: |
|
http://swingme.sourceforge.net/encode.shtml * Javascript: |
|
https://code.google.com/p/protobuf-js/ * Javascript: |
|
http://github.com/sirikata/protojs * Javascript: |
|
https://github.com/dcodeIO/ProtoBuf.js * Javascript: |
|
https://code.google.com/p/protobuf-for-node/ * Javascript: |
|
https://code.google.com/p/protostuff/ * Javascript: |
|
https://github.com/seishun/node-protoc-plugin (Node.js port of plugin.h) * |
|
Javascript: https://github.com/seishun/node-protoc-gen-javascript (Node.js port |
|
of the Google-official implementation) * Javascript: |
|
https://github.com/ButterCam/sisyphus-js * Julia: |
|
https://github.com/tanmaykm/ProtoBuf.jl * Kotlin: |
|
https://github.com/marcoferrer/kroto-plus * Kotlin: |
|
https://github.com/Kotlin/kotlinx.serialization * Kotlin: |
|
https://github.com/ButterCam/sisyphus * Kotlin: |
|
https://github.com/open-toast/protokt * Kotlin Multiplatform: |
|
https://github.com/streem/pbandk * Lua: |
|
https://code.google.com/p/protoc-gen-lua/ * Lua: |
|
http://github.com/indygreg/lua-protobuf * Lua: |
|
https://github.com/Neopallium/lua-pb * Matlab: |
|
https://code.google.com/p/protobuf-matlab/ * Mercury: |
|
https://code.google.com/p/protobuf-mercury/ * Objective C: |
|
https://code.google.com/p/protobuf-objc/ * Objective C: |
|
https://github.com/alexeyxo/protobuf-objc * OCaml: http://piqi.org/ * Perl: |
|
http://groups.google.com/group/protobuf-perl * Perl: |
|
https://metacpan.org/pod/Google::ProtocolBuffers * Perl: |
|
https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic * Perl/XS: |
|
https://code.google.com/p/protobuf-perlxs/ * PHP: |
|
https://code.google.com/p/pb4php/ * PHP: |
|
https://github.com/allegro/php-protobuf/ * PHP: |
|
https://github.com/chobie/php-protocolbuffers * Prolog: |
|
http://www.swi-prolog.org/pldoc/package/protobufs.html * Purescript: |
|
https://github.com/xc-jp/purescript-protobuf * Python: |
|
https://github.com/protocolbuffers/protobuf (Google-official implementation) * |
|
Python: https://github.com/eigenein/protobuf * Python: |
|
https://github.com/danielgtaylor/python-betterproto * R: |
|
http://cran.r-project.org/package=RProtoBuf * Ruby: |
|
https://code.google.com/p/ruby-protobuf/ * Ruby: |
|
http://github.com/mozy/ruby-protocol-buffers * Ruby: |
|
https://github.com/bmizerany/beefcake/tree/master/lib/beefcake * Ruby: |
|
https://github.com/localshred/protobuf * Rust: https://github.com/tokio-rs/prost |
|
* Rust: https://github.com/stepancheg/rust-protobuf/ * Rust: |
|
https://github.com/tafia/quick-protobuf * Scala: |
|
http://github.com/jeffplaisance/scala-protobuf * Scala: |
|
https://code.google.com/p/protobuf-scala * Scala: |
|
https://github.com/SandroGrzicic/ScalaBuff * Scala: https://scalapb.github.io * |
|
Solidity: https://github.com/celer-network/pb3-gen-sol * Swift: |
|
https://github.com/alexeyxo/protobuf-swift * Swift: |
|
https://github.com/apple/swift-protobuf/ * Typescript: |
|
https://github.com/thesayyn/protoc-gen-ts * Typescript: |
|
https://github.com/pbkit/pbkit * Vala: https://launchpad.net/protobuf-vala * |
|
Visual Basic: https://code.google.com/p/protobuf-net/ |
|
|
|
## RPC Implementations |
|
|
|
GRPC (http://www.grpc.io/) is Google's RPC implementation for Protocol Buffers. There are other third-party RPC implementations as well. Some of these actually work with Protocol Buffers service definitions (defined using the `service` keyword in `.proto` files) while others just use Protocol Buffers message objects. |
|
|
|
* https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Google-official implementation) |
|
* https://zeroc.com/products/ice (Multiple languages) |
|
* https://github.com/protobuf-net/protobuf-net (C#/.NET/WCF/VB) |
|
* http://www.deltavsoft.com/doc/_external_serialization.html#Protobufs (C++) |
|
* https://protojure.github.io (Clojure) |
|
* https://code.google.com/p/protobuf-rpc-pro/ (Java) |
|
* https://github.com/baidu/sofa-pbrpc (C++) |
|
* https://github.com/madhon/protobuf-csharp-rpc (C#) |
|
* https://github.com/madwyn/libpbrpc (C++) |
|
* https://github.com/SeriousMa/grpc-protobuf-validation (Java) |
|
* https://github.com/elixir-grpc/grpc (Elixir) |
|
* https://github.com/johanbrandhorst/protobuf (GopherJS) |
|
* https://github.com/awakesecurity/gRPC-haskell (Haskell) |
|
* https://github.com/Yeolar/raster (C++) |
|
* https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser) |
|
* https://github.com/pbkit/npm-packages/blob/main/frpc-test/src/index.spec.ts (TypeScript Node.js/Browser) |
|
* https://github.com/ppissias/xsrpcj (Java) |
|
* https://github.com/twitchtv/twirp (Multiple languages) |
|
|
|
Inactive: |
|
|
|
* https://launchpad.net/txprotobuf/ (Python) |
|
* https://github.com/modeswitch/protobuf-rpc (Python) |
|
* https://github.com/sdeo/protobuf-socket-rpc (Java, Python) |
|
* https://code.google.com/p/proto-streamer/ (Java) |
|
* https://code.google.com/p/server1/ (C++) |
|
* https://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server) |
|
* https://code.google.com/p/casocklib/ (C++) |
|
* https://code.google.com/p/cxf-protobuf/ (Java) |
|
* https://code.google.com/p/protobuf-remote/ (C++/C#) |
|
* https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET) |
|
* https://github.com/robbinfan/claire/tree/master/protorpc (C++) |
|
* https://github.com/ebencheung/arab (C++) |
|
* https://code.google.com/p/protobuf-csharp-rpc/ (C#) |
|
* https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ) |
|
* https://github.com/w359405949/libmaid (C++, Python) |
|
|
|
## Other Utilities |
|
|
|
There are miscellaneous other things you may find useful as a Protocol Buffers developer. |
|
|
|
* [Bazel Build](https://bazel.build) |
|
* [rules_closure](https://github.com/bazelbuild/rules_closure) `js-closure` |
|
* [rules_go](https://github.com/bazelbuild/rules_go) `go` |
|
* [rules_protobuf](https://github.com/pubref/rules_protobuf) `java` `c++` `c#` `go` `js-closure` `js-node` `python` `ruby` |
|
* [NetBeans IDE plugin](https://code.google.com/p/protobuf-netbeans-plugin/) |
|
* [Wireshark/Ethereal packet sniffer plugin](https://code.google.com/p/protobuf-wireshark/) |
|
* [Alternate encodings (JSON, XML, HTML) for Java protobufs](https://code.google.com/p/protobuf-java-format/) |
|
* [Another JSON encoder/decoder for Java](https://github.com/sijuv/protobuf-codec) |
|
* [Editor for serialized protobufs](https://code.google.com/p/protobufeditor/) |
|
* [IntelliJ IDEA plugin](http://github.com/jvolkman/intellij-protobuf-editor) |
|
* [IntelliJ Protobuf Plugin](https://github.com/devkanro/intellij-protobuf-plugin) |
|
* [TextMate syntax highlighting](http://github.com/michaeledgar/protobuf-tmbundle) |
|
* [Oracle PL SQL plugin](https://code.google.com/p/protocol-buffer-plsql/) |
|
* [Eclipse editor for protobuf (from Google)](https://code.google.com/p/protobuf-dt/) |
|
* [C++ Builder compatible protobuf](https://github.com/saadware/protobuf-cppbuilder) |
|
* Maven Protobuf Compiler Plugin |
|
* By xolstice.org ([Documentation](https://www.xolstice.org/protobuf-maven-plugin/)) ([Source](https://github.com/xolstice/protobuf-maven-plugin/)) [![Maven Central](https://img.shields.io/maven-central/v/org.xolstice.maven.plugins/protobuf-maven-plugin.svg)](https://repo1.maven.org/maven2/org/xolstice/maven/plugins/protobuf-maven-plugin/) |
|
* https://code.google.com/p/maven-protoc-plugin/ |
|
* https://github.com/os72/protoc-jar-maven-plugin |
|
* [Documentation generator plugin (Markdown/HTML/DocBook/...)](https://github.com/pseudomuto/protoc-gen-doc) |
|
* [DocBook generator for .proto files](https://code.google.com/p/protoc-gen-docbook/) |
|
* [Protobuf for nginx module](https://github.com/dbcode/protobuf-nginx/) |
|
* [RSpec matchers and Cucumber step defs for testing Protocol Buffers](https://github.com/connamara/protobuf_spec) |
|
* [Sbt plugin for Protocol Buffers](https://github.com/Atry/sbt-cppp) |
|
* [Protobuf Plugin for Gradle](https://github.com/google/protobuf-gradle-plugin) |
|
* [Multi-platform executable JAR and Java API for protoc](https://github.com/os72/protoc-jar) |
|
* [Python scripts to convert between Protocol Buffers and JSON](https://github.com/NextTuesday/py-pb-converters) |
|
* [Visual Studio Language Service support for Protocol Buffers](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5) |
|
* [Visual Studio Code Support for Protocol Buffers](https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3) |
|
* [C++ library for serialization/de-serialization between Protocol Buffers and JSON.](https://github.com/yinqiwen/pbjson) |
|
* [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser and Builder.](https://github.com/protobufel/protobuf-el) |
|
* [Notepad++ Syntax Highlighting for .proto files](https://github.com/chai2010/notepadplus-protobuf) |
|
* [Linter for .proto files](https://github.com/ckaznocha/protoc-gen-lint) |
|
* [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java)](https://github.com/os72/protobuf-dynamic) |
|
* [Make protoc plugins in NodeJS](https://github.com/konsumer/node-protoc-plugin) |
|
* [ProfaneDB - A Protocol Buffers database](https://profanedb.gitlab.io) |
|
* [Protocol Buffer property-based testing utility and example message generator (Python / Hypothesis)](https://github.com/CurataEng/hypothesis-protobuf) |
|
* [Protolock - CLI utility to prevent backward-incompatible changes to .proto files](https://github.com/nilslice/protolock) |
|
* [Optional GRPC - GRPC for testable microservices (Python)](https://github.com/mattpaletta/optional-grpc.git) |
|
* [Protobuf Parser - Yet another Go package which parses a Protocol Buffer file (proto2+proto3)](https://github.com/yoheimuta/go-protoparser) |
|
* [Protolint - A tool to enforce Protocol Buffer style and conventions.](https://github.com/yoheimuta/protolint) |
|
* [vscode-protolint: A protobuf linter for visual studio code](https://github.com/plexsystems/vscode-protolint) |
|
* [intellij-protolint: A protobuf linter for JetBrains IDEs](https://github.com/yoheimuta/intellij-protolint) |
|
* [vim-protolint: A protobuf linter for Vim](https://github.com/yoheimuta/vim-protolint) |
|
* [super-linter: Protocol Buffer lint as GitHub Action](https://github.com/github/super-linter) |
|
* [protoc-gen-fieldmask - A plugin to generate static type fieldmask paths](https://github.com/idodod/protoc-gen-fieldmask) |
|
* [protoc-gen-bq-schema - A protoc plugin to generate BigQuery schema files](https://github.com/GoogleCloudPlatform/protoc-gen-bq-schema)
|
|
|