Открыто

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

Тема в разделе "Курсы по программированию", создана пользователем Топикстартер, 8 фев 2025.

Цена: 14900р.-87%
Взнос: 1794р.

Основной список: 10 участников

Резервный список: 3 участников

  1. 8 фев 2025
    #1
    Топикстартер
    Топикстартер ЧКЧлен клуба

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

    2025-02-08_201501.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 ₽
    Скрытая ссылка
     
    2 пользователям это понравилось.
  2. Последние события

    1. Ящерица
      Ящерица участвует.
      23 фев 2025
    2. Mega_Q
      Mega_Q участвует.
      15 фев 2025
    3. rar24
      rar24 участвует.
      15 фев 2025
    4. skladchik.com
      В складчине участвует 10 человек(а).
      15 фев 2025