Page tree
Skip to end of metadata
Go to start of metadata

What is gRPC ?

gRPC is an open source Remote Procedure Calls framework. As in many RPC systems, gRPC is based around the idea of defining a service and then specifying the methods that can be called remotely with their parameters and return types. On the server side, the server implements this interface and runs a gRPC server to handle client calls. On the client side, the client has a stub (referred to as just a client in some languages) that provides the same methods as the server. that can run in any environment. It can be used with several programming languages. It can connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.

gRPC clients and servers can run and talk to each other in a variety of environments - from servers inside Google to your own desktop - and can be written in many languages.

Supported languages

We have extensions for analyzing gRPC as follows:

What source code is needed by our analyzer?

In order to develop an app which uses gRPC one needs to go through the following steps: 

  • write at least one *.proto file. This file is used to define the name of the services and their methods which will be available for remote procedure calls. 
  • use protoc to generate source code (in a chosen language) containing the client and server. This code is generated based on the *.proto files. 
  • define the services and methods available through gRPC by extending the generated server.
  • calls to these methods are carried out using stubs defined in the generated source code.

Our analyzers rely on the naming convention which is used by gRPC for generating the source code based on the *.proto files. Our analyzers do not need the *.proto file nor the generated source code.

If the generated source code has been modified, analyzers will probably not be able to connect gRPC calls from clients to servers.

  • No labels