Re[27]: gRPC vs rest
От: Sharov Россия  
Дата: 28.06.22 13:28
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Sharov, Вы писали:


S>>Не очень я этот момент понимаю -- tcp тут и там, запрос\ответ тут и там. В чем разница тогда?


НС>Тут недавно был топик. Обсуждали API управления камерой. RPC style это методы Move, Rotate, Scale. REST style — методы PUT Position, PUT Angle, PUT Scale. Домашнее задание — какие будут эффекты от обрыва связи в первом и втором случае, как от них будем защищаться? Что произойдет если латентность соединения — единицы секунд? Что произойдет если понадобится доступ нескольких клиентов?


1)Что за обсуждение, можно ссыль?

2) С тз бэка едва ли будут различия кроме кодов возврата в случае rest. Т.е. какие могут быть различия, если одно можно выразить через другое, т.е.
rest код эмулировать с помощь rpc, а то и вовсе вызвать соотв. rpc метод, только вернуть соотв. http код? Эффекты от обрыва связи -- сделать повторный запрос с соотв. уникальным
ключем, либо идемпотентность. В чем проблема все это сделать и для rpc? Вот возьмем soap (http post), ну натянем на него семантику put и готово.
На счет латентности -- у нас tcp соединение в обоих случаях, поэтому будет долго идти ответ в обоих случаях.
Это если не касаться инф-ры, которая под http заточена -- кэширование, проксирование и т.п.

3)Вместо того, чтобы попытаться дать ответ на мой вопрос, завалили встречными вопросами да еще дз в придачу. Нехорошо-с.
Кодом людям нужно помогать!
Re[31]: gRPC vs rest
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 28.06.22 14:17
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Serginio1, Вы писали:


НС>>>Отличный пример, демонстрирующий разницу в REST и RPC подходах.

S>>RPC прекрасно создается и на REST.

НС>gRPC ты хотел сказать? Иначе написанное тобой выглядит как бред.

Нет я про написанное тобой про RPC подходы.
gRPC работает по HTTP/2 навряд ли на камере есть настройка.
S>> Не важно, как объектная модель использует транспорт.

НС>Именно это и важно если мы говорим о REST.


S>>А дальше REST, gRPC не суть.


НС>Еще как суть. А ты явно не понимаешь что такое REST и думаешь что это очередной RPC на базе JSON.

REST это HTTP/1 и набор правил.
S>> REST это всего на всего набор правил для HTTP протокола

НС>Это набор архитектурных принципов. По твоей же ссылке:

НС>

НС>REST (от англ. Representational State Transfer — «передача репрезентативного состояния» или «передача „самоописываемого“ состояния») — архитектурный стиль...

И? То же самое можно передавать и по другим правилам, но использовать HTTP/2 и более расширенные возможности.
S>>>>Там небось и поддержки HTTP/2 то нет.
НС>>>Bullshit bingo!
S>> Угу при этом для тех же IoT используются немного другие протоколы

НС>У тебя проблемы с пониманием написанного. REST это архитектурный стиль, а не протоколы.

Угу

В отличие от веб-сервисов (веб-служб) на основе SOAP, не существует «официального» стандарта для RESTful веб-API. Дело в том, что REST является архитектурным стилем, в то время как SOAP является протоколом. Несмотря на то, что REST не является стандартом сам по себе, большинство RESTful-реализаций используют такие стандарты, как HTTP, URL, JSON и, реже, XML.

То есть нет официального стандарта, значит это архитектурный стиль!
Но использует он в основном HTTP/1 отсюда и ограничения и преимущества.
S>> Тот же Swagger и OpenApi как раз и решают проблему OORPC

НС>Нет.

Аргументируй. По сути REST это некие правила поверх HTTP/1
То есть URL, Json сериализация, отсутствие состояния на сервере, кэширование, ну там еще балансировка, ну и еще мелочи и практически все! Все остальное это транспорт HTTP/1
gRPC тоже самое, только другая сериализация и транспорт HTTP/2
и солнце б утром не вставало, когда бы не было меня
Re[32]: gRPC vs rest
От: Ночной Смотрящий Россия  
Дата: 28.06.22 16:25
Оценка:
Здравствуйте, Serginio1, Вы писали:

НС>>gRPC ты хотел сказать? Иначе написанное тобой выглядит как бред.

