Скоро на All-DAR Архитектура и структура .NET веб-приложений. Проектирование ASP.NET Core сервисов [Кирилл Сачков]

ALL DAR Bot

🛡 МОДЕРАТОР 🛡
Регистрация
26 Март 2018
Сообщения
85.110
Название: Архитектура и структура .NET веб-приложений. Проектирование ASP.NET Core сервисов [Кирилл Сачков]

ac40130e3dcb1030d83ce2e949c5f631.png


Описание:
На этом интенсиве вы с нуля освоите проектирование и разработку современных .NET веб-приложений с использованием ASP.NET Core! Этот интенсив подойдет как для начинающих, так и для опытных разработчиков, которые хотят углубить свои знания в архитектуре, проектировании и создании масштабируемых веб приложений.

15 уроков / 13 часов

+ стрим с ответами на вопросы

Почему этот интенсив?

Практико-ориентированный подход: каждый этап сопровождается реальными примерами и заданиями

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

Актуальные технологии: ASP.NET Core, REST API, EF Core, FluentValidation, Scrutor, CQRS и многое другое

Свой проект: вы узнаете, какие идеи и проекты можно реализовать на ASP.NET Core, и сможете придумать свою уникальную идею для нового проекта

Для кого этот интенсив:

Разработчики, которые хотят улучшить свои навыки в проектировании и архитектуре .NET веб-приложений.

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

Все, кто хочет создать свой уникальный пет проект на ASP.NET Core, который поможет при трудоустройстве.

Результат:

Вы сможете самостоятельно проектировать и разрабатывать сложные .NET веб-приложения, используя лучшие практики и современные архитектурные подходы.

Не упустите возможность прокачать свои навыки и стать специалистом в разработке .NET веб-приложений!

Программа интенсива

Урок 1. Продумывание идеи и проектирование проекта

Урок 2. Проектирование REST API

Урок 3. Выбор архитектуры для проекта: монолит, модульный монолит, микросервисы

Урок 4. Чистая архитектура

Урок 5. Создание репозитория и проекта, создание основных сущностей

Урок 6. Настройка проекта: editorconfig, stylecop. Создание контроллера

Урок 7. Application слой

Урок 8. Инфраструктурный слой

Урок 9. Работа с ошибками, как правильно работать с Exceptions

Урок 10. Result паттерн

Урок 11. Реализация других бизнес фич

Урок 12. Разделение сервиса на обработчики (Hanlders)

Урок 13. Получение данных из бд и других источников

Урок 14. Модульный монолит

Урок 15. Github actions

Спойлер: Программа подробно: Урок 1. Продумывание идеи и проектирование проекта

Какие бывают проекты и как придумать идею для проекта?

Конкретные примеры идей

Определяем функционал веб-приложения

Проектирование предметной области

Модули. Как правильно разделить проект на модули

Как устанавливать связь между модулями

Cohesion, что это и для чего нужно

Coupling, что это и для чего нужно

Урок 2. Проектирование REST API

Проектирование REST API. Что такое REST API?

Создание ресурса, метод POST

Получение ресурса, метод GET

Зачем иногда следует использовать POST вместо GET

Получение ресурса по ID

Обновление ресурса

Удаление ресурса

Важные правила при проектировании REST API

Проектирование более сложных endpoint'ов

Урок 3. Выбор архитектуры для проекта: монолит, модульный монолит, микросервисы

Какую архитектуру выбрать для проекта? Монолит, модульный монолит, микросервисы

Монолитная архитектура

Модульный монолит

Микросервисная архитектура

Урок 4. Чистая архитектура

Чистая архитектура, что это и зачем нужно?

Какие раньше были архитектуры?

Что такое бизнес логика?

Основные концепции чистой архитектуры

Слои в чистой архитектуре. Первый слой — Entities

Внешние слои

Пример проекта с чистой архитектурой

Урок 5. Создание репозитория и проекта, создание основных сущностей

Создание репозитория

Создание проекта

Добавление .gitignore

Создание канбан доски для задач

Работа с ветками и задачами

Создание доменного проекта

Создание моделей в предметной области

Почему GUID а не long?

Анемичная и богатая модель

Связи между моделями и модулями

Прямая ссылка или Guid

Решение проблемы nullable reference

Древовидная структура, parent — children

Проектирование других сущностей

Урок 6. Настройка проекта: editorconfig, stylecop. Создание контроллера

Коммит и пуш изменений, пуллреквест и мерж

Создание Asp Net Core проекта

Создание слоя Presenters с контроллерами

Настраиваем swagger и open api

Editorconfig и stylecop, анализатор кода

Directory.Build.props для чего нужен

Проект WEB против Presenters

Методы в контроллере на практике

ActionResult и статус коды

Параметры в методах контроллера [FromBody] и другие

DTO модели

Проект с контрактами

Пишем остальные HTTP методы на практике

Получение данных. HTTP GET метод

Обновление данных. HTTP PUT метод

Удаление данных. HTTP DELETE метод

Другие HTTP методы для различных фич

Урок 7. Application слой

Коммит и пуш изменений

Формируем задачу, работа с Application слоем

Документация enum'ов

Зачем нужен Application слой

Создание Application слоя на практике, установление зависимостей

Создаём первый сервис. Что такое сервис

