Работал ли с gRPC

«Работал ли с gRPC» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал с gRPC. Это высокопроизводительный RPC-фреймворк от Google, использующий Protocol Buffers (protobuf) для сериализации данных. В Android интегрируется через зависимости grpc-android и grpc-okhttp.

Пример:

  1. Создаем .proto файл:
syntax = "proto3";
service MyService {
  rpc GetData (Request) returns (Response);
}
message Request { string query = 1; }
message Response { string result = 1; }
  1. Генерируем код через protobuf-gradle-plugin.

  2. Используем в коде:

val channel = ManagedChannelBuilder.forAddress("api.example.com", 443).build()
val stub = MyServiceGrpc.newBlockingStub(channel)
val response = stub.getData(Request.newBuilder().setQuery("test").build())

Плюсы:

  • Эффективность (бинарный формат).
  • Поддерка потоков.
    Минусы:
  • Сложнее дебагать (не как JSON).
  • Требует кодогенерации.

Для простых API иногда предпочитаю Retrofit, но для сложных сценариев gRPC отлично подходит.