Про безусловно — не уверен, но был положительный опыт с ТКС и оспариванием платежа по подписке. По дурости привязал личную карту к аккаунту на корпоративную почту. Через полгода после увольнения сервис списал платёж. Препирался в чате минут 30, но платеж отменили.
Ну, тогда встанет вопрос — а надо ли пилить свой редис с бинарями и хай-перфомансом) бизнес логика и сетевые задержки могут сожрать эти оптимизации и не подаваться.
А насчёт http/2 — без него grpc вообще никак, так что по-любому перелезать на него. Мне повезло, у меня есть возможность использовать grpc и на работе, и таки я этому рад)
Так на то и proto-first, как вы его назвали, что proto файлы не генерятся, а пишутся руками. Это вызывает небольшое отторжение, но:
Это только первое время, потом привыкаешь
Следуя заветам дядюшки Боба — помогает охранять границы (контракты).
Вообще говоря, protobuf довольно неплох для описания сообщений, и помогает от простреленной ноги. Не хватает двух вещей (на мой вкус: generic классов и нормального наследования. И если с последним я готов мириться для защиты ног, то без generic бывает очень грустно.
Из плюсов grpc — просмотрите на streaming, это просто космическая штука для передачи IAsyncEnumerable или IObservable.
Ну и сериализация быстрее. Она даже быстрее чем бинарная при помощи BinaryFormatter, где-то в 1,5 раза. В некоторых случаях наверно даже до 10 раз! Я даже думаю затащить кэширование в редисе на использование протобуфов.
Рискну ошибиться из-за неполной информации, но решение с REST и Swagger вокруг него было отвергнуто из-за сложностей затаскивания полноценного сервера в маленький драйвер.
Ну и строгая типизация — это не совсем про REST. Не исключаю, что я не умею его готовить, но плясать от контракта описанного в protobuf приятнее.
public void DoSomething()
{
// Этот метод не может вернуть задачу,
// делегируйте асинхронный код в другой метод
_ = DoSomethingAsync();
}
Серьёзно? Где окажется исключение выброшенное в задаче, которую вернёт DoSomethingAsync?
Оно будет проглочено.
Это очень вредный совет: генерация исключения это серьёзное состояние, которое стоит обработать. «Проглатывание» исключений не дает возможности узнать, что они вообще случались.
В общем и целом async void тоже не best practice, но я знаю два распространенных сценария, когда хотелось бы асинхронщины в void функции:
1. обработчики событий (в т.ч. от UI)
2. get/set с запуском фоновых задач
Ну и тут надо смотреть логику работы: если нужна фоновая обработка задач то есть прекрасный пакет AmbientTasks, который не позволит потерять исключения и отказаться от использования async void, при этом запуская задачи в фоне без ожидания завершения оных. Это безумно удобно как при обработке событий от UI, так и для использования в сеттерах view-model для свойства используемого в двунаправленном binding которое требует некой фоновой асинхронно обработки.
В противном случае, если возврат управления уже несет полезную нагрузку, надо ждать. Или падать, если прилетело исключение.
Заметил, что тачскрин даже с наклеенным защитным стеклом сносно работает даже с обычными авторемонтными тканевыми перчатками. Ну правда про датчик отпечатков пальцев надо забыть, ну ладно. На клавиатуре текст набирать сложно, но открыть приложение с картой лояльности в магазине или прочекать список покупок вполне можно. Надо только палец плотнее прижимать.
Про безусловно — не уверен, но был положительный опыт с ТКС и оспариванием платежа по подписке. По дурости привязал личную карту к аккаунту на корпоративную почту. Через полгода после увольнения сервис списал платёж. Препирался в чате минут 30, но платеж отменили.
Ну, тогда встанет вопрос — а надо ли пилить свой редис с бинарями и хай-перфомансом) бизнес логика и сетевые задержки могут сожрать эти оптимизации и не подаваться.
А насчёт http/2 — без него grpc вообще никак, так что по-любому перелезать на него. Мне повезло, у меня есть возможность использовать grpc и на работе, и таки я этому рад)
Так на то и proto-first, как вы его назвали, что proto файлы не генерятся, а пишутся руками. Это вызывает небольшое отторжение, но:
Вообще говоря, protobuf довольно неплох для описания сообщений, и помогает от простреленной ноги. Не хватает двух вещей (на мой вкус: generic классов и нормального наследования. И если с последним я готов мириться для защиты ног, то без generic бывает очень грустно.
Из плюсов grpc — просмотрите на streaming, это просто космическая штука для передачи IAsyncEnumerable или IObservable.
Ну и сериализация быстрее. Она даже быстрее чем бинарная при помощи BinaryFormatter, где-то в 1,5 раза. В некоторых случаях наверно даже до 10 раз! Я даже думаю затащить кэширование в редисе на использование протобуфов.
Ну и строгая типизация — это не совсем про REST. Не исключаю, что я не умею его готовить, но плясать от контракта описанного в protobuf приятнее.
Как решается вопрос пылевлагозащиты? Виброустойчивость сервы?
Всем спасибо, разобрался сам.
Технически — так и есть. Обе решают задачу перевозки водителя и 3-4 пассажиров по дорогам общего пользования. Остальное — нюансы.
Серьёзно? Где окажется исключение выброшенное в задаче, которую вернёт DoSomethingAsync?
Оно будет проглочено.
Это очень вредный совет: генерация исключения это серьёзное состояние, которое стоит обработать. «Проглатывание» исключений не дает возможности узнать, что они вообще случались.
В общем и целом async void тоже не best practice, но я знаю два распространенных сценария, когда хотелось бы асинхронщины в void функции:
1. обработчики событий (в т.ч. от UI)
2. get/set с запуском фоновых задач
Ну и тут надо смотреть логику работы: если нужна фоновая обработка задач то есть прекрасный пакет AmbientTasks, который не позволит потерять исключения и отказаться от использования async void, при этом запуская задачи в фоне без ожидания завершения оных. Это безумно удобно как при обработке событий от UI, так и для использования в сеттерах view-model для свойства используемого в двунаправленном binding которое требует некой фоновой асинхронно обработки.
В противном случае, если возврат управления уже несет полезную нагрузку, надо ждать. Или падать, если прилетело исключение.
«Стоят два стула...»
«Вечер в хату, часик в радость...»
«Что-то я среди вас одноглазых не вижу...»
Вы из этих, да?
Почему это в хабе .NET?
Ну да, летуны, что называется, «каждый год новые».