Какие параметры должен принимать сервис

Формируем бизнес сценарий в сервисе

Создание сущности в сервисе

Как работать с базой данных в Application слое. Dependency inversion принцип.

Что такое репозиторий и зачем он нужен

Какие модели использовать для работы с базой данных? Domain vs DTO vs Datamodels

Почему нужно начитать разработку с интерфейсов?

Какие должны быть папки в проекте? Как распределить файлы по папкам

Как писать логи

Работа с валидацией. Основные концепции. Где должна быть валидацияВалидация входных параметров. Валидация бизнес логики

FluentValidation, как пользоваться библиотекой?

Валидация бизнес логики. Правила в сценариях

Как использовать сервисы в контроллерах

Как и где правильно регистрировать зависимости

Урок 8. Инфраструктурный слой

Инфраструктурный слой, что это и для чего нужен

Создание инфраструктурного слоя для базы данных

Инверсия зависимостей, объясняю на примере

Нужно ли использовать репозитории

Пример как можно реализовать сидирование

Что ещё может быть в инфраструктуре? Примеры инфраструктурных слоёв

Как регистрировать инфраструктуру в DI? Extension методы

Подвожу итоги по инфраструктуре

Урок 9. Работа с ошибками, как правильно работать с Exceptions

Почему важно правильно работать с ошибками

Создание кастомных Exceptions

Класс Error и Shared проект. Правильно работаем с ошибками

Как вернуть ошибки валидации с помощью Exception

Как правильно обрабатывать ошибки, Exception middleware

Почему Exceptions это не всегда хорошо

Урок 10. Result паттерн

Когда нужно использовать Exceptions

Когда нужно использовать Result паттерн

Зачем нужен Result паттерн, что это такое

Самая простая реализация Result паттерна с помощью кортежей

Класс Result, пример его использования

Result, как вернуть значения из Result

Неявное преобразование

Библиотека CsharpFunctionalExtensions

Возвращаем список ошибок

Кастомная коллекция Failure

Возвращаем список ошибок

Пример кода с try catch + Result

Метод расширения для красивого ответа клиенту, статус коды

Урок 11. Реализация других бизнес фич

Метод AddAnswer

Что должен возвращать метод в сервисах

Документация методов, summary

Добавляем нужные зависимости и начинаем писать логику метода, валидация

Два способа, как добавлять дочернюю сущность в базу данных

Первый способ, если используете Dapper

Что может пойти не так в бизнес сценарии, откуда берутся баги

Как управлять транзакцией в Application слое, TransactionManager

Второй способ добавления дочерней сущности в базу данных

Добавляем новые бизнес правила и усложняем метод

Как обратиться к другому модулю в разных случаях, новый инфраструктурный слой

Урок 12. Разделение сервиса на обработчики (Hanlders)

Разделение сервиса на части

Как правильно назвать обработчик

Вынесение фичи в отдельный класс

Создание папок для фич, удобный способ

Общий интерфейс для обработчиков

Паттерн команда (command), что это такое и зачем нужны команды

ICommandHandler

ICommand, улучшение интерфейса

Как в контроллере правильно вызвать Handler

Как удобно зарегистрировать все обработчики в DI

Scrutor, расширяем возможности Dependency Injection

Получение данных

Урок 13. Получение данных из бд и других источников

Как получать данные?

Пишем фичу на получение данных с фильтрами

Какие модели возвращать из бэкенда? Создаём DTO

Получаем данные с помощью репозитория, способ первый

Получаем связанные данные из другого хранилища, пример с файлами

Extension метод для Enum, из Enum в строку

Минусы использования репозитория для получения данных

Второй способ, использование DbContext в Handler

Как использовать DbContext в Application

IQueryable в DbContext

Пишем запросы в Handler с помощью DbContext

Паттерн CQS, разделение операций на запись и чтение

Добавление IQuery и IQueryHandler

Что если мы не используем EF Core, а используем Dapper

Урок 14. Модульный монолит

Рассматриваем обычное монолитное решение

Как будет выглядеть модульный монолит

Меняем структуру проекта, создаём новые проекты

Показываю как должен выглядеть модульный монолит

Проект Shared

Папка Infrastructure

Остальные проекты в Core

Пример модуля Questions

Архитектура Vertical Slice Architecture для небольших модулей

Minimal API для фич

Как регистрировать ендпоинты в Minimal API

Взаимодействие между модулями с помощью контрактов

Как регистрировать DI в модулях

Урок 15. Github actions

Пушим прошлую задачу в github

Настриваем Github actions

◆ ЦЕНА МАТЕРИАЛА ◆
Стоимость: 14900 ₽

Материал «Архитектура и структура .NET веб-приложений. Проектирование ASP.NET Core сервисов [Кирилл Сачков]», возможно, скоро появится на All-dar.

Пройдите регистрацию и оформите Premium подписку, чтобы первым получить доступ, и воспользуйтесь поиском — может быть, он уже опубликован.

Скрытый контент для пользователей All-dar.
 

Присоединяйтесь, чтобы открыть полный доступ

Комментарии и материалы этой темы доступны только зарегистрированным участникам

Новый участник?

Регистрация занимает меньше минуты

Уже с нами?

Войдите в свой аккаунт

Сверху