Кол-во лекций: 7
В рамках текущих лекций рассмотрим основной материал, на который будет вынесен акцент в рамках курса.
Цель:
По результатам данной лекции студенты должны иметь представление об архитектуре уровня приложения
Агенда:
Кратко вспомним все то, о чем говорили в рамках предыдущего семестра, про основные принципы ООП, про организацию и структурирование кода.
Плавно перейдем в сторону использования кода в рамках бизнес сценариев, рассмотрим рядовые задачи, которые решает приложение "Обработка пользовательского ввода", "Реализация бизнес логики приложения", "Сохранение данных".
Поверхностно рассмотрим основные архитектуры уровня приложения:
- Структурная, многослойная архитектура + инверсия зависимостей
- Архитектуры, ориентированные на предметную область (Domain Centric)
- Чистая архитектура
- Гексагональная архитектура
- EDA(event driven Architecture) архитектура
- Архитектуры, ориентрованные на масштабирование
- CQRS подход
- Onion Architecture (Интерпретация Clean Architecture)
- Bonus: Чистая архитектура + DDD
Deprecated: Модульные архитектуры (модульный монолит)
Артефакты:
- Презентация (TBD)
- Пример реализации архитектур на уровне программного кода (TBD)
Литература:
- Роберт Мартин "Чистая Архитектура"
- Eric Evans "Domain-Driven Design"
Словарик терминов:
- Архитектура уровня приложения
- Чистая архитектура
- Гексагональная архитектура
- Event Driven Architecture
Цель:
Студенты познакомятся с самой популярной архитектурой, которую используют в повседневных production приложениях, поймут основые плюсы и минусы данных подходов
Агенда:
Освежим то, о чем говорили в рамках предыдущей лекции, поговорим про важность разделения контекста и видов задач (задачи для обработки пользовательского ввода, представления бизнес логики и тд. и тп.)
Начнем "обзорную" экскурсию по каждому из слоев, опишем предназначение User Interface, Business Logic, DAL (Data Access Layer)
Плавно перетикаем в обзор архитектуры, представленной Робертом Мартиным в книге "Чистая Архитектура"
Сравнительный анализ N-Lay Architecture и Clean Architecture
Артефакты:
- Презентация (TBD)
- Пример реализации архитектур на уровне программного кода (TBD)
Литература:
- Роберт Мартин "Чистая Архитектура"
Словарик терминов:
- User Interface Layer
- Business Logic Layer
- Data Access Layer
Цель:
Студенты "по новому" посмотрят на SOLID, поймут какие из принципов и зачем существуют (посмотрим в разрезе Архитектуры приложения), также поверхностно посмотрим на EF, ASP, Mediator
Агенда:
Еще раз кратко пройдемся по основным принципам SOLID, рассмотрим каждый из принципов SOLID в отношении архитектуры уровня приложения:
- S (Single Responsibility Principle) - Класс(модуль) должен иметь одну зону ответственности
- O (Open Closed Principle) - Архитектура приложения должна быть открыта для расширения (нового функционала), но закрыта для модификации (правок в существующем, стабильном кода)
- L (Liskov Substitution Principle) - Это принцип корректного проектирования иерархий и контрактов. Нарушение LSP ведет к хрупкости системы и неожиданным ошибкам в архитектурно значимых компонентах.
- I (Interface Segregation Principle) - Нарушение многофункциональные, "толстые" интерфейсы создают нежелательные зависимости между модулями системы, нарушая их изоляцию.
- D (Dependency Inversion) - DIP переворачивает традиционное направление зависимостей, что является основой для тестируемости, гибкости и всех "чистых" архитектур.
Рассмотрим "демо" архитектуру приложения, которое будет сделано на базе многослойной архитектуры
Артефакты:
- Презентация (TBD)
- Пример реализации архитектур на уровне программного кода (TBD)
Литература:
- Роберт Мартин "Чистая Архитектура"
Цель:
Студенты узнают, как современные фреймворки .NET (ASP.NET Core и Entity Framework Core) реализуют и упрощают создание Presentation и Data Access Layer в многослойной архитектуре. Поймут роль шаблона Mediator (MediatR) для декомпозиции бизнес-логики.
Агенда:
Повторим что такое слой User Interface, посмотрим на практике как оно может быть реализован
- Data Access Layer через призму ORM.
- Что таком ORM, зачем он нужен?
- Entity Framework Core: не как "волшебная палочка", а как инструмент для реализации абстракции DAL.
- Паттерн Repository и Unit of Work реализуем ли мы их поверх EF DbContext/DbSet, или DbContext и есть их реализация?
- Presentation Layer через призму веб-фреймворка
- ASP .NET как инфраструктура для входящих запросов
- Контроллеры, которые реализуют "Входные точки" (entry points)
- Шаблон "Mediator" как "клей"
- Проблема "раздудых" сервисов и контроллеров
- Что такое MediatR, как этот паттерн позволяет достигать low coupling
Артефакты:
- Презентация (TBD)
- Пример реализации архитектур на уровне программного кода (TBD)
Литература:
Словарик терминов:
- ORM (Object Relation Mapping)
- DbContext
- Контроллер, Endpoint
- DTO (Data Transfer Object)
- Медиатор (Mediator), Команда (Command), Запрос (Query)
Блок лекций в формате nice to have, закладываем на случай если успеем расказать основной материал быстрее
Цель:
Агенда:
Студенты разберутся в основных архитектурных паттернах уровня представления (Presentation Layer), поймут их различия, сферы применения и то, как они соотносятся с ASP.NET Core и клиентскими технологиями (WPF, Blazor, Xamarin).
Артефакты:
Литература:
Цель:
Студенты погрузились в нюансы реализации приложения на уровне архитектуры приложения и кода, на оставшихся лекциях рассмотрим, то как проектируются объемные систмы, где взаимодействует множество един
Агенда:
Коротко повторим все то, о чем говорили в рамках предыдущих 5 лекций
Артефакты:
- TODO
Литература:
- TODO
Словарик терминов:
- TODO
¶ Лекция 7: DDD Domain Driven Design
Цель:
- TODO
Агенда:
- TODO
Артефакты:
- TODO
Литература:
- TODO
Словарик терминов:
- TODO
Цель:
- TODO
Агенда:
Студенты получили базовое представление того как устроена архитектура приложения в целом и архитектура отдельных блоков кода, далее хотелось бы поговорить о перспективах развития в этой области
Артефакты:
- TODO
Литература:
- TODO
Словарик терминов:
- TODO