ASP.NET Core - чистая, луковая АРХИТЕКТУРА для новичков | Структура проекта

Поділитися
Вставка
  • Опубліковано 2 лис 2024

КОМЕНТАРІ • 46

  • @KirillSachkov
    @KirillSachkov  7 місяців тому

    Мой телеграмм канал с роадмап для начинающих и полезным контентом - t.me/sachkov_blog

  • @Эмиль-х5ф
    @Эмиль-х5ф 7 місяців тому +19

    Классные видео. Очень хотелось бы новое видео по созданию своего веб проекта. Но на этот раз было бы классно увидеть что-то большее грандиозное, чтобы видео было на 3-5 часов, было бы очень интересно))

  • @АртемийКонь
    @АртемийКонь 7 місяців тому +6

    Твой канал просто находка, спасибо)

  • @Easycore2000
    @Easycore2000 7 місяців тому +3

    Ещё не посмотрел, а лайк поставил. Контент в кайф как и всегда

  • @lamenz6840
    @lamenz6840 7 місяців тому +4

    Ждём глубокое видео по автотестированию! С теорией

  • @Im_like_Merphy
    @Im_like_Merphy 7 місяців тому +1

    Спасибо огромное, очень приятно смотреть ваши видео :)

  • @АлексейСоколов-щ3з6ю
    @АлексейСоколов-щ3з6ю 7 місяців тому +1

    Контент топ! Давно хотел качественного материала по этой теме

  • @r.prybluda
    @r.prybluda 7 місяців тому +2

    Круто! Спасибо за видос. Очень информативно.
    Как раз пишу pet project и еще раз убедился, что мне достаточно DAL, DOMAIN и WebAPI.

  • @Myredades
    @Myredades 7 місяців тому +1

    Большой тебе респект, материал просто сказка

  • @ЛеонидФещук-ф9о
    @ЛеонидФещук-ф9о 7 місяців тому +2

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

  • @rolpogo
    @rolpogo 7 місяців тому +2

    Ну наконец-то видео для новичков, обрадовался я. Но посмотрев, опять ничего не понял 🤦‍♂

  • @playvirtul5588
    @playvirtul5588 7 місяців тому +1

    Спасибо за видео

  • @alexandralikin3830
    @alexandralikin3830 7 місяців тому +1

    Спасибо, годнота🤗

  • @ilyaseverskiy9835
    @ilyaseverskiy9835 7 місяців тому +3

    Можешь сделать видео по unit тестам

  • @nikoleynikk4250
    @nikoleynikk4250 7 місяців тому +3

    Можешь сделать видео по тестам

  • @nichego1
    @nichego1 2 місяці тому

    Спасибо за ролик. Когда выйдет видео про onion архитектуру?🤔

  • @adkhamjonuzokov8960
    @adkhamjonuzokov8960 7 місяців тому +2

    А разве не должно быть Persistense -> Application -> Core (Logic)?

  • @yava43
    @yava43 6 місяців тому +1

    ну и ещё мне кажется мутно создавать заместо папок проекты. В данном случае ты создал проект инфраструктуры и поместил в нём класс для работы с внешними приложениями. Как мне кажется, для "работы с внешними приложениями" нужно создать отдельный проект.
    PS бро, без негатива, ты ультра красавчик, архитектура клёвая. внес лепту для обсуждения :D like

  • @oooooowww
    @oooooowww 7 місяців тому +1

    Круто! Спасибо за видео!
    С помощью чего лучше передавать аргументы из методов контроллера в методы сервисов? В видео показано с помощью доменных моделей, а что если в доменной модели нет того, что приходит с контроллера? Можно ли передать dto модели или лучше просто перечислить аргументы: ServiceMethod(int userId, userName ...) {}

    • @KirillSachkov
      @KirillSachkov  7 місяців тому +1

      В слое domain можно создать нужные дтомодели, например для фильтров. Или если параметров немного, то можно прямо в метод параметры передать, если их не больше 2-3

  • @gretings
    @gretings 7 місяців тому +1

    Спасибо, за объяснение этой темы на простом языке, но вот эти моменты остались непонятны:
    1) Каким образом применяется CreateOrderRequest в методе действия Create. То есть как должен выглядеть запрос от клиента, чтобы он поступил в метод действия Create и при этом был параметром Name? Плохо понял суть этого рекорда.
    2) И в какой ситуации уместен второй архитектурный вариант? Мне как новичку он кажется сложнее и непонятно, чем он лучше первого варианта.

    • @KirillSachkov
      @KirillSachkov  7 місяців тому +1

      Почитай про model binding, клиенту нужно передать json { "name" : "test" }, то есть объект с ключом name. А второй подход нужен для разделения в проекте по фичам, полезно, когда используются подход cqrs. А для новичков лучше использовать первый подход

  • @yava43
    @yava43 6 місяців тому +1

    а если бд 2 и больше ? к примеру одни данные мы получаем с одной базы через дапер, другие данные через ef и тд. как в таком случае поступать?

  • @Денис-д1у2д
    @Денис-д1у2д 24 дні тому

    Я так понял, что ты вместо Repository испольщуешь Store, но суть ведь одна и та же. Также упоминаешь про спецификации и тут же показываешь класс с фильтрами.

  • @Nik-cv5bi
    @Nik-cv5bi 25 днів тому

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

    • @KirillSachkov
      @KirillSachkov  25 днів тому +1

      В слое с контроллерами, а бизнес логика в use cases все равно

    • @Nik-cv5bi
      @Nik-cv5bi 24 дні тому

      @@KirillSachkov извини я немного запутался, но получается что контроллер вызывает методы gRPC сервиса находясь с ним на одном слое так? А сервис уже идет дальше?

  • @burovalex88
    @burovalex88 7 місяців тому +1

    Спасибо! Всё понять не могу, в каком слое должен лежать дто?

    • @KirillSachkov
      @KirillSachkov  7 місяців тому

      Если разделяешь приложение на фичи или подход с командами и запросами, то дто должны лежать в application рядом с хэндлером. Если испольуешь просто сервисы, то дто должны лежать в слое с api, например в папке contracts

  • @Georgiy_AK
    @Georgiy_AK 4 місяці тому

    Благодарю за информацию! Не поятен слой Application, какую функцию он выполняет? Опишу что я понял, если что то не так, прошу поправьте меня.
    Слой Logic(Core) - содержит бизнес-сущности и интерфейс для каждой сущности с описанием того что можно с ней делать (CRUD операции например)
    (В идеале он не знает про другие слои)
    Слой Persistence - содержит логику с ВНУТРЕННИМИ данными (БД приложения, ORM), в нем происходит реализация интерфейсов из слоя Logic(Core). Может содержать более мелкие сущности.
    Слой Infrastructure - содержит логику с ВНЕШНИМИ данными (например какие либо APIшки), в нем так же происходит реализация интерфейсов из слоя Logic(Core).
    Слой Web API/ MVC - слой клиента, ссылается на все слои.
    Еще может быть доп. слой Tests - слой с тестами приложения.

  • @bumblez.5599
    @bumblez.5599 7 місяців тому +1

    Здравствуй.
    Всё шикарно, но всё ещё не понимаю момент. вижу у большинства такое деление проекта на слои,но написавши 5 проектов и всегда разделявши слои на обычные папки так и не увидел разницы. Объясни, будь добр, в чем недостаток и различие?

    • @KirillSachkov
      @KirillSachkov  7 місяців тому +1

      Как минимум не получится сборку одного проекта, например доменную область, использовать в других проектах. Разбиение по папкам не устанавливает физическую защиту от компонентов. Например если в приложении есть репозитории, то подразумевается их использование в сервисах, если делать через папки, то ничего не мешает получить ссылку на тот же dbcontext.+ Все слои кроме api, должны быть максимально независимы и общаться через контракты, когда у тебя папки, то ничего не мешает использовать реализации, вместо интерфейсов.

    • @bumblez.5599
      @bumblez.5599 7 місяців тому +1

      @@KirillSachkov, спасибо!🙂
      Аж страшно стало от стольких недостатков, пойду менять структуру последнего проекта, пока не разросся 😂😂

  • @yava43
    @yava43 6 місяців тому +4

    с толку сбивает реализация паттерна репозиторий. Ты не создаешь интерфейс INameRepository, а создаешь INameStore (что значит store) и пихаешь его на уровень Domain. По логике, всё что взаимодействует с базой находится на уровне Infrastructure или, как ты отделил, на уровне Persistance

  • @of_youtube
    @of_youtube 7 місяців тому

    А если все контракты вынести в отдельную сборку

  • @andreyberkov1
    @andreyberkov1 5 місяців тому

    Конечно по проще бы объяснял было бы классно, не все новички понимают что такое юзкейс и т.д. вместо этого как то более попроще слова подбирал бы... констракт.. хз что это, очень тяжело въезжать когда новичок. примерно как в SimpleCode канал.. там автор как для тупых объясняет.. все понятно. а так молодец, канал топ.

    • @Georgiy_AK
      @Georgiy_AK 4 місяці тому

      как раз все понятно, нужно быть полным дураком что бы не понять что такое контракт :) Да и не совсем соглашусь с твоим мнением, потому как совсем новички не будут смотреть как построить архитектуру приложения, а тем кто уже имеет определенный опыт, нужно расширять словарь :)

    • @andreyberkov1
      @andreyberkov1 4 місяці тому

      @@Georgiy_AK работаю по направлению проектирование многоэтажных домов по разделу КЖ главным конструктором. так получилось что пару лет назад перешли с автокада в ревит и требовалось знание шарпа. потом затянуло в веб.. профессиональных знаний в вебе не имею, но пару сайтов уже сделал, простых правда.. Поэтому и терминов многих не понимаю, в отличии от самого материала, который автор излагает, и поэтому сложновато осмысливать данное видео.. Но если ты работаешь в данной сфере, то мне кажется тебе не особо должно быть интересно это видео, если ты только не начинающий джун. и да.. молодец что хоть ты не полный дурак, хоть ктото...!

    • @andreyberkov1
      @andreyberkov1 4 місяці тому

      @@Georgiy_AK Конечно по проще бы объяснял было бы классно, не все новички понимают что такое юзкейс и т.д. вместо этого как то более попроще слова подбирал бы... констракт.. хз что это, очень тяжело въезжать когда новичок. примерно как в SimpleCode канал.. там автор как для тупых объясняет.. все понятно. а так молодец, канал топ.

  • @МихаилТанана-м4ь
    @МихаилТанана-м4ь 4 місяці тому +1

    Это не чистая архитектура, а "отсебятина". Посмотрите на картинку дядюшки Боба и поймите где у него живет DB. Как только вы свой слой Logic (Entities - по Бобу) связали со своим слоем Persistence - у Вас все пошло не так. В книге, дядюшка Боб специально для Вас написал отдельную главу База данных - это деталь

  • @emorto2203
    @emorto2203 6 місяців тому +1

    плохо что не показываешь как проект с 0 создаешь, этого мне лично не хватает

  • @kobakamladze4175
    @kobakamladze4175 7 місяців тому +1

    Я нашел золота

  • @zerotonyq
    @zerotonyq 5 місяців тому

    Кафка - это брокер, а не дб 😂

  • @talgis4169
    @talgis4169 7 місяців тому

    Динозавры ООП учат веб программированию 😂😂😂 - проснись! Ты под капот хоть заглядывал? Ездишь на корыте!