S> Нет я про написанное тобой про RPC подходы.

Тогда ты написал бред.

S>gRPC работает по HTTP/2


gRPC работает по разным протоколам, в том числе по http 1.1

S> навряд ли на камере есть настройка.




НС>>Это набор архитектурных принципов. По твоей же ссылке:

НС>>

НС>>REST (от англ. Representational State Transfer — «передача репрезентативного состояния» или «передача „самоописываемого“ состояния») — архитектурный стиль...

S> И?

И все.

S> То же самое можно передавать и по другим правилам, но использовать HTTP/2 и более расширенные возможности.


Можно. И?

S> То есть нет официального стандарта,


Нету.

S> значит это архитектурный стиль!


Нет, не значит.

S>>> Тот же Swagger и OpenApi как раз и решают проблему OORPC

НС>>Нет.
S> Аргументируй.

Легко
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[28]: gRPC vs rest
От: Ночной Смотрящий Россия  
Дата: 28.06.22 16:25
Оценка:
Здравствуйте, Sharov, Вы писали:

S>1)Что за обсуждение, можно ссыль?


Лень искать, если честно. В этом же форуме где то было.

S>2) С тз бэка едва ли будут различия кроме кодов возврата в случае rest.


Нет, различия будут и существенные. Примерно такие же как между императивным и декларативным кодом. RPC это про actions, а REST это про state transfer.

S> Т.е. какие могут быть различия, если одно можно выразить через другое, т.е.


Архитектурные, и, как следствие, поведенческие.

S>rest код эмулировать с помощь rpc, а то и вовсе вызвать соотв. rpc метод, только вернуть соотв. http код?


То что одно можно эмулировать через другое не означает эквивалентности. Императивное программирование, к примеру, тоже можно сэмулировать в функциональном языке через монады. Но это не делает императивное программирование идентичным функциональному.

S>3)Вместо того, чтобы попытаться дать ответ на мой вопрос, завалили встречными вопросами да еще дз в придачу. Нехорошо-с.


Я тебе уже неоднократно говорил — ты слишком многого хочешь, как будто я тебе чем то обязан.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[29]: gRPC vs rest
От: Sharov Россия  
Дата: 28.06.22 16:39
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:


S>>2) С тз бэка едва ли будут различия кроме кодов возврата в случае rest.

НС>Нет, различия будут и существенные. Примерно такие же как между императивным и декларативным кодом. RPC это про actions, а REST это про state transfer.

В чем проблема передавать состояние в rpc? В запросе идет объект с желаемым состоянием+id запроса.

S>> Т.е. какие могут быть различия, если одно можно выразить через другое, т.е.

НС>Архитектурные, и, как следствие, поведенческие.

Пример можно? Как по разному будут обработаны обрывы свзяи, латентность?

S>>rest код эмулировать с помощь rpc, а то и вовсе вызвать соотв. rpc метод, только вернуть соотв. http код?

НС>То что одно можно эмулировать через другое не означает эквивалентности. Императивное программирование, к примеру, тоже можно сэмулировать в функциональном языке через монады. Но это не делает императивное программирование идентичным функциональному.

Тут более конкретно -- один и тот же код может работать и там и там. В чем разница тогда?

S>>3)Вместо того, чтобы попытаться дать ответ на мой вопрос, завалили встречными вопросами да еще дз в придачу. Нехорошо-с.

НС>Я тебе уже неоднократно говорил — ты слишком многого хочешь, как будто я тебе чем то обязан.

Ну это не я даю дз вместо ответа на простой вопрос.
Кодом людям нужно помогать!
Re[30]: gRPC vs rest
От: Ночной Смотрящий Россия  
Дата: 28.06.22 17:19
Оценка:
Здравствуйте, Sharov, Вы писали:

S>>>2) С тз бэка едва ли будут различия кроме кодов возврата в случае rest.

НС>>Нет, различия будут и существенные. Примерно такие же как между императивным и декларативным кодом. RPC это про actions, а REST это про state transfer.
S>В чем проблема передавать состояние в rpc?

Тем что это будет уже не RPC.

S>>> Т.е. какие могут быть различия, если одно можно выразить через другое, т.е.

НС>>Архитектурные, и, как следствие, поведенческие.
S>Пример можно?

Пример уже был.

S>Как по разному будут обработаны обрывы свзяи, латентность?


