Трехтировое (трехслойное) приложение

Поделиться
HTML-код
  • Опубликовано: 26 янв 2025
  • Продолжаем обсуждение декомпозиции. В этот раз я остановился на очень важной концепции - трехуровневом (трехзвеном, трехлеерном) приложении
    Полный плейлист: • Основы архитектуры при...

Комментарии • 47

  • @DmitrijRuss
    @DmitrijRuss 9 лет назад +15

    Благодарю за видео, Сергей. Вас приятно слушать - у вас приятный голос и смотреть, поскольку видно, что вы получаете от этого удовольствие. Успехов вам!

    • @DmitrijRuss
      @DmitrijRuss 9 лет назад

      ***** любите рок - это хорошо. У вас есть аудиозаписи музыки, которую играла ваша группа, аудиозаставка ваших рук дело?

  • @K8Abadzheva
    @K8Abadzheva 2 года назад

    Смотрю вам по рекомендации своего джава-ментора. Спасибо огромное!

  • @b.g.5106
    @b.g.5106 4 года назад +3

    Привет из 2020 г . Спасибо за это видео

  • @andyanderson222
    @andyanderson222 Год назад

    Очень хорошее объяснение. Большое спасибо!

  • @alexandrbaranezky3029
    @alexandrbaranezky3029 9 лет назад +1

    Дякую тобi Сергій. Дуже цікаво...

  • @scrsa
    @scrsa 9 лет назад +2

    То есть в такой архитектуре нет места для хранимых процедур БД? (ну если конечно не вся бизнес логика на PL/SQL описана)
    А вообще хотелось бы узнать ваше мнение по поводу расположения бизнес логики в приложениях активно работающих с БД

  • @andrii-marynets
    @andrii-marynets 9 лет назад +2

    розкажіть в якомусь із наступних відео про TDD в ентерпайзі та взагалі

  • @ConfidenceGold
    @ConfidenceGold 3 года назад

    Спасибо, прилетела более менее крупная задачка, смотрю и учусь.
    CRUD это не retrieve, a read)

  • @TheHNKNTOS
    @TheHNKNTOS 9 лет назад +3

    Сейчас всё прекрасно слышно. В прошлых видео были проблемы со звуком при записи экрана, наверное это было шумоподавление.

  • @maxlich9139
    @maxlich9139 7 лет назад +1

    12:00 что-то не понял: так минуя бизнес-логику, напрямую, или нет?

  • @GMByteJavaTM
    @GMByteJavaTM 9 лет назад +1

    Класс! Спасибо, очень интересно! :-)

    • @GMByteJavaTM
      @GMByteJavaTM 9 лет назад

      ***** Спасибо за ваш труд! Продолжайте в том же духе :-)

    • @GMByteJavaTM
      @GMByteJavaTM 9 лет назад

      ***** :-)

  • @ИмяФамилия-у2у4л
    @ИмяФамилия-у2у4л 9 лет назад +5

    Спасибо за видео, Сергей! Вопрос - а разве эта "Трехтировая архитектура", не есть чистокровное MVC?

    • @rudolfsikorsky7900
      @rudolfsikorsky7900 3 года назад

      @@FreemanFromSteppe MVC - это Model-View-Controller. Очень понятно объяснено здесь: ruclips.net/video/Z9dvZyEofAg/видео.html

  • @sergeyshestakov4936
    @sergeyshestakov4936 Год назад

    Спасибо

  • @denyskrupenov2246
    @denyskrupenov2246 5 лет назад

    Покороче и почаще это верно по всей видимости :)

  • @user-not_defined
    @user-not_defined 7 лет назад

    Прекрасно объясняет

  • @qr46654
    @qr46654 4 года назад +2

    Если правильно понял, то "бизнес-логика" должна размещаться в контроллере, но, например в статье про MVC, на Википедии ( ru.wikipedia.org/wiki/Model-View-Controller#Наиболее_частые_ошибки ), указано, что - это ошибочно и ее следует размещать в "модели". В MVP - бизнес-логика - в Presenter ( ru.wikipedia.org/wiki/Model-View-Presenter ).
    Где же размещать "бизнес логику" и почему?

    • @ЛёхаБодунов-б7ж
      @ЛёхаБодунов-б7ж 4 года назад +2

      Я джун, поэтому к моему ответу отнеситесь критически, если я сказал чушь - пусть опытные товарищи подскажут, где я неправ. MVC - это архитектурный паттерн, который отвечает за взаимодействие бизнес логики и пользовательского интерфейса. И он является надстройкой над трёхслойной моделью. View и Controller относится к UI, а всё остальное к Model. Задача View состоит в представлении интерфейса для пользователя, будь то отрисовка со всякими анимациями или что-то ещё. Больше она ничем не занимается. Контроллер же отвечает за взаимодействие пользователя с бизнес-логикой. Никогда не использовал MVC, так что я могу быть не прав. В MVP бизнес логика не находится в презентере, он отвечает за представление, и в нём находится только логика непосредственно интерфейса, он управляет VIew, туда приходит пользовательский ввод, он же обеспечивает взаимодействие с Model. Допустим ваше приложение считает сколько калорий вы получили, сколько потратили, следит за здоровьем и всё в таком духе. Убрали View Controller или View Presenter, перешли например на MVVM, переписали под другой фреймворк, дизайнер сделал полностью новый дизайн. Бизнес логика не изменилась. Приложение по-прежнему считает калории и следит за вашим здоровьем. Данные точно так же сохраняются в бд и загружаются на облако. Надеюсь понятно всё объяснил и нигде не ошибся.

    • @ЛёхаБодунов-б7ж
      @ЛёхаБодунов-б7ж 4 года назад

      Хотя мне кажется, Сергей уже ответил на этот вопрос в своём видео, но я этого не видел.

  • @venom5583
    @venom5583 9 лет назад

    Внезапный переход с процедурного видео на обьектно-ориентированное :D

  • @voksus
    @voksus 8 лет назад

    Видео хоть и не новое, но я как-то не понял откуда взялась новая интерпретация для CRUD? (где-то с 10й минуты видео)
    Wiki об этом использует другие слова.
    Сокр. от англ.: Create, Read, Update, Delete - т.е. «создать, прочесть, обновить, удалить».
    Или это что-то новенькое у тебя?

  • @nmodonov
    @nmodonov 3 года назад

    Привет 2021.
    MVC выросло из этой же концепции? Или это она и есть? Или MVC существовала и в 2015, а три уровня - это про другое?

    • @MrRagday
      @MrRagday 3 года назад

      мвс появилось в 79 году. трехслойная архитектура появилась позже.

  • @sergiuszlech8607
    @sergiuszlech8607 4 года назад

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

  • @lexzcq
    @lexzcq 9 лет назад +1

    У меня появился такой вопрос - а как собственно реализуется в коде взаимодействие этих слоёв? Тоесть банально используются геттеры и сеттеры или же всё таки как-то иначе?

    • @MichioSempai
      @MichioSempai 5 лет назад

      Обычно элементы этого приложения разнесены физически. А значит их связь происходит через какой нибудь Rest API

  • @ostvsvl7712
    @ostvsvl7712 5 лет назад

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

    • @SergeyNemchinskiy
      @SergeyNemchinskiy  5 лет назад

      эм. что именно рассказать? У меня есть тренинг про энтерпрайз паттерны, там немного дофига материала. Вот он: foxminded.com.ua/enterprise-patterns-advanced-course/

    • @ostvsvl7712
      @ostvsvl7712 5 лет назад

      @@SergeyNemchinskiy ​ Уточню вопрос. Есть клиентское приложение, функционал которого расширяется плагинами. Стоит ли в один плагин включать все три слоя: данные/логика/гуй, а основное приложение просто сервис для отображения гуев от плагинов+работа с запросами к серверу. Или стоит работать в другой конфигурации?

  • @algotua
    @algotua 9 лет назад

    Классные видео. Еще бы микрофон выносной был, вообще бы было замечательно :)

    • @cgstudio2010
      @cgstudio2010 9 лет назад

      ***** Думаю здесь замечание не на громкость звука, а на качество :-)

    • @algotua
      @algotua 9 лет назад

      ***** Слышно, но копеечная петличка сделает качество звука намного лучше.

  • @ronrcf
    @ronrcf 9 лет назад

    Спасибо за видео такие байки для меня очень актуальны!
    У меня вопрос про JPA (Java Pesistence API).
    Считаете ли вы JPA слоем DAO? Если нет не могли бы вы пояснить почему.
    Я пришел к выводу что таки ДА JPA это оно самое DAO и есть. И вот как я к этому мнению пришел.
    Постигаю Java опытом.=) Пишу небольшой проект интернет магазина. Взял Servlet API и JPA. Решил начать работу с DAO слоя. DAO объектах стал писать логику JPA запросов и в итоге понял что мои DAO будут пополнятся методами определяющими конкретные запросы что отдает неприятным душком.) Решил отрефакторить) из чего стала получатся какая-то обертка над JPA и Creteria API что тоже отдает не очень.) В итоге пришел к выводу что JPA и есть DAO слой а логику запросов стоит вынести в бизнес сущности манипулирующие коллекциями объектов.

    • @lexzcq
      @lexzcq 9 лет назад +1

      Сергей Кондратьев а разве JPA не есть частный случай (на уровне языка) реализации DAO концепции? Кстати, а почему вы начали с DAO слоя, а не со слоя Domain? Ведь в именно в нём реализуется все бизнес процессы, а DAO и UI слои отвечают за "техническую поддержку" (фактически работу) самой бизнес логики реализованной как раз в Domain слое.

    • @ronrcf
      @ronrcf 9 лет назад

      Похоже так и есть. Меня смущало то что в JPA нужно конструировать запрос как SQL. Мне казалось DAO должно состоять из методов получающих параметры для запросов и возвращающих бизнес сущности. В итоге JPA стал вторым SQL. А когда я попытался сделать DAO гибче получилась какая-то обертка над JPA. Цель проекта получить опыт использования различных API как в данной итерации это Servlet API и JPA.

  • @TheKotopec
    @TheKotopec 5 лет назад

    14:21 -☝

  • @antaki93
    @antaki93 Год назад

    Насколько я знаю, трёхуровневая архитектура описывает несколько(!) приложений, разнесённых физически и взаимодействующих по сети (см. хотя бы Википедию). А вы здесь описываете шаблон построения одного(!) приложения. Т.е., по сути, под ваше описание скорее подходит какой-нибудь MVP.

  • @volodyakrajetsky8245
    @volodyakrajetsky8245 9 лет назад

    Можеш розказати про потоки, асинхронність і взаємодію між рівнями 3-рівневої архітектури?

    • @volodyakrajetsky8245
      @volodyakrajetsky8245 9 лет назад

      ***** ну ти ж професіонал і тому, я прошу в тебе щоб ти якраз розказав про всю цю жесть, з точки зору досвідчиного дева, бо в "ентерпрайзі" це досить часто зустрічається.

    • @volodyakrajetsky8245
      @volodyakrajetsky8245 9 лет назад

      значить тобі більше везе))

  • @aset2335
    @aset2335 9 лет назад +2

    Знаменитый "китаец" Yong Mook Kim кореец

  • @HELLO_AGAIN
    @HELLO_AGAIN 4 года назад

    CRUD - Create Read Update Delete

  • @petroandriiets8842
    @petroandriiets8842 9 лет назад

    Кто дислайк влепил? А ну по айпи его вычислять и адрес мне... :)

    • @petroandriiets8842
      @petroandriiets8842 9 лет назад +4

      ***** ага. Иван Головач ставит дислайки, скорее всего. :)))