All Projects → jhump → Protoreflect

jhump / Protoreflect

Licence: apache-2.0
Reflection (Rich Descriptors) for Go Protocol Buffers

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects
reflection
70 projects

Projects that are alternatives of or similar to Protoreflect

Protoc Gen Struct Transformer
Transformation functions generator for Protocol Buffers.
Stars: ✭ 105 (-83.87%)
Mutual labels:  grpc, protobuf, protocol-buffers
Buf
A new way of working with Protocol Buffers.
Stars: ✭ 3,328 (+411.21%)
Mutual labels:  grpc, protocol-buffers, protobuf
Protodot
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
Stars: ✭ 107 (-83.56%)
Mutual labels:  grpc, protobuf, protocol-buffers
Kroto Plus
gRPC Kotlin Coroutines, Protobuf DSL, Scripting for Protoc
Stars: ✭ 400 (-38.56%)
Mutual labels:  grpc, protobuf, protocol-buffers
agentgo
Hi! Agentgo is a tool for making remote command executions from server to client with golang, protocol buffers (protobuf) and grpc.
Stars: ✭ 15 (-97.7%)
Mutual labels:  protobuf, protocol-buffers, grpc
Protoeasy Go
Simpler usage of protoc. Deprecated.
Stars: ✭ 129 (-80.18%)
Mutual labels:  grpc, protobuf, protocol-buffers
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (-77.42%)
Mutual labels:  grpc, protobuf, protocol-buffers
Go Grpc Examples
This repo contains examples and implementations of different types of GRPC services and APIs using Golang.
Stars: ✭ 180 (-72.35%)
Mutual labels:  grpc, protobuf, protocol-buffers
protoc-plugin
A protoc compiler plugin for Clojure applications
Stars: ✭ 28 (-95.7%)
Mutual labels:  protobuf, protocol-buffers, grpc
Rules protobuf
Bazel rules for building protocol buffers and gRPC services (java, c++, go, ...)
Stars: ✭ 206 (-68.36%)
Mutual labels:  grpc, protobuf, protocol-buffers
Protobuf
[Looking for new ownership] Protocol Buffers for Go with Gadgets
Stars: ✭ 4,998 (+667.74%)
Mutual labels:  grpc, protobuf, protocol-buffers
grpc-chat
Simple Chat Server/Client implemented with gRPC
Stars: ✭ 107 (-83.56%)
Mutual labels:  protobuf, protocol-buffers, grpc
Prototool
Your Swiss Army Knife for Protocol Buffers
Stars: ✭ 4,932 (+657.6%)
Mutual labels:  grpc, protobuf, protocol-buffers
Protoactor Go
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
Stars: ✭ 3,934 (+504.3%)
Mutual labels:  grpc, protobuf
Proto
parser for Google ProtocolBuffers definition
Stars: ✭ 359 (-44.85%)
Mutual labels:  protobuf, protocol-buffers
Grpclib
Pure-Python gRPC implementation for asyncio
Stars: ✭ 615 (-5.53%)
Mutual labels:  grpc, protobuf
Grpc Example
An example of using Go gRPC and tools from the greater gRPC ecosystem together with the GoGo Protobuf Project.
Stars: ✭ 352 (-45.93%)
Mutual labels:  grpc, protobuf
Protolock
Protocol Buffer companion tool. Track your .proto files and prevent changes to messages and services which impact API compatibility.
Stars: ✭ 394 (-39.48%)
Mutual labels:  protobuf, protocol-buffers
Gruf
gRPC Ruby Framework
Stars: ✭ 411 (-36.87%)
Mutual labels:  grpc, protobuf
Spring boot
Spring Boot 使用总结 和 demo。 如果您觉得本代码对您有所帮助,请点击页面右上方"Star"
Stars: ✭ 431 (-33.79%)
Mutual labels:  grpc, protobuf

Protocol Buffer and gRPC Reflection

Build Status Go Report Card

This repo provides reflection APIs for protocol buffers (also known as "protobufs" for short) and gRPC. The core of reflection in protobufs is the descriptor. A descriptor is itself a protobuf message that describes a .proto source file or any element therein. So a collection of descriptors can describe an entire schema of protobuf types, including RPC services.

GoDoc


Descriptors: The Language Model of Protocol Buffers

import "github.com/jhump/protoreflect/desc"

The desc package herein introduces a Descriptor interface and implementations of it that correspond to each of the descriptor types. These new types are effectively smart wrappers around the generated protobuf types that make them much more useful and easier to use.

You can construct descriptors from file descriptor sets (which can be generated by protoc), and you can also load descriptors for messages and services that are linked into the current binary. "What does it mean for messages and services to be linked in?" you may ask. It means your binary imports a package that was generated by protoc. When you generate Go code from your .proto sources, the resulting package has descriptor information embedded in it. The desc package allows you to easily extract those embedded descriptors.

Descriptors can also be acquired directly from .proto source files (using the protoparse sub-package) or by programmatically constructing them (using the builder sub-package).

Read more ≫

import "github.com/jhump/protoreflect/desc/protoparse"

The protoparse package allows for parsing of .proto source files into rich descriptors. Without this package, you must invoke protoc to either generate a file descriptor set file or to generate Go code (which has descriptor information embedded in it). This package allows reading the source directly without having to invoke protoc.

Read more ≫

import "github.com/jhump/protoreflect/desc/protoprint"

The protoprint package allows for printing of descriptors to .proto source files. This is effectively the inverse of the protoparse package. Combined with the builder package, this is a useful tool for programmatically generating protocol buffer sources.

Read more ≫

import "github.com/jhump/protoreflect/desc/builder"

The builder package allows for programmatic construction of rich descriptors. Descriptors can be constructed programmatically by creating trees of descriptor protos and using the desc package to link those into rich descriptors. But constructing a valid tree of descriptor protos is far from trivial.

So this package provides generous API to greatly simplify that task. It also allows for converting rich descriptors into builders, which means you can programmatically modify/tweak existing descriptors.

Read more ≫


Dynamic Messages and Stubs

import "github.com/jhump/protoreflect/dynamic"

The dynamic package provides a dynamic message implementation. It implements proto.Message but is backed by a message descriptor and a map of fields->values, instead of a generated struct. This is useful for acting generically with protocol buffer messages, without having to generate and link in Go code for every kind of message. This is particularly useful for general-purpose tools that need to operate on arbitrary protocol buffer schemas. This is made possible by having the tools load descriptors at runtime.

Read more ≫

import "github.com/jhump/protoreflect/dynamic/grpcdynamic"

There is also sub-package named grpcdynamic, which provides a dynamic stub implementation. The stub can be used to issue RPC methods using method descriptors instead of generated client interfaces.

Read more ≫


gRPC Server Reflection

import "github.com/jhump/protoreflect/grpcreflect"

The grpcreflect package provides an easy-to-use client for the gRPC reflection service, making it much easier to query for and work with the schemas of remote services.

It also provides some helper methods for querying for rich service descriptors for the services registered in a gRPC server.

Read more ≫

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].