Enable cross-language function-like data exchange between servers and clients
Even when the server and client are written in different languages, you can exchange data as if calling a function within the same program. gRPC is a framework for this type of remote procedure call, handling complex network communication transparently. This allows developers to focus on application logic without worrying about network details.
Shared C++ Core and Multi-Language Support
This repository is structured with implementations for multiple languages built on top of a shared core library written in C++. Libraries for C++, Python, Ruby, PHP, C#, and Objective-C are included in this repository, while Java, Go, Node.js, and Dart are managed in separate repositories. Since the development stage of each language's library may differ, it is recommended to check the latest status and documentation for the language you intend to use. All implementations are based on the same C++ core, so consistent behavior across languages can be expected.
Installation by Language
gRPC can be easily installed through the standard package manager for each language.
- Python Install the
grpciopackage using thepippackage manager. - Node.js Install the
@grpc/grpc-jspackage usingnpm. - Go Fetch the
google.golang.org/grpcmodule using thego getcommand. - C#/.NET Add the
Grpc.Net.ClientandGrpc.AspNetCore.Serverpackages from NuGet.
Contributing and Troubleshooting
gRPC is an open-source project that welcomes contributions. The process for building the source code, running tests, and submitting changes is detailed in the 'How to contribute' document. For details on C++ builds, refer to the 'Building from source' document. If you encounter issues during use, check the Troubleshooting guide. Additionally, performance metrics for the latest builds on the master branch are available as graphs updated daily on the Performance dashboard.
Pre-Usage Checks
Although this repository is based on a C++ core, the maturity of each language library may vary. Since a specific language's library may still be under development or offer limited functionality, you must review the documentation and example code for that language before applying it to your project. If your system has high performance requirements, refer to the performance dashboard for the latest builds to determine if it suits your use case.