Попробуй все же сам поразмышлять. Ты, к примеру, правильно вспомнил про идемпотентность. REST накладывает такие требования на ряд методов, а вот в RPC стиле никто этим, как правило, не заморачивается. В результате спрева плачем от сбоев, потом придумываем ретраи, потом внезапно оказывается что нужна идемпотентность и мы безим прикручивать велосипед. В то время как REST с самого неачала заставляет об этом думать.
Идея то очень простая. Когда проектировали HTTP, то по всем граблям уже прошли. Поэтому, когда ты проектируешь систему в рамках существующей идеологии, то ты эти грабли автоматично обходишь, да еще получаешь в довесок хорошую совместимость с существующей инфраструктурой. А когда начинаешь велосипеды изобретать, как нам тут бравый Сергинио советует, то готовь крепкий лоб.

НС>>То что одно можно эмулировать через другое не означает эквивалентности. Императивное программирование, к примеру, тоже можно сэмулировать в функциональном языке через монады. Но это не делает императивное программирование идентичным функциональному.

S>Тут более конкретно

И там все так же конкретно. Ситуация ровно та же самая.

S> -- один и тот же код может работать и там и там. В чем разница тогда?


В чем разница между ФП и ИП? Ведь один и тот же ассемблерный код может работать и там и там.

S>Ну это не я даю дз вместо ответа на простой вопрос.


Простой? Это очень объемный вопрос. Краткий ответ я тебе дал. А копать за тебя — уж извини.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[33]: gRPC vs rest
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 28.06.22 17:20
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Serginio1, Вы писали:


НС>>>gRPC ты хотел сказать? Иначе написанное тобой выглядит как бред.

S>> Нет я про написанное тобой про RPC подходы.

НС>Тогда ты написал бред.


S>>gRPC работает по HTTP/2


НС>gRPC работает по разным протоколам, в том числе по http 1.1

Ну это для браузеров. gRPC-WEB https://habr.com/ru/company/microsoft/blog/487548/

Невозможно реализовать спецификацию gRPC HTTP/2 в браузере, потому что нет API браузера с достаточным детальным контролем над HTTP-запросами. gRPC-Web решает эту проблему будучи совместимым с HTTP/1.1 и HTTP/2.

Так, что это другой gRPC, но очень похожий. По сути это прокси
https://docs.microsoft.com/ru-ru/aspnet/core/grpc/browser?view=aspnetcore-6.0

gRPC-Web в ASP.NET Core или Envoy
Существует два способа добавления gRPC-Web в приложение ASP.NET Core.

Поддержка gRPC-Web вместе с gRPC HTTP/2 в ASP.NET Core. Этот параметр использует ПО промежуточного слоя, предоставленное пакетом Grpc.AspNetCore.Web.
Используйте поддержку gRPC-Web в прокси-сервере Envoy, чтобы транслировать gRPC-Web в gRPC HTTP/2. Затем переведенный вызов перенаправляется в приложение ASP.NET Core.
Есть свои плюсы и минусы этого подхода. Если среда приложения уже использует Envoy в качестве прокси-сервера, имеет смысл использовать Envoy и для предоставления поддержки gRPC-Web. Если требуется простое решение для gRPC-Web, для которого требуется только ASP.NET Core, используйте Grpc.AspNetCore.Web.

и солнце б утром не вставало, когда бы не было меня
Re[34]: gRPC vs rest
От: Ночной Смотрящий Россия  
Дата: 28.06.22 17:21
Оценка: -1
Здравствуйте, Serginio1, Вы писали:

НС>>gRPC работает по разным протоколам, в том числе по http 1.1

S> Ну это для браузеров.

Неважно. Важно что ты по прежнему не понимаешь разницу между архитектурными подходами и конкретными реализациями, у тебя в голове традиционно фантастическая каша из обрывков смыслов.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[31]: gRPC vs rest
От: Sharov Россия  
Дата: 28.06.22 17:28
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

S>>В чем проблема передавать состояние в rpc?

НС>Тем что это будет уже не RPC.

А что это тогда будет? rest? Дергаю action, а в качестве аргументов statefull объект с какими-нибудь параметрами. Все тот же rpc.
Кодом людям нужно помогать!
Re[32]: gRPC vs rest
От: Ночной Смотрящий Россия  
Дата: 28.06.22 17:29
Оценка:
Здравствуйте, Sharov, Вы писали:

