Sergei Calabonga
Sergei Calabonga
  • Видео 353
  • Просмотров 619 409
FAQ 56 по программированию
В этом видео:
256. Как распилить монолит? С чего начать? Есть ли у вас опыт "распила" монолита?
257. Как по вашему? Cейчас используется ли в коммерческой разработке Blazor? И надо ли изучать этот фреймворк или уже не актуальная технология?
258. Как лучше хранить файлы картинок для сайта? Где вы храните картинки для своего блога?
259. Как правильно определить количество необходимых модульных тестов и сколько утверждений должен содержать один тест?
Благодарности и помощь каналу принимаются:
www.calabonga.net/site/thanks
Наши видео доступны и на Дзэн:
dzen.ru/calabonga
Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам:
* boosty.to/calabonga
Я использую хостинг Reg.ru
htttps://reg.ru/?rl...
Просмотров: 230

Видео

FAQ 55 по программированию
Просмотров 33628 дней назад
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
FAQ 54 по программированию
Просмотров 282Месяц назад
В этом видео будут озвучены ответы на следующие вопросы: 247. Как вам удается помнить про всякие штуки для разные платформ? Как вы поддерживаете опыт? 248. Стоит ли переходить на OpenTelemetry, не все сборки еще в релизе? 249. Есть какой-нибудь несложный способ наполнить БД фейковыми/тестовыми данными? 250. Что вы используете и когда EF или Dapper. Благодарности и помощь каналу принимаются: www...
FAQ 53 по программированию
Просмотров 266Месяц назад
В этом видео новые вопросы на тему naming conventions, паттерны, архитектура ПО и другие. 243. Как лучше шарить контракты между проектами? 244. Вы используете суффикс Async в названиях методов или нет? 245. Immutable влияет на производительность? На сколько? 246. Расскажите, как вы понимаете паттерн KISS? Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступ...
DB + EF + Repository + UnitOfWork
Просмотров 1,2 тыс.Месяц назад
Покажу, как я использую паттерны Repository и UnitOfWork совместно с EntityFramework Core. А также постараюсь объяснить почему я так делаю. Создадим пару сущностей, "положим" их в БД при этом создадим миграции для EntityFrameworkCore и многое другое. Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и...
REST + API + Response
Просмотров 8442 месяца назад
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
FAQ 52 по программированию
Просмотров 2733 месяца назад
Вопросы в этом видео: 236. Расскажите про модель доступа ABAC разрезе микросервисов? 237. Есть ли смысл использовать автомапперы? Не лучше ли создавать сущности через конструктор/фабричный метод/кастомное расширение для маппинга? (©Максим) 238. Как лучше реализовать ролевую модуль для системы при реализации микросервисов при реализации Api Gateway? (©Сергей) 239. Что порекомендуете для реализац...
FAQ по программированию 51
Просмотров 2763 месяца назад
В этом видео будут озвучены ответы на следующие вопросы: 231. Что лучше выбрать IdentityServer4 или KeyCloak для системы выдачи токенов? 232. Интеграционные тесты для EntityFrameworkCore лучше проводить на на "InMemory"? 233. Как выбрать между RabbitMQ и Kafka, от чего нужно отталкиваться? 234. Зачем нужно добавлять суффикс Async для методов? 235. Как часто вы используете оптимизации с использо...
DevTool 21: Ответы на запросы
Просмотров 2634 месяца назад
Ссылки: www.nuget.org/packages/Calabonga.Results www.nuget.org/packages/OperationResultCore Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
#1 Вопросы и ответы на MAUI. Вступление
Просмотров 6064 месяца назад
Это ознакомительное видео, в котором я расскажу про то, что будет в новой серии видео роликов. Если коротко, то frontend - MAUI, а backend - ASP.NET Web API. Ссылки: www.calabonga.net/blog/post/maui-quiz-tutorial-1 Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным б...
FAQ по программированию 50
Просмотров 3654 месяца назад
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
Коротко по теме картинки для блога
Просмотров 1775 месяцев назад
Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Reg.ru htttps://reg.ru/?rlink=reflink-11163551
FAQ 49 по программированию
Просмотров 3886 месяцев назад
В этом видео будут озвучены ответы на следующие вопросы: 215. Какие паттерны вы используете чаще всего? 216. Микросервисы только на HTTP - это плохо? 217. Есть веб-сервис A, которому нужно взять из базы данных большой объем данных с помощью EF Core и через http POST-запрос отправить в виде JSON сервису B. Вопрос в комментарии. 218. Когда использовать Task, а когда ValueTask? Почему ValueTask до...
Реализация плагинов для ASP.NET Core Web API (2)
Просмотров 5097 месяцев назад
Упражнения на тему - Реализация плагинов Web API на базе ASP.NET Core. Итак, основные принципы работы плагинов: Одно главное приложение (Shell - оболочка) * Умеет находить загружать плагины * Умеет трансформировать UI на основании загруженных данных * Умеет управлять доступом (например, на базе ролевой модели) * Умеет устроить обмен сообщениями между плагинами Много плагинов * Умеет делать «пол...
Фотоальбом на C# (часть 2)
Просмотров 4587 месяцев назад
В прошлом видео я озвучил план реализации. В этом видео покажу, какие материалы я приготовил в качестве "подопытных кроликов" при реализации проекта AlbumManager. Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Re...
Фотоальбом на C# (часть 1)
Просмотров 8167 месяцев назад
Фотоальбом на C# (часть 1)
FAQ 48 по программированию
Просмотров 4098 месяцев назад
FAQ 48 по программированию
FAQ 47 по программированию
Просмотров 4519 месяцев назад
FAQ 47 по программированию
Реализация плагинов для ASP.NET Core Web API
Просмотров 1,3 тыс.10 месяцев назад
Реализация плагинов для ASP.NET Core Web API
Форма обратной связи на Blazor (часть 1)
Просмотров 64911 месяцев назад
Форма обратной связи на Blazor (часть 1)
FAQ 46 по программированию
Просмотров 53111 месяцев назад
FAQ 46 по программированию
Упражнения с OpenTelemetry 1
Просмотров 623Год назад
Упражнения с OpenTelemetry 1
Каталог товаров 2023 (18)
Просмотров 628Год назад
Каталог товаров 2023 (18)
Каталог товаров 2023 (17)
Просмотров 241Год назад
Каталог товаров 2023 (17)
Каталог товаров 2023 (16)
Просмотров 149Год назад
Каталог товаров 2023 (16)
Каталог товаров 2023 (15)
Просмотров 172Год назад
Каталог товаров 2023 (15)
Каталог товаров 2023 (14)
Просмотров 177Год назад
Каталог товаров 2023 (14)
Каталог товаров 2023 (13)
Просмотров 183Год назад
Каталог товаров 2023 (13)
Каталог товаров 2023 (12)
Просмотров 182Год назад
Каталог товаров 2023 (12)
Каталог товаров 2023 (11)
Просмотров 298Год назад
Каталог товаров 2023 (11)

