gRPC services are defined using Protocol Buffers, Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data. You define service in a .proto file, which is then used to generate client and server code. The .proto file includes the definition of both the service interface and the structure of payload messages. A typical service consists of a message type and a service type. The message type defines the request and response message, while the service type outlines the methods that can be called remotely with their parameters and return types.