Хорошо, давайте посмотрим на этот фреймворк.

GRPC — это RPC-фреймворк.
Вот и все :)

Буфер протокола

Хорошо, классная функция — это буфер протокола, независимый язык, используемый для сообщений.
Установите модель с помощью protobuf и поделитесь ею со всеми своими командами без каких-либо ограничений по языку. Как есть, все могут общаться с одной и той же (правильной) базой, независимо от технологии!

Буфер протокола — модель
Пример для article.proto

синтаксис = «proto3»;
пакет proto;

message Article {
int32 id = 1;
string title = 2;
string category = 3;
string description = 4;
Photo photo = 5;
}

сообщение Фото {
string mainUrl = 1;
повторяющиеся строки urls = 2;
}

Ок, круто, а теперь?
С моделью никто не работает, только с методами. Модели являются параметрами (вход/выход).

Буфер протокола — Service
Образец для service.proto

синтаксис = «proto3»;
option java_multiple_files = true;
пакет proto;

service ArticleService {
rpc GetArticle(ArticleQuery) возвращает (Статья) {}
}

сообщение ArticleQuery {
int32 id = 1;
}

message Article {
int32 id = 1;
string title = 2;
string category = 3;
string description = 4;
Photo photo = 5;
}

сообщение Фото {
string mainUrl = 1;
повторяющиеся строки urls = 2;
}

Хорошо, круто, но называть плоский файл кажется немного бесполезным, не так ли?
Давайте сконвертируем его во что-нибудь другое!

Буфер протокола для чего-то еще

Командная строка
protoc -I ./ ./service.proto –go_out=plugins=grpc:./

Вот у нас будет красивый (сарказм) сервис.pb.go, с клиентским и серверным кодом, на GoLang, с методами. Легкий !