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

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 มี.ค. 2024
  • В этом видео я расскажу о чистой архитектуре для проекта Asp Net Core.
    ✅ Подписаться на Telegram: t.me/sachkov_blog
    ✅ Поддержать денежкой: boosty.to/sachkov/donate

ความคิดเห็น • 40

  • @KirillSachkov
    @KirillSachkov  3 หลายเดือนก่อน

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

  • @user-ty4nc7fk5q
    @user-ty4nc7fk5q 3 หลายเดือนก่อน +16

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

  • @user-ow1sd5mt6y
    @user-ow1sd5mt6y 3 หลายเดือนก่อน +5

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

  • @Im_like_Merphy
    @Im_like_Merphy 3 หลายเดือนก่อน +1

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

  • @lamenz6840
    @lamenz6840 3 หลายเดือนก่อน +4

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

  • @user-gk3ji3dq2p
    @user-gk3ji3dq2p 3 หลายเดือนก่อน +1

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

  • @Easycore2000
    @Easycore2000 3 หลายเดือนก่อน +3

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

  • @user-xu7qx9zz4t
    @user-xu7qx9zz4t 3 หลายเดือนก่อน +1

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

  • @playvirtul5588
    @playvirtul5588 3 หลายเดือนก่อน +1

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

  • @alexandralikin3830
    @alexandralikin3830 3 หลายเดือนก่อน +1

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

  • @r.prybluda
    @r.prybluda 3 หลายเดือนก่อน +2

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

    • @KirillSachkov
      @KirillSachkov  3 หลายเดือนก่อน

      Спасибо, здорово!

  • @rolpogo
    @rolpogo 3 หลายเดือนก่อน +1

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

  • @user-hq2vp4ch4p
    @user-hq2vp4ch4p 3 หลายเดือนก่อน +1

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

  • @yava43
    @yava43 2 หลายเดือนก่อน +1

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

  • @Georgiy_AK
    @Georgiy_AK 3 วันที่ผ่านมา

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

  • @ilyaseverskiy9835
    @ilyaseverskiy9835 3 หลายเดือนก่อน +3

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

  • @nikoleynikk4250
    @nikoleynikk4250 3 หลายเดือนก่อน +3

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

  • @yava43
    @yava43 2 หลายเดือนก่อน +3

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

  • @yava43
    @yava43 2 หลายเดือนก่อน +1

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

  • @adkhamjonuzokov8960
    @adkhamjonuzokov8960 3 หลายเดือนก่อน +2

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

  • @oooooowww
    @oooooowww 3 หลายเดือนก่อน +1

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

    • @KirillSachkov
      @KirillSachkov  3 หลายเดือนก่อน +1

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

  • @burovalex88
    @burovalex88 3 หลายเดือนก่อน +1

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

    • @KirillSachkov
      @KirillSachkov  3 หลายเดือนก่อน

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

  • @gretings
    @gretings 3 หลายเดือนก่อน +1

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

    • @KirillSachkov
      @KirillSachkov  3 หลายเดือนก่อน +1

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

  • @bumblez.5599
    @bumblez.5599 2 หลายเดือนก่อน +1

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

    • @KirillSachkov
      @KirillSachkov  2 หลายเดือนก่อน +1

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

    • @bumblez.5599
      @bumblez.5599 2 หลายเดือนก่อน +1

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

  • @zerotonyq
    @zerotonyq 23 วันที่ผ่านมา

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

  • @kobakamladze4175
    @kobakamladze4175 3 หลายเดือนก่อน +1

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

  • @of_youtube
    @of_youtube 3 หลายเดือนก่อน

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

  • @emorto2203
    @emorto2203 หลายเดือนก่อน +1

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

  • @andreyberkov1
    @andreyberkov1 22 วันที่ผ่านมา

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

    • @Georgiy_AK
      @Georgiy_AK 3 วันที่ผ่านมา

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

    • @andreyberkov1
      @andreyberkov1 8 ชั่วโมงที่ผ่านมา

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

    • @andreyberkov1
      @andreyberkov1 5 ชั่วโมงที่ผ่านมา

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

  • @talgis4169
    @talgis4169 3 หลายเดือนก่อน

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