Комментарии

  • @artemignat7764
    @artemignat7764 День назад

    Есть микросервисы корзина и продукты. Чтобы добавить продукт или создать корзину, паблишером должно быть фронтенд приложение, например mvc?

    • @SergeiCalabonga
      @SergeiCalabonga День назад

      Frontend - тоже может быть микросервисом.

    • @artemignat7764
      @artemignat7764 День назад

      @@SergeiCalabonga Ок. Микросервисы Product и Cart. Добавляем продукт в корзину. Это значит Cart паблишер, запрашивает продукт из консьюмера Product. У Product есть ещё консьюмеры на создание и удаление продукта (для своей базы данных). Создаю ещё один микросервис который выполняет эти запросы?

    • @SergeiCalabonga
      @SergeiCalabonga День назад

      @@artemignat7764 интересно, а "паблишер", "консьюмер" - это что за звери? Может всё-таки или до конца по-русски "публикатор" и "потребитель", или до конца по-английски "publisher" и "consumer"? Читать очень сложно, да и не красиво, простите. Англицизмы меня сбивают с толку. :( А если по делу, то.... 1. правила, которыми вы руководствуетесь для создания новых сервисов мне не понятно. 2. Какие обязанности на сервисе Product? Пред положу, что это каталог товаров. 3. Какие обязанности на сервере Cart? Если Product - это каталог товаров. 4. Почему это два разных сервиса? (Вам скучно было с одиним,)

    • @artemignat7764
      @artemignat7764 День назад

      @@SergeiCalabonga Product -сервис каталога товаров. В нём я могу продукт добавлять, удалять, редактировать. Сервис Cart может добавлять продукт, путям обращения к Product и удалять продукт и корзины. На уровне crud запросов, я понимаю как эти сервисы общаются между собой. И понимаю как Cart может получить продукт от Product через MassTransit. Но я не понимаю как мне реализовать три действия: добавление,удаление,редактирование продукта в Product с помощью MassTransit с брокером. Я должен ещё создать микросервис для этого?

    • @artemignat7764
      @artemignat7764 День назад

      @@SergeiCalabonga Product - сервис каталога товаров. Сервис Cart может добавлять и удалять продукт.Он обращается к Product, только для получения продукта через MassTransit.В сервисе Product можно продукт добавлять,удалять,редактировать. Это делается админом через crud запросы к api сервиса Product. То что я описал, считается микросервисной архитектурой или же нужно создавать ещё один микросервис который будет делать эти запросы через MassTransit?

  • @artemignat7764
    @artemignat7764 2 дня назад

    Если я хочу добавить, изменить, удалить пользователя в UserService, кто должен быть продюсером?

    • @SergeiCalabonga
      @SergeiCalabonga День назад

      А почему должен обязательно быть producer? И что он делает?

    • @artemignat7764
      @artemignat7764 День назад

      @@SergeiCalabonga я уже осознал свою ошибку

    • @artemignat7764
      @artemignat7764 День назад

      @@SergeiCalabonga Для таких задач можно использовать crud запросы, к контроллерам UserService.

  • @shananboiara
    @shananboiara 7 дней назад

    Не ну чат жпт гениально решает задачу генерации описания к коммиту, доктайпит очень даже хорошо, документацию по проету пишет, puml рисует, тестики генерит, так шо зря вы это вот так, зря-зря-зря

    • @SergeiCalabonga
      @SergeiCalabonga 7 дней назад

      Для каждого типа задач свой интеллект? Оригинально! Обучить программу выдавать случайные тексты по теме... это не креатив, это больше аналитика. В любом случае посмотрим... может я и не прав.

  • @denpinkman9057
    @denpinkman9057 8 дней назад

    У Вас наверно самый полезный канал для .NET разработчиков. Спасибо за видео!

    • @SergeiCalabonga
      @SergeiCalabonga 8 дней назад

      Спасибо!!! Я тоже так думаю! 😁

  • @Lehis198
    @Lehis198 8 дней назад

    Спасибо за видео. А в своем облаке вы как храните изображения? В виде файлов или в БД?

    • @SergeiCalabonga
      @SergeiCalabonga 8 дней назад

      В виде файлов на удалённом сервере, взаимодействие через API.

    • @Denis778322877
      @Denis778322877 4 дня назад

      ​@@SergeiCalabonga А minio не приходилось использовать?

    • @SergeiCalabonga
      @SergeiCalabonga 4 дня назад

      @@Denis778322877 Приходилось, но только на рабочих проектах. В частном порядке - это дорогое удовольствие.

    • @Denis778322877
      @Denis778322877 4 дня назад

      @@SergeiCalabonga почему дорогое? Он же вроде бесплатный. Я же его только что в докере поднял это же какой сейчас счёт придёт

    • @SergeiCalabonga
      @SergeiCalabonga 4 дня назад

      @@Denis778322877 пока вы его используете "по-детски" - это будет бесплатно, как только что-то серьёзное потребуется туда положить, то welcome min.io/pricing

  • @LonDevOfficial
    @LonDevOfficial 9 дней назад

    WebAssembly 😢 Кажется мне немного не повезло

    • @SergeiCalabonga
      @SergeiCalabonga 9 дней назад

      Не переживайте! Это не последний раз, когда вам не повезло!

  • @svfits1
    @svfits1 10 дней назад

    Даешь видео про интеграционное тестирование! Можно получить из swagger описания какие методы есть. Но их бывает очень много и они однотипные. Если библиотека что бы можно было сгенерировать тесты по описанию swagger для CRUD например?

    • @SergeiCalabonga
      @SergeiCalabonga 9 дней назад

      Swagger - это частный случай. Рекомендую смотреть в сторону OpenAPI. Библиотек уже хватает. А также появляется интеграция даже Visual Studio.

    • @svfits1
      @svfits1 9 дней назад

      @@SergeiCalabonga я имел ввиду создать интеграционные тесты по описанию что бы их руками не писать

  • @artemignat7764
    @artemignat7764 12 дней назад

    Пишу микросервис по автозапчастям. На русскоязычных сайтах я заметил что , путь к ресурсам в URL описаны русскими словами. Пример ".../maslyanye-nasosy-i-detali-k-nim/" В коммерции так можно делать?

    • @SergeiCalabonga
      @SergeiCalabonga 12 дней назад

      Явного запрета на использование конкретных символов в спецификации нет. Теоретически, можно даже кириллицу использовать. Но разве это красиво? Раз это не несет за собой рой проблем?

    • @artemignat7764
      @artemignat7764 12 дней назад

      @@SergeiCalabonga Спасибо. Буду придерживаться стандарту.

    • @SergeiCalabonga
      @SergeiCalabonga 12 дней назад

      @@artemignat7764 Очень правильное решение!

    • @artemignat7764
      @artemignat7764 12 дней назад

      @@SergeiCalabonga Извините. Вопрос не по теме видео. У автозапчасти есть название, артикул и название производителя. Можно их объединить в value object?

    • @SergeiCalabonga
      @SergeiCalabonga 12 дней назад

      @@artemignat7764 С точки зрения банальной эрудиции, название, артикул и название производителя - это просто свойства для сущности "Автозапчасть", тут и не пахнет Value Object.

  • @konstantinporutchikov5546
    @konstantinporutchikov5546 21 день назад

    Спасибо за очень познавательное видео для начинающего! Теперь стал лучше понимать DI контейнеры и как их использовать! Надо будет поэкспериментировать теперь самостоятельно. P.S. Хотел еще спросить, какой тулзой вы чертили (поверх кода в студии) поясняющие стрелки , видимо это был какой-то скриншотер?

  • @techbuterbrod
    @techbuterbrod 21 день назад

    Спасибо, интересные и полезные видео.

  • @artemadeev7444
    @artemadeev7444 22 дня назад

    А в каких случаях уместно использование ?

    • @SergeiCalabonga
      @SergeiCalabonga 22 дня назад

      Если не понимания "когда", то лучше не использовать.

  • @Alexander-ko1od
    @Alexander-ko1od 25 дней назад

    К сожалению вы неправильно поняли мой вопрос, я имел ввиду какие есть альтернативные крутые библиотеки для работы с Apache Kafka, из всех мне известны только MassTransit и Confluent. MassTransit мне показался удобнее (внутри у него тот же Confluent), но все равно спасибо вам за видео

    • @SergeiCalabonga
      @SergeiCalabonga 25 дней назад

      Для Kafka я обычно использую стандартные библиотеки такик как наподобие MassTransit, я не знаю.

  • @timoxa_dev
    @timoxa_dev 27 дней назад

    Я бы не советовал использовать Hangfire. Как показала практика, если говно и моча в голове у авторов, то одной только сине-желтой тряпкой в шапке сайта/репозитория авторы могут не ограничиться

    • @SergeiCalabonga
      @SergeiCalabonga 27 дней назад

      Это вообще про что?

    • @timoxa_dev
      @timoxa_dev 27 дней назад

      @@SergeiCalabonga автор Hangfire в 2022 году второпях свалил из РФ в Эстонию, поставил флаг украины в шапке сайпа и разорвал все связи с заказчиками из РФ

    • @SergeiCalabonga
      @SergeiCalabonga 27 дней назад

      @@timoxa_dev автор - я! Я до сих пор в РФ! Я никуда не собираюсь! Ни на одном из моих сайтов ничего подобного нет! Откуда такая бредовая информация? Что за хрень?

  • @user-ii9xe4pu6x
    @user-ii9xe4pu6x 28 дней назад

    Спасибо!

  • @fazleev
    @fazleev 28 дней назад

    По 255-му вопросу: Использовал chatGpt для конвертации небольших участков кода из С++ в С# и из Python в С# По логике конечно пробежаться необходимо, в моём случае всё было в порядке. Можно попросить привести стиль кода по гайдлайнам Microsoft, написать xml комментарии к публичным методам Не знаю как сейчас справляется с большими классами, на тот момент chatGpt не справлялся, сгенерированный код обрывался. Если просил что-то новое сделать - то всегда приходилось просить его поправить, это муторно, уж лучше самому с нуля написать

    • @SergeiCalabonga
      @SergeiCalabonga 27 дней назад

      Ключевой момент - "небольших участков кода" 😃

  • @yungflaeva
    @yungflaeva Месяц назад

    Искал полезный материал в интернете по реализации аутентификации в Swagger (13:00) и наткнулся на это видео, огромное спасибо Вам за полезный видеоролик по реализации аутентификации! :)

  • @guren3246
    @guren3246 Месяц назад

    Спасибо за видео, очень помогло =)) Но анекдот хуйня полная...

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      Свои мозги другим не вставишь... впрочем, как и чувство юмора.

  • @sergbo3114
    @sergbo3114 Месяц назад

    Ну а зачем в сервисе(менеджере) принимать entity? Что мешает всю логику разместить в DocumentService и давать на вход только данные. Если данные не валидны сервис ругнется и все. Потому что получилось в подходе с анемичной моделью вы вытянули БЛ в контроллер, но можно было бы делать в сервисе при этом анемичные модели остались.

  • @7-rs8gb
    @7-rs8gb Месяц назад

    выглядит хорошо. но отрегулировать вам эхо микрофона было бы чудно

  • @user-yo7mw6oj4p
    @user-yo7mw6oj4p Месяц назад

    Спасибо. Интересные вопросы и интересные ответы

  • @vladhr4083
    @vladhr4083 Месяц назад

    есть интересная библиотека Bogus для сидирования данных. особо может быть хороша в связке с ef

  • @user-ri7mk9ek6e
    @user-ri7mk9ek6e Месяц назад

    Почему бы не померить производительность immutable и mutable?

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      Если будете измерять, напишите пожалуйста результаты в комментариях.

  • @_maxim_gr_9056
    @_maxim_gr_9056 Месяц назад

    Когда нибудь я дорасту до уровня применения информации из этого видео, а пока поддержку комментарием.

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      Уверен, что это случится очень скоро!!

  • @user-ii9xe4pu6x
    @user-ii9xe4pu6x Месяц назад

    Видео длинное, хотя бы обьяснили тогда, что такое паттерн Repository и что за паттерн UnitOfWork, и как эти два паттерна между собой сочитаются. А то взяли и просто подключили свои библиотеки.

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      Так если "просто подключили", то что объяснять? Да и а начале видео, я так и сказал, что "покажу, как я это делаю", а не "расскажу про основные паттерны работы DAL, про которые разработчик должен знать и без меня, не говоря уже, что в интернете полно информации". 🙂

    • @ziegimondvishneuski3317
      @ziegimondvishneuski3317 Месяц назад

      Repository - это обстракция, для обеспечения гибкости. Сегодня вы работаете с Posgress, завтра с MSSql, и для облегчения перехода от одного к другому, делают такую вот прослойку. UnitOfWork обеспечивает целостность сохранения данных в разрезе Transaction

  • @user-et8ig8hl7k
    @user-et8ig8hl7k Месяц назад

    А почему при сохранении в БД используется SpecifyKind? Он же не преобразует дату, а только меняет Kind. Если дата была Local, то значение не поменяется. Не логичнее использовать ToUniversalTime?

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      Я пробовал, у меня получилось на тот момент. Попробуйте. Очень интересно, получится или нет.

    • @user-et8ig8hl7k
      @user-et8ig8hl7k Месяц назад

      @@SergeiCalabonga потыкал разные варианты на текущем проекте и получилось следующее. При использовании LinqDynamic для генерации запросов в БД обязательно использовать ToUniversalTime. Иначе сначала либа конвертнет в Local, а затем мы проставим UTC. И в БД появится гап на оффсет даты при сравнениях и фильтрации. А вот если без LinqDynamic работать, то разницы можно сказать и нету

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      О! Это интересная информация. Приму к сведению! Спасибо огромное!

  • @74Photon
    @74Photon Месяц назад

    Вы упомянули, что есть видео про Definition, а ссылки на него не указали. Можно добавить ее в описание под видео?

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      boosty.to/calabonga/posts/9d1be9bb-a117-4a17-877e-252d58be9800?share=post_link

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      boosty.to/calabonga/posts/136c41fd-1c86-47a2-9d26-feee6355cfca?share=post_link

  • @dy0mber847
    @dy0mber847 Месяц назад

    Спасибо братан, полезное видео

  • @DENDYTWOO
    @DENDYTWOO Месяц назад

    а что за расширение, которое показывает какие сущности являются таблицами в бд?

  • @apelsinka18
    @apelsinka18 Месяц назад

    А почему в шаблоне Domain и Infrastructure это отдельные проекты, а Application это просто папка в Web?

    • @SergeiCalabonga
      @SergeiCalabonga Месяц назад

      Потому что реальная жизнь всегда сложнее, чем паттерны с абстрактными правилами. Шаблоны были созданы из реальных проектов, натянуть правила на тот момент не получилось. А потом и смысла не было. Да и нет правил с привязкой контекста к проектов к папкам или целым проектам, или даже solutions. Так что "как прибыли, так и держится" 😅

  • @andreypetrov7637
    @andreypetrov7637 2 месяца назад

    Огромное благодарность за столь ценный источник примеров как нужно писать код!

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Благодарность - это хорошо! Но на хлеб её не намажешь... 😉

  • @user-bz3uv2gy7v
    @user-bz3uv2gy7v 2 месяца назад

    инстолл

  • @user-ii9xe4pu6x
    @user-ii9xe4pu6x 2 месяца назад

    Если вы пишите один микросервис, а коллеги пишут другие микросервисы, то как вы локально тестируете свой микросервис, который для работы требует другие? Запускаете в docker compose?

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Unit-тесты, запуск в окружении Staging, запуск локально в Docker (в том числе docker compose)

  • @user-yo7mw6oj4p
    @user-yo7mw6oj4p 2 месяца назад

    Спасибо. Интересный урок по API

  • @user-mt2oc1zg4p
    @user-mt2oc1zg4p 2 месяца назад

    Здравствуйте, может быть расскажите в видео про ConfigureAwait()?

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Кажется "изжёванная" тема. Куча информации в интернете.

  • @user-qg6fn3qx9m
    @user-qg6fn3qx9m 2 месяца назад

    Не понимаю, почему не сделать отлов exception с переводом его в коды ответов , один раз сделали и везде используем не извращаясь над бизнес логикой. Да exception нельзя использовать вываливая исключения как постоянные ответы , но ведь это исключения на нештатные ситуации которых не должно быть. Если разраб бомбит api невалидными данными, то надо решать кривизну его рук)

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Делай как нравится, я тоже так делаю. Я же не заставляю делать как я. Я просто поделился опытом. Сделай видео о своём опыте - посмотришь комментарии о нем, всё сразу станет на место. 😁

    • @arfreekiller
      @arfreekiller 2 месяца назад

      @@SergeiCalabonga а если без холиваров, то чем плох такой подход?

    • @user-im6lx5yb7e
      @user-im6lx5yb7e 2 месяца назад

      При таком подходе, каждый раз, при выбросе исключения будет собираться стектрейс, что довольно накладно и будет замедлять работу приложения (критично для хайлоад)

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      @@user-im6lx5yb7e дык, не выбрасывать тогда! Класс исключения показан только в качестве демонстрации. Создай свой класс DTO и выкидывай его. Забудьте вы уже прл исключения, видео не об этом.

    • @andrey_aka_skif
      @andrey_aka_skif 2 месяца назад

      Как я понял, автор делает упор на способ правильно вернуть результат из контроллера. Т.е. вместо IEnumerable<Item> он возвращает IActionResult. По идее, можно вернуть ActionResult<IEnumerable<Item>>. Но суть та же. Это не голые данные, а контейнер, который содержит и данные и дополнительную информацию. Например, описание ошибки. Однако, чтобы не засорять контроллеры бизнесовой логикой, он вынес её в сервис. И для удобства возвращает Operation.Result. Как я понимаю, у Вас возникли вопросы именно к этому? В таком подходе фактически используется паттерн Result. Он ещё напоминает монаду (но не готов обсуждать подробнее). Идея в том, что Exception это исключительная ситуация, с которой хз что делать. Обычно "ошибка" сервиса вполне осмысленная, а то и вовсе не ошибка. Например, 409 Conflict никакая не исключительная ситуация. Абсолютно рядовая ситуация при дублировании имени пользователя. Зачем нам падать? Можно вернуть объект, содержащий или данные или сообщение с подробностями. Т.е. работая с сервисом, который возвращает Result, мы уверены, что в нем не возникнет Exception. И нам не нужно дополнительно оборачивать его в try/catch. При этом в самом сервисе try/catch очень даже могут быть. Но свои ошибки сервис отлавливает сам. А контроллер его спокойно пользуется.

  • @andrey_aka_skif
    @andrey_aka_skif 2 месяца назад

    Не совсем понял, можно ли с помощью Вашего пакета возвращать что-то, кроме 200? Например, 201 Created или 204 No Content. Это ведь тоже Success результат. Кстати, встречал реализацию, в которой сервисы возвращают специализированные наследники Result, соответствующие некоторому бизнес-результату - Success, Created, NoMoney и т.д. И для них созданы методы расширения, которые конвертируют такой Result в ActionResult. Т.е. контроллер становится ещё короче. Сводится к чему-то типа return _service.GetData().ToActionResult(); Что думаете о таком подходе? Возможно, он есть в других Ваших пакетах.

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Я думаю, что чем проще, тем лучше. Работаю в командах, где есть разработчики с разным уровнем знаний. Поэтому, ещё раз, чем проще, тем лучше. Мне кажется, мой подход очень прост.

    • @andrey_aka_skif
      @andrey_aka_skif 2 месяца назад

      @@SergeiCalabonga спасибо за ответ!

    • @yuryermolov13
      @yuryermolov13 2 месяца назад

      Судя по исходному коду реализаций для этих статусов нет.

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      @@yuryermolov13 осталось только определиться - нет статусов чего?

    • @yuryermolov13
      @yuryermolov13 2 месяца назад

      @@SergeiCalabongaДля 201 Created или 204 No Content

  • @salov_ev
    @salov_ev 2 месяца назад

    Прикольный подход :) я обычно просто респонс объект возвращаю но тут круто что можно вернуть разные значения и к тому же минимум кода и модификаций

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Мне тоже очень нравится. А ещё это соответствует Single Responsibility Principle (SRP). И это практика из большого опыта.

  • @mr.pidrum1488
    @mr.pidrum1488 2 месяца назад

    Топовый контент.

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Я тоже так думаю, спасибо!

    • @mr.pidrum1488
      @mr.pidrum1488 2 месяца назад

      @@SergeiCalabongaВам спасибо большое

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      @@mr.pidrum1488 всегда пожалуйста

  • @user-zf6ur9xc5i
    @user-zf6ur9xc5i 2 месяца назад

    А в чём разница? Лучше объясни разницу в этих трёх терминах.

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Если не понимаешь, то объяснение не поможет. 😔

    • @user-zf6ur9xc5i
      @user-zf6ur9xc5i 2 месяца назад

      @@SergeiCalabonga то есть ты тоже не знаешь.

    • @SergeiCalabonga
      @SergeiCalabonga 2 месяца назад

      Знаю, но тебе не скажу. Подрастешь - сам поймёшь... наверное.

  • @evgenasd8892
    @evgenasd8892 3 месяца назад

    Здравствуйте Сергей, подскажите как вы нашли золотую середину между качеством кода и быстротой разработки. Подробнее: года 3 назад я справлялся с задачами в срок, все было хорошо, но не устраивало то что модификация функционала тянула за собой то что во многих местах нужно было внести одинаковые изменения. При изменении одной логики ломалось и чтото отваливалось в совсем других не предсказуемых местах. Для добавления/расширения функционала требовалось раза в три-четыре дольше времени чтобы внести в существующую систему (чем если бы это был новый проект) такие и еще другие моменты натолкнули меня на поиски (истины) хотябы того что могло помочь и разрешить эти проблемы. И я нашел)) этим оказалась обьектно ориентированная парадигма программирования. Начав изучать мне очень понравились все ее преимущества (и плюшки как говорят) . Но вот что изменилось в дальнейшем: сроки на разработку я начал просрачивать в двое а то и в трое намеченных руководством. Я пытаюсь построить «чистую архитектуру» с распределенными обязанностями между сущностями, ну вопщем загорелся клин кодом поинципами солид, и паттернами проектирлвания. Первое что я хлебнул это то что не стоит строить на основе паттерна что либо. Только когда возникнет потребность тогда и применять а тначе очень усложнеяшь что то и не пригодится возможно в дальнейшем. Но ни как не получается строить системы которые будут масштабируемыми в дальнейшем. Строить из говна и палок, не хочу, лишь бы работало прям щас, . Я понял что делать пистолет с возможностью трансформации в робота не нужно если нет такого требования, и ты сам предполагаешь вдруг пригодится, да не нужно. И реализовыватьв срок не получается. Вопрос: какую сложность системы /ее декомпозицию нужно заложить в самом начале, чтобы позже при необходимости можно было легко расширять а не изменять существующий код(как дядя боб сказал, Нуда ладно) потому что п процедурном стиле уже точно не хочу писать и копи пастить все подряд, но и на продумывание в глубину архитектуры, поведения сущностей, и распределения обязанностей, не хватает времени. Хочу успевать сдавать проекты в срок. Можете дать консультацию?

    • @SergeiCalabonga
      @SergeiCalabonga 3 месяца назад

      Могу .

    • @SergeiCalabonga
      @SergeiCalabonga 3 месяца назад

      Могу поделиться опытом. Могу снять короткое видео об этом. Если коротко, то паттерны - это хорошо. Но реальность - реальнее.

    • @evgenasd8892
      @evgenasd8892 3 месяца назад

      @@SergeiCalabonga можно вам позвонить?

    • @SergeiCalabonga
      @SergeiCalabonga 3 месяца назад

      @@evgenasd8892 консультации в порядке очереди, по субботам.

    • @evgenasd8892
      @evgenasd8892 3 месяца назад

      @@SergeiCalabonga запишите меня пожалуйста, или нужно самому где то записаться?

  • @semenivanoff8615
    @semenivanoff8615 3 месяца назад

    Так масстранзит он же для дотнета. Кто им пользуется сегодня то?

  • @semenivanoff8615
    @semenivanoff8615 3 месяца назад

    Сишарп? Асп нет? Сегодня? Фуууууу

    • @SergeiCalabonga
      @SergeiCalabonga 3 месяца назад

      В кривых руках и калькулятор зависает 😂

  • @andreypetrov7637
    @andreypetrov7637 3 месяца назад

    Во истину супер определение

  • @Vova_Nesolenov
    @Vova_Nesolenov 3 месяца назад

    Подскажите пожалуйста, какие продукты ришарпера нужны для веб разработчика!?

    • @SergeiCalabonga
      @SergeiCalabonga 3 месяца назад

      Те, которыми будете пользоваться

  • @alex-zc4cq
    @alex-zc4cq 3 месяца назад

    Спасибо

  • @HeyWhoTheFuckAreYou
    @HeyWhoTheFuckAreYou 3 месяца назад

    Эх, было бы у OpenIddict ещё документация адекватная на уровне Identity Server, цены бы ему не было. А так для того, кто вообще ни разу не работал с подобными сервисами аутентификации/авторизации очень сложно вникнуть во всё происходящее.

    • @SergeiCalabonga
      @SergeiCalabonga 3 месяца назад

      нет у меня такой документации

  • @masdaiable
    @masdaiable 3 месяца назад

    Когда, вижу на видео лого твоего бренда сразу понятно, что видео стоящее

    • @SergeiCalabonga
      @SergeiCalabonga 3 месяца назад

      Приятно понимать, что кому-то полезное видео я создаю. Спасибо.