![Sergei Calabonga](/img/default-banner.jpg)
- 353
- 620 060
Sergei Calabonga
Russia
Приєднався 2 січ 2011
Канал для программистов и разработчиков, которые хотят стать настоящими архитекторами информационных систем. О программировании на платформе .NET и не только на NET. А также принципы, правила, тенденции, советы и обмен мнениями. Интересные ссылки, советы по реализации, обучение, рефакторинг и многое другое.
Задать вопросы можно непосредственно в комментариях к конкретному видео или в блоге www.calabonga.net через форму обратной связи.
Boosty
boosty.to/calabonga
Блог
www.calabonga.net
Телеграм канал:
t.me/calabongaNet
VK:
codingeasy
Zen.Yandex:
dzen.ru/calabonga
Присоединиться к каналу:
ua-cam.com/users/sergeicalabongajoin
Задать вопросы можно непосредственно в комментариях к конкретному видео или в блоге www.calabonga.net через форму обратной связи.
Boosty
boosty.to/calabonga
Блог
www.calabonga.net
Телеграм канал:
t.me/calabongaNet
VK:
codingeasy
Zen.Yandex:
dzen.ru/calabonga
Присоединиться к каналу:
ua-cam.com/users/sergeicalabongajoin
FAQ 56 по программированию
В этом видео:
256. Как распилить монолит? С чего начать? Есть ли у вас опыт "распила" монолита?
257. Как по вашему? Cейчас используется ли в коммерческой разработке Blazor? И надо ли изучать этот фреймворк или уже не актуальная технология?
258. Как лучше хранить файлы картинок для сайта? Где вы храните картинки для своего блога?
259. Как правильно определить количество необходимых модульных тестов и сколько утверждений должен содержать один тест?
Благодарности и помощь каналу принимаются:
www.calabonga.net/site/thanks
Наши видео доступны и на Дзэн:
dzen.ru/calabonga
Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам:
* boosty.to/calabonga
Я использую хостинг Reg.ru
htttps://reg.ru/?rlink=reflink-11163551
256. Как распилить монолит? С чего начать? Есть ли у вас опыт "распила" монолита?
257. Как по вашему? Cейчас используется ли в коммерческой разработке Blazor? И надо ли изучать этот фреймворк или уже не актуальная технология?
258. Как лучше хранить файлы картинок для сайта? Где вы храните картинки для своего блога?
259. Как правильно определить количество необходимых модульных тестов и сколько утверждений должен содержать один тест?
Благодарности и помощь каналу принимаются:
www.calabonga.net/site/thanks
Наши видео доступны и на Дзэн:
dzen.ru/calabonga
Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам:
* boosty.to/calabonga
Я использую хостинг Reg.ru
htttps://reg.ru/?rlink=reflink-11163551
Переглядів: 241
Відео
FAQ 55 по программированию
Переглядів 337Місяць тому
Благодарности и помощь каналу принимаются: 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
Переглядів 8482 місяці тому
Благодарности и помощь каналу принимаются: 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)
Переглядів 4597 місяців тому
В прошлом видео я озвучил план реализации. В этом видео покажу, какие материалы я приготовил в качестве "подопытных кроликов" при реализации проекта AlbumManager. Благодарности и помощь каналу принимаются: www.calabonga.net/site/thanks Наши видео доступны и на Дзэн: dzen.ru/calabonga Можно стать спонсором, и вы получите доступ к эксклюзивным бонусам: * boosty.to/calabonga Я использую хостинг Re...
Реализация плагинов для ASP.NET Core Web API
Переглядів 1,4 тис.10 місяців тому
Реализация плагинов для ASP.NET Core Web API
Форма обратной связи на Blazor (часть 1)
Переглядів 65011 місяців тому
Форма обратной связи на Blazor (часть 1)
Есть микросервисы корзина и продукты. Чтобы добавить продукт или создать корзину, паблишером должно быть фронтенд приложение, например mvc?
Frontend - тоже может быть микросервисом.
@@SergeiCalabonga Ок. Микросервисы Product и Cart. Добавляем продукт в корзину. Это значит Cart паблишер, запрашивает продукт из консьюмера Product. У Product есть ещё консьюмеры на создание и удаление продукта (для своей базы данных). Создаю ещё один микросервис который выполняет эти запросы?
@@artemignat7764 интересно, а "паблишер", "консьюмер" - это что за звери? Может всё-таки или до конца по-русски "публикатор" и "потребитель", или до конца по-английски "publisher" и "consumer"? Читать очень сложно, да и не красиво, простите. Англицизмы меня сбивают с толку. :( А если по делу, то.... 1. правила, которыми вы руководствуетесь для создания новых сервисов мне не понятно. 2. Какие обязанности на сервисе Product? Пред положу, что это каталог товаров. 3. Какие обязанности на сервере Cart? Если Product - это каталог товаров. 4. Почему это два разных сервиса? (Вам скучно было с одиним,)
@@SergeiCalabonga Product -сервис каталога товаров. В нём я могу продукт добавлять, удалять, редактировать. Сервис Cart может добавлять продукт, путям обращения к Product и удалять продукт и корзины. На уровне crud запросов, я понимаю как эти сервисы общаются между собой. И понимаю как Cart может получить продукт от Product через MassTransit. Но я не понимаю как мне реализовать три действия: добавление,удаление,редактирование продукта в Product с помощью MassTransit с брокером. Я должен ещё создать микросервис для этого?
@@SergeiCalabonga Product - сервис каталога товаров. Сервис Cart может добавлять и удалять продукт.Он обращается к Product, только для получения продукта через MassTransit.В сервисе Product можно продукт добавлять,удалять,редактировать. Это делается админом через crud запросы к api сервиса Product. То что я описал, считается микросервисной архитектурой или же нужно создавать ещё один микросервис который будет делать эти запросы через MassTransit?
Если я хочу добавить, изменить, удалить пользователя в UserService, кто должен быть продюсером?
А почему должен обязательно быть producer? И что он делает?
@@SergeiCalabonga я уже осознал свою ошибку
@@SergeiCalabonga Для таких задач можно использовать crud запросы, к контроллерам UserService.
Не ну чат жпт гениально решает задачу генерации описания к коммиту, доктайпит очень даже хорошо, документацию по проету пишет, puml рисует, тестики генерит, так шо зря вы это вот так, зря-зря-зря
Для каждого типа задач свой интеллект? Оригинально! Обучить программу выдавать случайные тексты по теме... это не креатив, это больше аналитика. В любом случае посмотрим... может я и не прав.
У Вас наверно самый полезный канал для .NET разработчиков. Спасибо за видео!
Спасибо!!! Я тоже так думаю! 😁
Спасибо за видео. А в своем облаке вы как храните изображения? В виде файлов или в БД?
В виде файлов на удалённом сервере, взаимодействие через API.
@@SergeiCalabonga А minio не приходилось использовать?
@@Denis778322877 Приходилось, но только на рабочих проектах. В частном порядке - это дорогое удовольствие.
@@SergeiCalabonga почему дорогое? Он же вроде бесплатный. Я же его только что в докере поднял это же какой сейчас счёт придёт
@@Denis778322877 пока вы его используете "по-детски" - это будет бесплатно, как только что-то серьёзное потребуется туда положить, то welcome min.io/pricing
WebAssembly 😢 Кажется мне немного не повезло
Не переживайте! Это не последний раз, когда вам не повезло!
Даешь видео про интеграционное тестирование! Можно получить из swagger описания какие методы есть. Но их бывает очень много и они однотипные. Если библиотека что бы можно было сгенерировать тесты по описанию swagger для CRUD например?
Swagger - это частный случай. Рекомендую смотреть в сторону OpenAPI. Библиотек уже хватает. А также появляется интеграция даже Visual Studio.
@@SergeiCalabonga я имел ввиду создать интеграционные тесты по описанию что бы их руками не писать
Пишу микросервис по автозапчастям. На русскоязычных сайтах я заметил что , путь к ресурсам в URL описаны русскими словами. Пример ".../maslyanye-nasosy-i-detali-k-nim/" В коммерции так можно делать?
Явного запрета на использование конкретных символов в спецификации нет. Теоретически, можно даже кириллицу использовать. Но разве это красиво? Раз это не несет за собой рой проблем?
@@SergeiCalabonga Спасибо. Буду придерживаться стандарту.
@@artemignat7764 Очень правильное решение!
@@SergeiCalabonga Извините. Вопрос не по теме видео. У автозапчасти есть название, артикул и название производителя. Можно их объединить в value object?
@@artemignat7764 С точки зрения банальной эрудиции, название, артикул и название производителя - это просто свойства для сущности "Автозапчасть", тут и не пахнет Value Object.
Спасибо за очень познавательное видео для начинающего! Теперь стал лучше понимать DI контейнеры и как их использовать! Надо будет поэкспериментировать теперь самостоятельно. P.S. Хотел еще спросить, какой тулзой вы чертили (поверх кода в студии) поясняющие стрелки , видимо это был какой-то скриншотер?
Zoomit 8.0
Спасибо, интересные и полезные видео.
А в каких случаях уместно использование ?
Если не понимания "когда", то лучше не использовать.
К сожалению вы неправильно поняли мой вопрос, я имел ввиду какие есть альтернативные крутые библиотеки для работы с Apache Kafka, из всех мне известны только MassTransit и Confluent. MassTransit мне показался удобнее (внутри у него тот же Confluent), но все равно спасибо вам за видео
Для Kafka я обычно использую стандартные библиотеки такик как наподобие MassTransit, я не знаю.
Я бы не советовал использовать Hangfire. Как показала практика, если говно и моча в голове у авторов, то одной только сине-желтой тряпкой в шапке сайта/репозитория авторы могут не ограничиться
Это вообще про что?
@@SergeiCalabonga автор Hangfire в 2022 году второпях свалил из РФ в Эстонию, поставил флаг украины в шапке сайпа и разорвал все связи с заказчиками из РФ
@@timoxa_dev автор - я! Я до сих пор в РФ! Я никуда не собираюсь! Ни на одном из моих сайтов ничего подобного нет! Откуда такая бредовая информация? Что за хрень?
Спасибо!
Пожалуйста
По 255-му вопросу: Использовал chatGpt для конвертации небольших участков кода из С++ в С# и из Python в С# По логике конечно пробежаться необходимо, в моём случае всё было в порядке. Можно попросить привести стиль кода по гайдлайнам Microsoft, написать xml комментарии к публичным методам Не знаю как сейчас справляется с большими классами, на тот момент chatGpt не справлялся, сгенерированный код обрывался. Если просил что-то новое сделать - то всегда приходилось просить его поправить, это муторно, уж лучше самому с нуля написать
Ключевой момент - "небольших участков кода" 😃
Искал полезный материал в интернете по реализации аутентификации в Swagger (13:00) и наткнулся на это видео, огромное спасибо Вам за полезный видеоролик по реализации аутентификации! :)
Огромное пожалуйста
Спасибо за видео, очень помогло =)) Но анекдот хуйня полная...
Свои мозги другим не вставишь... впрочем, как и чувство юмора.
Ну а зачем в сервисе(менеджере) принимать entity? Что мешает всю логику разместить в DocumentService и давать на вход только данные. Если данные не валидны сервис ругнется и все. Потому что получилось в подходе с анемичной моделью вы вытянули БЛ в контроллер, но можно было бы делать в сервисе при этом анемичные модели остались.
Ничто не мешает.
выглядит хорошо. но отрегулировать вам эхо микрофона было бы чудно
Ага
Спасибо. Интересные вопросы и интересные ответы
Рад, что понравились
есть интересная библиотека Bogus для сидирования данных. особо может быть хороша в связке с ef
Почему бы не померить производительность immutable и mutable?
Если будете измерять, напишите пожалуйста результаты в комментариях.
Когда нибудь я дорасту до уровня применения информации из этого видео, а пока поддержку комментарием.
Уверен, что это случится очень скоро!!
Видео длинное, хотя бы обьяснили тогда, что такое паттерн Repository и что за паттерн UnitOfWork, и как эти два паттерна между собой сочитаются. А то взяли и просто подключили свои библиотеки.
Так если "просто подключили", то что объяснять? Да и а начале видео, я так и сказал, что "покажу, как я это делаю", а не "расскажу про основные паттерны работы DAL, про которые разработчик должен знать и без меня, не говоря уже, что в интернете полно информации". 🙂
Repository - это обстракция, для обеспечения гибкости. Сегодня вы работаете с Posgress, завтра с MSSql, и для облегчения перехода от одного к другому, делают такую вот прослойку. UnitOfWork обеспечивает целостность сохранения данных в разрезе Transaction
А почему при сохранении в БД используется SpecifyKind? Он же не преобразует дату, а только меняет Kind. Если дата была Local, то значение не поменяется. Не логичнее использовать ToUniversalTime?
Я пробовал, у меня получилось на тот момент. Попробуйте. Очень интересно, получится или нет.
@@SergeiCalabonga потыкал разные варианты на текущем проекте и получилось следующее. При использовании LinqDynamic для генерации запросов в БД обязательно использовать ToUniversalTime. Иначе сначала либа конвертнет в Local, а затем мы проставим UTC. И в БД появится гап на оффсет даты при сравнениях и фильтрации. А вот если без LinqDynamic работать, то разницы можно сказать и нету
О! Это интересная информация. Приму к сведению! Спасибо огромное!
Вы упомянули, что есть видео про Definition, а ссылки на него не указали. Можно добавить ее в описание под видео?
boosty.to/calabonga/posts/9d1be9bb-a117-4a17-877e-252d58be9800?share=post_link
boosty.to/calabonga/posts/136c41fd-1c86-47a2-9d26-feee6355cfca?share=post_link
Спасибо братан, полезное видео
Рад помочь, братан
а что за расширение, которое показывает какие сущности являются таблицами в бд?
Net8 + EntityFrameworkCore
А почему в шаблоне Domain и Infrastructure это отдельные проекты, а Application это просто папка в Web?
Потому что реальная жизнь всегда сложнее, чем паттерны с абстрактными правилами. Шаблоны были созданы из реальных проектов, натянуть правила на тот момент не получилось. А потом и смысла не было. Да и нет правил с привязкой контекста к проектов к папкам или целым проектам, или даже solutions. Так что "как прибыли, так и держится" 😅
Огромное благодарность за столь ценный источник примеров как нужно писать код!
Благодарность - это хорошо! Но на хлеб её не намажешь... 😉
инстолл
Если вы пишите один микросервис, а коллеги пишут другие микросервисы, то как вы локально тестируете свой микросервис, который для работы требует другие? Запускаете в docker compose?
Unit-тесты, запуск в окружении Staging, запуск локально в Docker (в том числе docker compose)
Спасибо. Интересный урок по API
Всегда пожалуйста!
Здравствуйте, может быть расскажите в видео про ConfigureAwait()?
Кажется "изжёванная" тема. Куча информации в интернете.
Не понимаю, почему не сделать отлов exception с переводом его в коды ответов , один раз сделали и везде используем не извращаясь над бизнес логикой. Да exception нельзя использовать вываливая исключения как постоянные ответы , но ведь это исключения на нештатные ситуации которых не должно быть. Если разраб бомбит api невалидными данными, то надо решать кривизну его рук)
Делай как нравится, я тоже так делаю. Я же не заставляю делать как я. Я просто поделился опытом. Сделай видео о своём опыте - посмотришь комментарии о нем, всё сразу станет на место. 😁
@@SergeiCalabonga а если без холиваров, то чем плох такой подход?
При таком подходе, каждый раз, при выбросе исключения будет собираться стектрейс, что довольно накладно и будет замедлять работу приложения (критично для хайлоад)
@@user-im6lx5yb7e дык, не выбрасывать тогда! Класс исключения показан только в качестве демонстрации. Создай свой класс DTO и выкидывай его. Забудьте вы уже прл исключения, видео не об этом.
Как я понял, автор делает упор на способ правильно вернуть результат из контроллера. Т.е. вместо IEnumerable<Item> он возвращает IActionResult. По идее, можно вернуть ActionResult<IEnumerable<Item>>. Но суть та же. Это не голые данные, а контейнер, который содержит и данные и дополнительную информацию. Например, описание ошибки. Однако, чтобы не засорять контроллеры бизнесовой логикой, он вынес её в сервис. И для удобства возвращает Operation.Result. Как я понимаю, у Вас возникли вопросы именно к этому? В таком подходе фактически используется паттерн Result. Он ещё напоминает монаду (но не готов обсуждать подробнее). Идея в том, что Exception это исключительная ситуация, с которой хз что делать. Обычно "ошибка" сервиса вполне осмысленная, а то и вовсе не ошибка. Например, 409 Conflict никакая не исключительная ситуация. Абсолютно рядовая ситуация при дублировании имени пользователя. Зачем нам падать? Можно вернуть объект, содержащий или данные или сообщение с подробностями. Т.е. работая с сервисом, который возвращает Result, мы уверены, что в нем не возникнет Exception. И нам не нужно дополнительно оборачивать его в try/catch. При этом в самом сервисе try/catch очень даже могут быть. Но свои ошибки сервис отлавливает сам. А контроллер его спокойно пользуется.
Не совсем понял, можно ли с помощью Вашего пакета возвращать что-то, кроме 200? Например, 201 Created или 204 No Content. Это ведь тоже Success результат. Кстати, встречал реализацию, в которой сервисы возвращают специализированные наследники Result, соответствующие некоторому бизнес-результату - Success, Created, NoMoney и т.д. И для них созданы методы расширения, которые конвертируют такой Result в ActionResult. Т.е. контроллер становится ещё короче. Сводится к чему-то типа return _service.GetData().ToActionResult(); Что думаете о таком подходе? Возможно, он есть в других Ваших пакетах.
Я думаю, что чем проще, тем лучше. Работаю в командах, где есть разработчики с разным уровнем знаний. Поэтому, ещё раз, чем проще, тем лучше. Мне кажется, мой подход очень прост.
@@SergeiCalabonga спасибо за ответ!
Судя по исходному коду реализаций для этих статусов нет.
@@yuryermolov13 осталось только определиться - нет статусов чего?
@@SergeiCalabongaДля 201 Created или 204 No Content
Прикольный подход :) я обычно просто респонс объект возвращаю но тут круто что можно вернуть разные значения и к тому же минимум кода и модификаций
Мне тоже очень нравится. А ещё это соответствует Single Responsibility Principle (SRP). И это практика из большого опыта.
Топовый контент.
Я тоже так думаю, спасибо!
@@SergeiCalabongaВам спасибо большое
@@mr.pidrum1488 всегда пожалуйста
А в чём разница? Лучше объясни разницу в этих трёх терминах.
Если не понимаешь, то объяснение не поможет. 😔
@@SergeiCalabonga то есть ты тоже не знаешь.
Знаю, но тебе не скажу. Подрастешь - сам поймёшь... наверное.
Здравствуйте Сергей, подскажите как вы нашли золотую середину между качеством кода и быстротой разработки. Подробнее: года 3 назад я справлялся с задачами в срок, все было хорошо, но не устраивало то что модификация функционала тянула за собой то что во многих местах нужно было внести одинаковые изменения. При изменении одной логики ломалось и чтото отваливалось в совсем других не предсказуемых местах. Для добавления/расширения функционала требовалось раза в три-четыре дольше времени чтобы внести в существующую систему (чем если бы это был новый проект) такие и еще другие моменты натолкнули меня на поиски (истины) хотябы того что могло помочь и разрешить эти проблемы. И я нашел)) этим оказалась обьектно ориентированная парадигма программирования. Начав изучать мне очень понравились все ее преимущества (и плюшки как говорят) . Но вот что изменилось в дальнейшем: сроки на разработку я начал просрачивать в двое а то и в трое намеченных руководством. Я пытаюсь построить «чистую архитектуру» с распределенными обязанностями между сущностями, ну вопщем загорелся клин кодом поинципами солид, и паттернами проектирлвания. Первое что я хлебнул это то что не стоит строить на основе паттерна что либо. Только когда возникнет потребность тогда и применять а тначе очень усложнеяшь что то и не пригодится возможно в дальнейшем. Но ни как не получается строить системы которые будут масштабируемыми в дальнейшем. Строить из говна и палок, не хочу, лишь бы работало прям щас, . Я понял что делать пистолет с возможностью трансформации в робота не нужно если нет такого требования, и ты сам предполагаешь вдруг пригодится, да не нужно. И реализовыватьв срок не получается. Вопрос: какую сложность системы /ее декомпозицию нужно заложить в самом начале, чтобы позже при необходимости можно было легко расширять а не изменять существующий код(как дядя боб сказал, Нуда ладно) потому что п процедурном стиле уже точно не хочу писать и копи пастить все подряд, но и на продумывание в глубину архитектуры, поведения сущностей, и распределения обязанностей, не хватает времени. Хочу успевать сдавать проекты в срок. Можете дать консультацию?
Могу .
Могу поделиться опытом. Могу снять короткое видео об этом. Если коротко, то паттерны - это хорошо. Но реальность - реальнее.
@@SergeiCalabonga можно вам позвонить?
@@evgenasd8892 консультации в порядке очереди, по субботам.
@@SergeiCalabonga запишите меня пожалуйста, или нужно самому где то записаться?
Так масстранзит он же для дотнета. Кто им пользуется сегодня то?
Все, кто на дотнете
Сишарп? Асп нет? Сегодня? Фуууууу
В кривых руках и калькулятор зависает 😂
Во истину супер определение
Это правда
Подскажите пожалуйста, какие продукты ришарпера нужны для веб разработчика!?
Те, которыми будете пользоваться
Спасибо
Пожалуйста
Эх, было бы у OpenIddict ещё документация адекватная на уровне Identity Server, цены бы ему не было. А так для того, кто вообще ни разу не работал с подобными сервисами аутентификации/авторизации очень сложно вникнуть во всё происходящее.
нет у меня такой документации
Когда, вижу на видео лого твоего бренда сразу понятно, что видео стоящее
Приятно понимать, что кому-то полезное видео я создаю. Спасибо.