Pull to refresh

Comments 7

Нельзя пропустить обязательные поля или использовать поля другого типа.

враньё. я могу не заполнять поля в запросе. и это будет корректно с т.з. proto. а вот null выставить явно нельзя. только тут про это ни слова.

Если в приметив передать null, то это приведёт к ошибке, но есть wrappers.proto, которые допускает null, так как по факту является обёрткой над на примитивами и в c# генерируется в nullabel

Опять бесполезная реклама, может хватит спамить?

Protobuf имеет возможность заполнять не все поля. В версии 2 поля можно было помечать optional required в зависимости от требований. Более того это расширяемый формат, что означает, на более старом клиенте может не быть ещё новых полей и он будет корректен для сервера. Аналогично в обратную сторону, новые поля заполненные клиентом просто не будут отображаться на сервере(будут парситься но не иметь имени.

В версии 3 все поля опциональны, но при этом нет флага, а есть значения по умолчанию (насколько я помню). В версии 2 это было отдельным флагом

Так все же зачем использовать grpc вместо rest? Он так же не зависит от яп и определяет контракт

Если система загружена слабо и потоковых передач не требуется - можно оставаться на REST по принципу "работает - не трожь". В противном случае, gRPC становится логичным выбором, позволяющим повысить производительность и существенно снизить латентность.

Статья пересказывает то, что не только можно прочитать в обзоре gRPC на одноименном сайте, но ещё и повторяет неоднократно опубликованное на Хабре. Я не нашел в ней вообще ничего нового.

Нет сравнительного профилирования gRPC с REST, protobuf с json, потоковой передачи с унарной, "хороших" данных для protobuf (небольших положительных чисел) и "плохих" (строк).

Не рассмотрены проблемы передачи не стандартизированных в protobuf типов данных. Например, decimal. А ведь gRPC позволяет использовать разные классы в разных языках для манипуляции такими типами, как объектами.

Тема optional вообще не раскрыта. А ведь без его указания в proto3 пропущенное число станет нулем, а вовсе не NULL.

О совместимости версий схем сказано только вскользь, тогда как в иерархических сообщениях подходы к обеспечению совместимости не всегда очевидны.

Sign up to leave a comment.