S>>>В чем проблема передавать состояние в rpc?

НС>>Тем что это будет уже не RPC.
S>А что это тогда будет? rest?

Может и REST, если принципы соблюдены.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[31]: gRPC vs rest
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 28.06.22 19:09
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:



НС>Идея то очень простая. Когда проектировали HTTP, то по всем граблям уже прошли. Поэтому, когда ты проектируешь систему в рамках существующей идеологии, то ты эти грабли автоматично обходишь, да еще получаешь в довесок хорошую совместимость с существующей инфраструктурой. А когда начинаешь велосипеды изобретать, как нам тут бравый Сергинио советует, то готовь крепкий лоб.


Вообще то идемпотентность есть и настраивается
https://github.com/linkerd/linkerd2/issues/3985
https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/DescriptorProtos.MethodOptions.IdempotencyLevel

https://github.com/grpc/grpc-java/issues/1775#issuecomment-323163542
и солнце б утром не вставало, когда бы не было меня
Отредактировано 29.06.2022 8:38 Serginio1 . Предыдущая версия . Еще …
Отредактировано 28.06.2022 19:10 Serginio1 . Предыдущая версия .
Re[32]: gRPC vs rest
От: Ночной Смотрящий Россия  
Дата: 29.06.22 08:07
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Вообще то идемпотентность есть и настраивается


Ничего не понял о чем ты и какое это имеет отношение к обсуждению.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[33]: gRPC vs rest
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.22 08:17
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Serginio1, Вы писали:


S>>Вообще то идемпотентность есть и настраивается


НС>Ничего не понял о чем ты и какое это имеет отношение к обсуждению.

О том, что как ты утвердаешь в gRPC нет idempotency
и солнце б утром не вставало, когда бы не было меня
Re[34]: gRPC vs rest
От: Ночной Смотрящий Россия  
Дата: 29.06.22 08:52
Оценка:
Здравствуйте, Serginio1, Вы писали:

НС>>Ничего не понял о чем ты и какое это имеет отношение к обсуждению.

S> О том, что как ты утвердаешь в gRPC нет idempotency

Ты совсем уже обнаглел? Это ты тут заявил, что там нет идемпотентности, да еще и спрашивал почему я фейспалмы рисую в ответ на подобное. А теперь заявляешь что это я подобную чушь утверждал.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[35]: gRPC vs rest
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.06.22 09:28
Оценка: -1 :)
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Serginio1, Вы писали:


НС>>>Ничего не понял о чем ты и какое это имеет отношение к обсуждению.

S>> О том, что как ты утвердаешь в gRPC нет idempotency

НС>Ты совсем уже обнаглел? Это ты тут заявил, что там нет идемпотентности, да еще и спрашивал почему я фейспалмы рисую в ответ на подобное. А теперь заявляешь что это я подобную чушь утверждал.


Угу. http://rsdn.org/forum/flame.comp/8302920.1
Автор: Ночной Смотрящий
Дата: 26.06.22

НС>>В чем тио больше, в чем то меньше
S>А в чем меньше?

В поддержке нативных для HTTP понятий. Что там насчет идемпотентности, кеширования, поддержки range? Изобретаем велосипед по новой, оставляя сетевую инфраструктуру не у дел?


То есть ты утверждал, что в gRPC меньше чем в REST. Или предполагал, что нужно строить велосипед?
На самом деле HTTP/2 тот же наследник HTTP/1 и там так же можно организовать кэширование
и солнце б утром не вставало, когда бы не было меня
Re[13]: язык (source of truth) будет язык схемы для этого JSON
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.06.22 13:47
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

S>>Да и сериализация в Json проигрывает тому же Protobuf


НС>Чем проигрывает? И какая связь protobuf с упомянутым чуть ранее xml?


В перформансе. С т.з. передачи данных, json, xml, protobuf, итд это сиблинги.
Re: Какой язык стоит выбрать для написания микросервисов
От: Шольцевская Колбаса Россия  
Дата: 27.07.22 11:51
Оценка:
Здравствуйте, tnikolai, Вы писали:

T>Go, java, c# ?


У нас всё только на C/С++.
СЛАВА РФ! СЛАВА ПУТИНУ, моему любимому царю и вождю великому! Смотрю только Соловьева, Симонян, Скабееву, МО РФ.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.