gRPC has many advantages: the technology is easy to apply, as it uses a simple, easy-to-learn IDL when creating .proto files . With it, even outdated programs can be extended with a powerful gRPC interface, so that they can transmit large files significantly faster.
gRPC has been tested multiple times and is easily scalable, so it can also be applied in more complex and extensive communications, eg. For example, in client-server structures interconnected at a global level. Here, HTTP / 2 not only increases efficiency thanks to multiplexing and bidirectional streaming , but also allows headers to be compressed to reduce the data volume of requests and responses on the network significantly.
The highly standardized layered structure of the gRPC framework allows for reduced programming effort. In this way, developers can focus their full attention on applying the methods. If adaptations are required, programmers and system developers can take advantage of free access to the source code.
In addition, Protocol Buffers and Protobuf compilers allow communication that transcends borders: different operating systems, disparate components of client-server frameworks, and different programming languages are no longer a problem. Thus, software written in C can communicate with Java software, for example. Today, Protobuf compilers are available for a large number of languages, eg. Eg for C #, C ++, Go, Objective-C, Java, Python, Node.js, Android Java, Swift, Ruby and PHP.
The flexibility of gRPC represents another advantage. It can also be used for the exchange of data from microservices or mobile applications that share their data with servers. More advantages: the protocol allows the application of modern security technologies. gRPC has built-in authentication and encourages the use of SSL / TLS for authentication and encryption of the exchange.
On the other side of the coin, testing of the gRPC interfaces currently still has a lot of room for improvement. Protobuf encoded gRPC messages are not readable without technical assistance. Therefore, when analyzing data traffic and, above all, in troubleshooting errors ( debugging ), additional instances must be used to transmit the code in a readable way to detect errors. The interconnection of distributed client-server structures implies further disadvantages. When connecting computers over long distances, gRPC is much more exposed than a local system . It depends on a stable and powerful network and that the network, the data traffic, the transmission protocols and the client and server do not become easy prey for hackers . Another downside is that gRPC doesn't support multicasting.