Как улучшить Enterprise архитектуру при помощи CQRS

所在平台: Udemy

课程主页: https://www.udemy.com/course/cqrs-architecture-csharp-ru/

课程评论:没有评论

第一个写评论        关注课程

课程简介

**课程名称:** 通过 CQRS 改进企业架构 **课程概述:** 本课程深入探讨了 CQRS(命令查询责任分离)模式,旨在帮助开发者理解如何利用此模式优化企业级应用程序的架构。CQRS 的核心思想是将数据变更(命令)和仅数据检索(查询)的操作分离成两个独立的处理流程。命令处理通常与规范化的关系数据库通过 ORM(对象关系映射)配合,而查询处理则侧重于使用针对快速读取而优化的反规范化数据存储。这种分离可以显著提升后端系统中占绝大多数比例的数据读取操作的速度。 尽管 CQRS 并非新概念,但相较于微服务或 DDD(领域驱动设计),其在实践中的应用仍然较少。本课程旨在纠正这一认知,强调 CQRS 在优化系统架构方面的独特优势,特别是通过采用垂直 CQRS 处理器(Vertical CQRS Handlers)替代传统的水平服务(Horizontal Services)来实现。课程将详细阐述八大优势,并驳斥开发者在转向 CQRS 过程中普遍存在的担忧。 **课程内容:** 课程从清晰化术语开始,解释 CQS、CQRS、Vertical Slices 和 Feature by folder 等概念。随后,通过一个“网上商店”的演示应用,对比实现相同功能在水平分层架构和垂直 CQRS 架构下的差异。演示将贯穿整个过程,涵盖添加和修改项目功能,并实际展示: * 命令处理后返回值 * ApplicationService 和 CQRS 处理器中用例的实现方式 * 是否必须使用 CQRS 处理器来分离读写栈 * CQRS 命令和查询作为 DTO(数据传输对象)的最佳实践,还是作为独立类 * 批量注册 CQRS 处理器到 DI 容器(依赖注入容器) * 用例之间的代码复用 * 当应用逻辑以 CQRS 处理器实现时,ApplicationService 是否仍然存在 * 如何将分层应用迁移到处理器架构,迁移过程的组织以及 ReSharper 重构工具的辅助 * 服务和处理器实现 CRUD(创建、读取、更新、删除)场景的差异和最佳实践 * 用例调用用例:服务中的隐式调用与处理器中的显式调用 * 横切关注点(Cross-cutting concerns)在服务和处理器中的实现差异 * 为服务和处理器编写单元测试的差异 * 返回 Result 以强化架构或性能的考量 此外,课程还将分析 CQRS 引擎及其应用的区别,探讨命令返回值的应用场景,评估现有 CQRS 引擎,选择最合适的引擎,并讨论使用现有引擎或自建引擎的权衡。 **目标受众:** 本课程面向希望通过构建高性能、易于维护的系统来获得成就感的业务应用程序后端开发人员。课程演示项目尽管基于 C# 和 ASP.NET Core,但未使用该语言或平台的特定高级功能,因此其理念和方法对使用任何编程语言和平台的后端开发人员(包括 Java、Python、JavaScript、Ruby、Go、PHP 等)均有极大的参考价值。

课程评论(0条)

课程详情

Что такое CQRSCommand Query Responsibility Segregation - это разделение системы на две независимых части: стек команд для изменения данных и стек запросов для выборки данных без их изменения. Стек команд рассчитан на работу с нормализованной реляционной базой через Object-Relational Mapping (ORM), а стек запросов - на денормализованное хранилище, оптимизированное на скорость выполнения выборок данных. Такой подход позволяет существенно повысить скорость выполнения выборок данных, которые составляют бОльшую часть операций на бэкенде.Зачем нужен еще один курс о CQRSПодход CQRS появился уже давно, но согласно исследованию InfoQ применяется на практике реже, чем микросервисы или DDD. Причина в том, что для улучшения производительностия сегодня чаще используются микросервисы вместо CQRS. А в использовании CQRS для улучшения архитектуры многие программисты не видят достоинств, и даже опасаются этого подхода. Данный курс покажет все достоинства для архитектуры системы, которые можно получить, используя вертикальные CQRS хендлеры вместо привычных горизонтальных сервисов. Таких достоинств будет целых восемь! Также мы опровергнем наиболее частые опасения, которые есть у программистов, планирующих переход на CQRS.О чем этот курсКурс начинается с наведения порядка в терминологии, разъяснения понятий CQS, CQRS, Vertical Slices и Feature by folder. Дальше на демо-приложении "интернет-магазин" мы будем рассматривать различия в реализации одного и того же функционала в горизонтальном слоистом и вертикальном CQRS вариантах. Пример будет сквозным, мы будет добавлять и изменять функционал демо-проекта и увидим на практике:Можно возвращать значения из команд Как выглядит реализация юскейса в ApplicationService и CQRS handlerОбязательно ли использовать CQRS handlers для разделения стеков чтения и записиСтоит ли использовать ли CQRS команды и запросы как DTO или делать их отдельными классамиКак массово регистрировать CQRS Handlers в DI ContainerКак переиспользовать код между юскейсами. Останутся ли ApplicationServices в системе, если application-логика реализована в виде CQRS handlersКак мигрировать приложение со слоев на хендлеры. Как ораганизовать процесс миграции и какие рефакторинги решарпера в этом помогутКак выглядит реализация CRUD сценариев для сервисов и хендлеров, какой подход лучше использоватьВызов юскейса из юскейса: неявное для сервисов и явное для хендлеровCross-cutting concerns: реализация для сервисов и хедлеровОтличия в написании юнит-тестов для сервисов и хендлеровСтоит ли возвращать из хендлеров Result для улучшения архитектуры или производительностиМы рассмотрим отличия в реализации CQRS движка и приложения на его основе, когда из команд можно возвращать значения и когда этого делать нельзя. Мы сделаем обзор и анализ существующих CQRS движков, выберем лучший из них и обсудим, стоит ли использовать существующий CQRS движок или лучше написать свой собственный. Для кого этот курс?Курс предназначен для backend-разработчиков бизнес-приложений, которые хотят чувствовать гордость за проделанную работу, создавая системы, в которых добавление новых фич и исправление багов вызывает радость и счастье, а не боль и страдание. Демо-проект курса сделан на C# и ASP.NET Core, но без использования специфических фич как языка программирования, так и платформы. Так что идеи и подходы, описанные в курсе, будут понятны и полезны backend-разработчикам на любом языке программирования и любой платформе (Java, Python, JavaScript, Ruby, Go, PHP итд).

课程标签

0人关注该课程

主题相关的课程