В итоге мало чего объяснил и подача оставляет желать лучшего. В следующих видео постараюсь сделать качественнее, а это можете смело ставить на 2х. Мой телеграм канал - t.me/sachkov_blog
Всё замечательно. Понятно что дальше лучше. Самое главное не опускай руки, так как по .NET очень мало свежих видео и я очень рад что нашёл твой канал так как он очень сильно помог мне в понимание мелких деталей .NET. Спасибо большое)))
@KirillDeveloper видео понравилось, но пример уж слишком простой в данном случае. Мне кажется стоило добавить еще несколько связанных между собой сущностей, чтобы показать как реализовать эту связь в моделях и репозиториях, например как в видео по EF. В любом случае благодарю за видео, продолжай!
Очень интересный видос. Многое непонятно, но это даже здорово, т.к. захотелось углубиться и погуглить отдельно некоторые моменты. Я далек от фронта, но тоже было интересно, хотелось с чего-то начать. Почему бы не начать с того, что предлагает автор. Думаю, что пересмотрю видео ещё раз. Спасибо 😊
record - это функция, введенная в C# 9.0 (выпущена в 2020 году), которая позволяет создавать неизменяемые (immutable) ссылочные типы с меньшим количеством шаблонного кода. Основные характеристики record: Неизменяемость по умолчанию Автоматическая реализация методов Equals(), GetHashCode() и ToString() Поддержка деконструкции Возможность использования позиционных параметров
ExecuteUpdateAsync и ExecuteDeleteAsync - это методы, добавленные в Entity Framework Core 7.0, которые позволяют выполнять массовые операции обновления и удаления без необходимости сначала загружать сущности в память
[15:55] Вызов Select после ToListAsync? надо до превращения в лист мэпить. запрос в бд будет чаще всего короче и не придется после создания листа итерироваться по новой
Добрый день! Я новичок в чистой архитектуре и на пути изучения. У меня появились вопросы. 1) слой core как я понимаю - это доменный слой( бизнес слой, ядро). Если модели данного слоя это бизнес сущность, то не должны ли все остальные слои зависеть от данного слоя? 2) Могу ошибаться, поправьте, пожалуйста, но если в бизнес сущностях что-то поменяется, то нам надо будет в двух слоях менять? 3) Как я понимаю, сеттеры не добавлены были, дабы, проконсультировать нежелательные вставки в свойства? А нельзя ли это проконтролировать в слое выше, в application, так как это слой бизнес процессов. Так же, не протаскивать доменную сущность до слоя Api. Так же, нормально ли в контроллерах выполнять дополнительные действия такие как силекты и прочее, если их можно в слое application, так как повторюсь, это слой бизнес процессов? За ранее спасибо! Я ни в коем случае, не хочу никого задеть, это в целях улучшить знания свои и получить фидбек по пробелам.
Привет. Не мог бы ты пояснить момент. Не понятен смысл существования BookEntity. Действительно ли нам нужно, используя EF codefirst и миграции, юзать эту прослойку? Какие проблемы мы этим решаем? В твоем примере получается просто валидация при чтении из БД, зачем оно надо не понятно. За труды Спасибо, это самый лучший мануал по теме, который мне удалось найти.
(у меня 20+ лет опыта) Чтобы ответить на твой вопрос предлагаю подумать: А какие есть альтернативы? Как бы ты сделал без этой прослойки? Важная задача, которую мы решаем: независимость бизнес-логики от инфраструктуры. (EF - это инфраструктура) Т.е. ты можешь взять отдельно проект(ы) относящиеся к бизнес-логике и написать для них тесты вообще не используя EF. Ты можешь перекомпоновать решение вообще без использования именно EF, заменив EF на другую технологию или заменив на обращение к какому-то фасаду, который реализует другая команда разработчиков и ты даже не знаешь как они это делают. Как ты достигнешь такой гибкости и возможности разрабатывать проект независимо несколькими командами, если у тебя не будет этой прослойки?
Сейчас подумал, что по настоящему осознать необходимость такой гибкости можно только столкнувшись в этим на практике: Над предпоследним проектом, в котором я участвовал, работало несколько сотен разработчиков, это больше десяти отдельных команд, в каждой из которых свое руководство, свои процессы и т.д. Оказавшись в такой ситуации на практике понимаешь как важно организовать максимально независимую работу от других команд. Чтобы баг созданный разработчиком, с которым ты даже не знаком, не мешал твоей работе, отладке и т.д. Почти в каждой команде мы использовали эмуляторы модулей, разрабатываемых другими командами, чтобы их баги не мешали нам работать
Спасибо, очень познавательно. Есть вопрос: чем плох шаблон "React and ASP.NET Core"? Его используют на практике, или все же обычно используют разделение frontend/backend как в ролике? Спасибо.
Большинство разделяют проекты, чтобы все деплоилось независимо + в шаблоне используется сборщик vite, кому-то может не нравится. Просто если создашь отдельно фронт, то можно вести себя гибче, менять сборщики и тд, поэтому рекомендую делать раздельно
В некоторых случаях dto же находится на уровне бизнес логики , то есть логика возвращает нужный объект для контроллера , а контроллер просто возвращает , то есть в контроллере минимум логики. Такой вариант более правильнее ?
Подскажите пожалуйста, как он может обращаться к именам других решений. Я имею ввиду, как, будучи в проекте BookStore.DataAccess он может обращаться к моделям из BookStore.Core. таймкод: 12:24
12:38 А разве использование константы из Core слоя в Data слое не нарушает принцип обратной зависимости? Не лучше ли будет вынести константу в отдельный конфигурационный файл (например appsettings.json), где будут храниться все константы?
Нет, не нарушает, слой Persistence имеет доступ к доменным моделям, как минимум он их возвращает и принимает в репозиториях, поэтому так можно делать. Конечно желательно, чтобы слой Persistence ссылался на Application, а Application на Domain
dotnet ef migrations add название миграции -p путь до проекта с dbcontext -s путь до проекта с api. В документации эта команда есть, можно загуглить dotnet ef migrations
А вот ты создаешь в book.cs метод create и проверяешь title , но даже если у нас будет ошибка в любом случае сожается book ? Если я все правильно понял
Правильнее было бы, сделать возвращаемый тип Book?, и если ошибка есть, то возвращать вместо book - null. А ещё правильнее использовать тип Result, как я делаю в видео про богатую DDD модель
@@SachkovTech, честно, не совсем понял прикол такой реализации. Даже если возвращать null, то где-то на уровень выше прийдётся каждый раз проверять, что нам вернул метод, а если где-то забыть это сделать, то все приложение сломается. Сомнительная практика. Разве не лучше просто выбрасывать исключения?
@@LightChimera Можно просто выбрасывать исключение, но это менее производительно. Тут кому как больше нравится, либо использовать тип Result и делать проверку каждый раз при создании модели или выбрасывать исключение, но жертвовать производительностью
@@SachkovTech out of the blue. возвращать null? rly? это худшее зло, что коллекции, что поодиночные объекты вроде так не плохо все сделал и более или менее понимаешь суть, но иногда у тебя такие высказывания проскакивают, что не имеют никакого отношения к clean code, architecture.
Получается, что валидация происходит не только при создании новой книги, но и каждый раз при получении книг из базы, т.к. там тоже вызывается метод Create. Не будет ли это лишним, в базу ведь и так могли попасть только проверенные значения?
Привет, пару небольших замечаний: 1) Там где const string MAX_TITLE_LENGTH, лучше было его же и вписать в error, вместо магичской 250 2) Вместо кортежа result + error как будто бы напрашивается отдельный класс (Пример у Чапсаса - ua-cam.com/video/YbuSuSpzee4/v-deo.html)
Не знаю задавал ли кто-то этот вопрос, но кто подскажет. В самом начале, когда создавался класс Book, то мы сделали доступное создание новых объектов через статический конструктор. Есть ли название у такого подхода, чтобы почитать побольше или понимать когда его лучше всего использовать? Или возможно это просто элемента какого нибудь паттерна проектирования?
@@SachkovTech Тоесть если тебе нужен постгре то достаточно докер-композ, но если хочешь в докер контейнер положить свое приложение, тогда нужен докерфайл. Понял. Спасибо.
Мы в куче разных мест используем поля Guid Id, string Name и тд. И в будущем если появится новое поле, то его надо так же везде в куче мест добавить. Нельзя где-то в одном месте их прописать и во всех классах использовать?
Помогите понять чистую архитектуру. Почему в слое DataAccess есть зависимости от EF Core? Я везде нахожу информацию, что зависимости от фреймворков должны быть в .Infrastracture. Это нормальная практика или упрощение? Заранее спасибо
Забавный момент который я не сразу заметил. Тут создается контейнер в Докере и запускается но используется при этом обычный сервер Postgresql если я правильно понял. То есть в данном случаи создание контейнера используется как создание БД схемы а работа с БД ведется напрямую через локальный установленный скорее всего сервер Postgresql, а не в докера , ибо если остановить работу контейнера, то о чудо, работа апи не будет выбрасывать ошибки, что докажет что апи работает с сервером. Но видео при этом очень полезное и достаточно хорошо показывает БАЗУ!)
Интересный подход. И всё же есть вопрос. Класс Book, тот , который домейновский, он не противоречит SOLID? Возможно, я что-то не понимаю, но здесь при создании класса у нас одновременно и состояния, и поведение и даже инициализация экземпляра этого же класса, как в Singletone, и там же - валидация. Такое ощущение, как будто мы перегружаем класс. А он является домейновским. Поправьте, если не прав. А вообще объяснение мне очень даже понравилось. Спасибо за труды. Теперь буду следить за вами. Лайк и респект за обучение
У меня постоянно лажа с зависимостями между слоями, а есть больше информации про это? То слой DAL не видит Core то В контроллерах не видно модели или интерфейсы из Core. Как их правильно настраивать, когда несколько проектов в солюшене?
Это я удачно залетел. Давно хотел пощупать React за мяхкое место. С меня лайк и подписка. Так држать. И сразу вопрос. Можно ли добавть итолько страницу на реакте. В Существующие mvc приложение net core 6. Например реализовать админку и странице статистики по каким нибуть item"s?
Зачем классы использовать в таких моделях, есть же рекорды? В три раза меньше писанины, а валидацию вынести в отдельные классы с использованием FluentValidation... По поводу архитектуры мог бы порекомендовать вертикальные срезы - хорошо на скрам ложится, например: ua-cam.com/video/msjnfdeDCmo/v-deo.htmlsi=Iq6zal9K3DCAAIwE
гайд слабый, хоть и понятно, что хотел донести автор, но всё-таки хотелось бы знать, почему так или не так сделано в каком-то конкретном случае(именно ход мыслей и логическое рассуждение, подкрепленнённые фактами из реальной разработки), понимаю, первое видео - проба пера, и в будущем будет лучше, но на такие вещи сразу лучше обращать внимание
Пока фронт не начал показывать, всё понятно было и без вопросов (за исключением пары моментов), Как только начался фронт... Я перестал улавливать логику... Что за иерархия папок, что за компоненты, несколько файлов с book и т.д.😅 Ощущение, что ты спешил очень куда-то 😅
даа, есть такое. наконец-то закончил делать, но использовал сборщик Vite, чисто из-за привычки (все 1 в один, только роутинг иначе реализовал) поначалу все еще понятно было, но под конец куча файлов, стейтов и все перемешалось в голове короче😓 +либо я пропустил, либо реализация кнопки Add Books появилась магическим образом в конце видео)) + у меня почему-то каждая карточка занимает целую строку, но с этим уже разберусь. А так классный урок, определенно, есть чему поучиться. Спасибо огромное
В итоге мало чего объяснил и подача оставляет желать лучшего. В следующих видео постараюсь сделать качественнее, а это можете смело ставить на 2х. Мой телеграм канал - t.me/sachkov_blog
Спасибо за труд. Наоборот, всё очень понятно и доходчиво) Очень полезно и всё доходчиво. Я бэкендер
@@IvanKadrov-e7l Спасибо!
Всё замечательно. Понятно что дальше лучше. Самое главное не опускай руки, так как по .NET очень мало свежих видео и я очень рад что нашёл твой канал так как он очень сильно помог мне в понимание мелких деталей .NET. Спасибо большое)))
продолжай, все учатся на ошибках - главное их замечать и признавать.
Смотрел на 1х не отрываясь
Шикарно, большое спасибо!
Наконец-то кто-то приводит пример, приближенный к реальной разработке
Хоть видео и длинное, но посмотрел на одном дыхании, стал больше понимать, как работает приложение в целом, спасибо
Спасибо!
Опа, это я удачно зашел. Хорошо объясняешь, продолжай в том же духе.
Я фронтендер, появилось больше понимания, как работает бэкенд. Спасибо за видео!)
Спасибо!
ОГРОМНОЕ СПАСИБО! Насколько же полезно!! ❤🔥
@KirillDeveloper видео понравилось, но пример уж слишком простой в данном случае. Мне кажется стоило добавить еще несколько связанных между собой сущностей, чтобы показать как реализовать эту связь в моделях и репозиториях, например как в видео по EF. В любом случае благодарю за видео, продолжай!
Кирилл огромное тебе спасибо!!! Давно хотел фронт пощупать, ты вдохновил)
Спасибо большое! Очень познавательное видео.
Gоod !!! больше нечего и не нужно говорить! спасибо за ваш труд!
Thanks a million for your video it's a good lesson for me. i made api and I will be doing next super Welldone!!!
класс, то что надо, как раз изучаю ASP.NET)
Повторил, все получилось :)
Класс, спасибо! Но явно нужно разбираться с фронтом...
Спасибо, то что нужно.
Очень интересный видос.
Многое непонятно, но это даже здорово, т.к. захотелось углубиться и погуглить отдельно некоторые моменты.
Я далек от фронта, но тоже было интересно, хотелось с чего-то начать. Почему бы не начать с того, что предлагает автор.
Думаю, что пересмотрю видео ещё раз. Спасибо 😊
Спасибо! Узнал много нового, то что не было понятно спросил у Claude
record - это функция, введенная в C# 9.0 (выпущена в 2020 году), которая позволяет создавать неизменяемые (immutable) ссылочные типы с меньшим количеством шаблонного кода. Основные характеристики record:
Неизменяемость по умолчанию
Автоматическая реализация методов Equals(), GetHashCode() и ToString()
Поддержка деконструкции
Возможность использования позиционных параметров
Docker - это платформа для разработки, доставки и запуска приложений в контейнерах
Docker Compose - это инструмент для определения и управления многоконтейнерными приложениями Docker
AsNoTracking() - это метод в Entity Framework Core, который используется для оптимизации производительности при выполнении запросов только для чтения
ExecuteUpdateAsync и ExecuteDeleteAsync - это методы, добавленные в Entity Framework Core 7.0, которые позволяют выполнять массовые операции обновления и удаления без необходимости сначала загружать сущности в память
Спасибо за видео!
Как сделать вижуалку такой же красивой?
Превью версия
есть тема Rider, это не та тема, но тоже красивая
Кирилл, есть возможность предоставить гитхаб с этим проектом?
Позже в телеграм канале выложу
[15:55] Вызов Select после ToListAsync? надо до превращения в лист мэпить. запрос в бд будет чаще всего короче и не придется после создания листа итерироваться по новой
в примечании microsoft рекомендует использовать Add, кроме некоторых исключительных случаев
Добрый день!Спасибо за материал!А есть ссылка на гит с кодом?
Добрый день! Я новичок в чистой архитектуре и на пути изучения. У меня появились вопросы.
1) слой core как я понимаю - это доменный слой( бизнес слой, ядро). Если модели данного слоя это бизнес сущность, то не должны ли все остальные слои зависеть от данного слоя?
2) Могу ошибаться, поправьте, пожалуйста, но если в бизнес сущностях что-то поменяется, то нам надо будет в двух слоях менять?
3) Как я понимаю, сеттеры не добавлены были, дабы, проконсультировать нежелательные вставки в свойства? А нельзя ли это проконтролировать в слое выше, в application, так как это слой бизнес процессов. Так же, не протаскивать доменную сущность до слоя Api. Так же, нормально ли в контроллерах выполнять дополнительные действия такие как силекты и прочее, если их можно в слое application, так как повторюсь, это слой бизнес процессов?
За ранее спасибо! Я ни в коем случае, не хочу никого задеть, это в целях улучшить знания свои и получить фидбек по пробелам.
Привет,на 1:50 про какую логику идет речь, это же просто модели,не ?
Про доменную логику, у моделей может быть большая логика, например модель банкомата
Привет. Не мог бы ты пояснить момент.
Не понятен смысл существования BookEntity.
Действительно ли нам нужно, используя EF codefirst и миграции, юзать эту прослойку? Какие проблемы мы этим решаем? В твоем примере получается просто валидация при чтении из БД, зачем оно надо не понятно.
За труды Спасибо, это самый лучший мануал по теме, который мне удалось найти.
(у меня 20+ лет опыта) Чтобы ответить на твой вопрос предлагаю подумать: А какие есть альтернативы? Как бы ты сделал без этой прослойки?
Важная задача, которую мы решаем: независимость бизнес-логики от инфраструктуры. (EF - это инфраструктура) Т.е. ты можешь взять отдельно проект(ы) относящиеся к бизнес-логике и написать для них тесты вообще не используя EF. Ты можешь перекомпоновать решение вообще без использования именно EF, заменив EF на другую технологию или заменив на обращение к какому-то фасаду, который реализует другая команда разработчиков и ты даже не знаешь как они это делают.
Как ты достигнешь такой гибкости и возможности разрабатывать проект независимо несколькими командами, если у тебя не будет этой прослойки?
Сейчас подумал, что по настоящему осознать необходимость такой гибкости можно только столкнувшись в этим на практике: Над предпоследним проектом, в котором я участвовал, работало несколько сотен разработчиков, это больше десяти отдельных команд, в каждой из которых свое руководство, свои процессы и т.д. Оказавшись в такой ситуации на практике понимаешь как важно организовать максимально независимую работу от других команд. Чтобы баг созданный разработчиком, с которым ты даже не знаком, не мешал твоей работе, отладке и т.д. Почти в каждой команде мы использовали эмуляторы модулей, разрабатываемых другими командами, чтобы их баги не мешали нам работать
Искал любой норм asp тутор, а нашёл золото!
Спасибо, очень познавательно. Есть вопрос: чем плох шаблон "React and ASP.NET Core"? Его используют на практике, или все же обычно используют разделение frontend/backend как в ролике? Спасибо.
Большинство разделяют проекты, чтобы все деплоилось независимо + в шаблоне используется сборщик vite, кому-то может не нравится. Просто если создашь отдельно фронт, то можно вести себя гибче, менять сборщики и тд, поэтому рекомендую делать раздельно
Классный видос, очень помог, Спасибо! еще возник не по теме вопрос, что за тема в vs у тебя?
В некоторых случаях dto же находится на уровне бизнес логики , то есть логика возвращает нужный объект для контроллера , а контроллер просто возвращает , то есть в контроллере минимум логики. Такой вариант более правильнее ?
Зависит от подхода, но если это подход контролер, сервис, репозиторий, то сервис должен возвращать Domain модель, а контроллер маппить её в дто
Подскажите пожалуйста, как он может обращаться к именам других решений. Я имею ввиду, как, будучи в проекте BookStore.DataAccess он может обращаться к моделям из BookStore.Core.
таймкод: 12:24
пространства имен подключай
+ еще надо ссылку на проект добавить
Не нашёл в тг канале ссылку на гитхаб, можно пожалуйста её?
а откуда взять docker-compose файл?
Узнал откуда?
@@a_s_f_a5351 нет, в ручную переписал
создать, автоматом добавить в папку solution items
Хотел спросить, разве валидация на основе атрибутов не более практична? она ведь выглядит проще читается лучше, и в целом более гибкая
12:38 А разве использование константы из Core слоя в Data слое не нарушает принцип обратной зависимости? Не лучше ли будет вынести константу в отдельный конфигурационный файл (например appsettings.json), где будут храниться все константы?
А еще лучше в EnvironmentVariable в файле launchSettings.json
Нет, не нарушает, слой Persistence имеет доступ к доменным моделям, как минимум он их возвращает и принимает в репозиториях, поэтому так можно делать. Конечно желательно, чтобы слой Persistence ссылался на Application, а Application на Domain
В конфиге константы хранить не лучшая идея
Как ты в Visual Studio сделал внешний вид, наподобие внешнего вида vs code?
Это preview версия
на момент с "dotnet ef migrations add " выдет ошибку "Не удалось выполнить, поскольку указанная команда или файл не найдены." В чем может быть дело?
страница не найдена(
в повершеле прописывал миграцию и само окно частично скрыл и не понятно, что там прописывал(
dotnet ef migrations add название миграции -p путь до проекта с dbcontext -s путь до проекта с api. В документации эта команда есть, можно загуглить dotnet ef migrations
@@SachkovTechспасибо за объяснение!
А вот ты создаешь в book.cs метод create и проверяешь title , но даже если у нас будет ошибка в любом случае сожается book ? Если я все правильно понял
Правильнее было бы, сделать возвращаемый тип Book?, и если ошибка есть, то возвращать вместо book - null. А ещё правильнее использовать тип Result, как я делаю в видео про богатую DDD модель
@@SachkovTech, честно, не совсем понял прикол такой реализации. Даже если возвращать null, то где-то на уровень выше прийдётся каждый раз проверять, что нам вернул метод, а если где-то забыть это сделать, то все приложение сломается. Сомнительная практика. Разве не лучше просто выбрасывать исключения?
@@LightChimera Можно просто выбрасывать исключение, но это менее производительно. Тут кому как больше нравится, либо использовать тип Result и делать проверку каждый раз при создании модели или выбрасывать исключение, но жертвовать производительностью
@@SachkovTechТеперь понял мотив, спасибо
@@SachkovTech out of the blue. возвращать null? rly? это худшее зло, что коллекции, что поодиночные объекты
вроде так не плохо все сделал и более или менее понимаешь суть, но иногда у тебя такие высказывания проскакивают, что не имеют никакого отношения к clean code, architecture.
То чувство когда выучил базовый синтаксис и понимаешь, что дальше уже ничего не понимаешь
Получается, что валидация происходит не только при создании новой книги, но и каждый раз при получении книг из базы, т.к. там тоже вызывается метод Create. Не будет ли это лишним, в базу ведь и так могли попасть только проверенные значения?
Сделай еще одно такое видео просто создай полноценный проект и сразу на видео покажи как в нитернет опубликовать проект
Привет, пару небольших замечаний:
1) Там где const string MAX_TITLE_LENGTH, лучше было его же и вписать в error, вместо магичской 250
2) Вместо кортежа result + error как будто бы напрашивается отдельный класс (Пример у Чапсаса - ua-cam.com/video/YbuSuSpzee4/v-deo.html)
Согласен, но решил не усложнять пример и показать саму концепцию, а с переменной, просто забыл так сделать)
про 2 - 100% надо result класс
Не знаю задавал ли кто-то этот вопрос, но кто подскажет.
В самом начале, когда создавался класс Book, то мы сделали доступное создание новых объектов через статический конструктор.
Есть ли название у такого подхода, чтобы почитать побольше или понимать когда его лучше всего использовать? Или возможно это просто элемента какого нибудь паттерна проектирования?
Скинь пожалуйста тему оформления в VS
Это Dracula в visual studio и dracula purple в vs code
А как docker-compose up -d без докерфайла работает?
Он загружает образы(images), если запускаешь свое приложение, то сначала нужно сделать для него докер файл
@@SachkovTech Тоесть если тебе нужен постгре то достаточно докер-композ, но если хочешь в докер контейнер положить свое приложение, тогда нужен докерфайл. Понял. Спасибо.
Да, и ты можешь из своего приложения сделать образ, загрузить его в докер хаб и потом оттуда загружать образ, также, как и с постгрес например
Мы в куче разных мест используем поля Guid Id, string Name и тд. И в будущем если появится новое поле, то его надо так же везде в куче мест добавить. Нельзя где-то в одном месте их прописать и во всех классах использовать?
Ну технически, можно сделать какой то абстрактный класс, от которого мы будем наследоваться, но добавлять эти поля create и update все равно придется(
Помогите понять чистую архитектуру. Почему в слое DataAccess есть зависимости от EF Core? Я везде нахожу информацию, что зависимости от фреймворков должны быть в .Infrastracture. Это нормальная практика или упрощение? Заранее спасибо
Забавный момент который я не сразу заметил. Тут создается контейнер в Докере и запускается но используется при этом обычный сервер Postgresql если я правильно понял. То есть в данном случаи создание контейнера используется как создание БД схемы а работа с БД ведется напрямую через локальный установленный скорее всего сервер Postgresql, а не в докера , ибо если остановить работу контейнера, то о чудо, работа апи не будет выбрасывать ошибки, что докажет что апи работает с сервером. Но видео при этом очень полезное и достаточно хорошо показывает БАЗУ!)
Метко подмечено, в строке соединения должен был бы быть не Host=localhost, а Host=postgres, то есть имя контейнера в докере...
Есть ли смысл использовать шаблон c реактом в VS, там где сборщик vite?
Ещё не использовал vite, но как минимум для изучения, смысл есть
i done everything is it ok asp + next good mix
Интересный подход. И всё же есть вопрос. Класс Book, тот , который домейновский, он не противоречит SOLID? Возможно, я что-то не понимаю, но здесь при создании класса у нас одновременно и состояния, и поведение и даже инициализация экземпляра этого же класса, как в Singletone, и там же - валидация. Такое ощущение, как будто мы перегружаем класс. А он является домейновским. Поправьте, если не прав. А вообще объяснение мне очень даже понравилось. Спасибо за труды. Теперь буду следить за вами. Лайк и респект за обучение
я также считаю, че то много всего происходит в одном классе
spasibo!
У меня постоянно лажа с зависимостями между слоями, а есть больше информации про это? То слой DAL не видит Core то В контроллерах не видно модели или интерфейсы из Core. Как их правильно настраивать, когда несколько проектов в солюшене?
Будет про это видео
Какая тема на вс?
Dracula на vs, dracula purple на vs code
@@SachkovTech спасибо
Мой опыт и здравый смысл говорит, что в данном типе приложений, где по сути только CRUD, использование репозиториев бессмысленно.
ты не мог оставить код. Где код всего этого
Это я удачно залетел. Давно хотел пощупать React за мяхкое место. С меня лайк и подписка. Так држать.
И сразу вопрос. Можно ли добавть итолько страницу на реакте. В Существующие mvc приложение net core 6. Например реализовать админку и странице статистики по каким нибуть item"s?
Спасибо! По идее можно, есть интеграции react в asp net mvc, есть nuget библиотеки для этого, после установки можно будет использовать файлы jsx.
@@SachkovTech Вот и готовая идея для реализации любителей нестандртного програмирования ))
Странно я все делаю как на видео но у меня выдаёт ошибку в Programs.cs а именно в IBooksService и IBooksService он не видит их хоть я ссылку даю.
Как ты решил эту проблему?
Молодец 👍
а что за язык?
C#
Каким образом можно всему этому научиться? 😭
Да это еще только база) Ну а вообще усердными занятиями)
В целом для новичка норм, но namespace...Боль и еще раз боль!
Зачем классы использовать в таких моделях, есть же рекорды? В три раза меньше писанины, а валидацию вынести в отдельные классы с использованием FluentValidation... По поводу архитектуры мог бы порекомендовать вертикальные срезы - хорошо на скрам ложится, например: ua-cam.com/video/msjnfdeDCmo/v-deo.htmlsi=Iq6zal9K3DCAAIwE
так себе. одни нервы. так и не получилось. оказывается на просторах интернета трудно найти. Обычно GRUD приложение
гайд слабый, хоть и понятно, что хотел донести автор, но всё-таки хотелось бы знать, почему так или не так сделано в каком-то конкретном случае(именно ход мыслей и логическое рассуждение, подкрепленнённые фактами из реальной разработки), понимаю, первое видео - проба пера, и в будущем будет лучше, но на такие вещи сразу лучше обращать внимание
Крайне малоинфлрмативный видос, объясняешь почти ничего.
Для новичков плохо объяснил, а профессионал будет скучно такое.
Пока фронт не начал показывать, всё понятно было и без вопросов (за исключением пары моментов),
Как только начался фронт... Я перестал улавливать логику...
Что за иерархия папок, что за компоненты, несколько файлов с book и т.д.😅
Ощущение, что ты спешил очень куда-то 😅
Признаюсь, так и было, с фронтом я в этом видео накосячил, буду теперь разбивать на части такие видео и про фронт отдельно разговаривать)
@@SachkovTech буду ждать
даа, есть такое. наконец-то закончил делать, но использовал сборщик Vite, чисто из-за привычки (все 1 в один, только роутинг иначе реализовал)
поначалу все еще понятно было, но под конец куча файлов, стейтов и все перемешалось в голове короче😓
+либо я пропустил, либо реализация кнопки Add Books появилась магическим образом в конце видео))
+ у меня почему-то каждая карточка занимает целую строку, но с этим уже разберусь.
А так классный урок, определенно, есть чему поучиться. Спасибо огромное