|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/clean-architecture-csharp-ru/
课程评论:没有评论
本课程旨在教授如何将**整洁架构(Clean Architecture)**应用于业务后端应用程序的实际开发中,特别关注企业级应用。课程以一个常见的在线购物网站作为演示项目,逐步指导学员理解和实现整洁架构的各层级组件、它们的具体内容以及组件间的依赖关系。 课程将深入探讨以下关键问题: * **Cross-cutting Concerns 和 Helper 函数的组织**:如何妥善处理项目中普遍存在的跨领域关注点和辅助函数。 * **模型选择对架构的影响**:是否必须使用 Rich Model,以及使用 Anemic Model 会如何改变架构。 * **业务逻辑与应用逻辑的划分**:如何清晰地区分和定位这两类核心逻辑。 * **数据访问的实现**:是否必须为 ORM 创建 Repository 抽象。 * **多集成与基础设施的响应**:当系统涉及大量外部系统集成和基础设施依赖时,架构如何调整。 * **Interactor 的实现策略**:探讨不同的 Interactor 实现方法,并分析其优劣。 * **Application Services 的作用**:明确 Application Services 在整洁架构中的角色。 * **Controller 的概念辨析**:Uncle Bob 的 Controller 与 MVC 框架中的 Controller 是否相同。 * **依赖规则的有效性**:验证依赖规则是否在所有情况下都适用。 * **第三方库的封装**:是否需要为项目中的所有库和框架编写包装器。 课程将从一个**分层架构(Layered Architecture)**的演示项目开始,通过实际的**迁移过程**,将项目逐步改造成符合整洁架构。学员将获得一份详细的、从分层架构迁移到整洁架构的实践指南。 此外,课程还将重点关注**架构的可伸缩性**。演示如何从一个最小化的整洁架构项目开始,逐步将其扩展成一个可伸缩的解决方案,同时保持对整洁架构原则的遵循。具体将展示如何将一个微服务项目扩展到适合初创公司,再到中型项目,直至包含多个后端 for Frontend (BFF) 的大型项目。 最后,课程将分析**GitHub 上两个流行的整洁架构示例项目**,评估它们的架构、优点和缺点,并展示如何对这些项目进行重构以更好地符合整洁架构。 **整洁架构概述**: 整洁架构由 Uncle Bob 提出,其灵感来源于 Onion Architecture 和 Hexagonal Architecture(Ports and Adapters)。其核心思想是将**业务实体和业务规则置于系统的中心**,使其独立于任何基础设施(如数据库)。其分层结构通常包括: 1. **Entities (实体)**:包含业务规则。 2. **Use Cases (用例)**:实现应用程序特定的业务逻辑。 3. **Interface Adapters (接口适配器)**:负责转换数据格式,如 Controllers、Gateways、Presenters。 4. **Frameworks and Drivers (框架和驱动)**:最外层,包含数据库、UI、Web 框架等基础设施。 **依赖规则**是整洁架构的关键,即**内部层可以依赖外部层,但外部层绝不能依赖内部层**。 课程还会阐述整洁架构、Onion Architecture 和 Hexagonal Architecture 之间的相似之处、区别以及它们与分层架构的根本差异,并演示如何构建一个同时满足这三者并通过整洁架构原则实现的项目。 **目标受众**: 本课程面向**业务后端开发者**,特别是那些希望构建出易于维护、功能添加和 Bug 修复过程愉快的系统,而不是带来痛苦的开发者。 虽然演示项目使用 C# 和 ASP.NET Core 编写,但课程内容不依赖于 C# 或 .NET Core 特有的语言特性或平台功能。因此,本课程的理念和方法适用于**任何语言和平台的后端开发者**(如 Java, Python, JavaScript, Ruby, Go, PHP 等)。
О чем этот курс?Курс показывает слушателю как применять чистую архитектуру на практике при разработке бэкенда бизнес-приложений (да-да, тот самый кровавый enterprise). В качестве демо-проекта используется интернет-магазин, не по наслышке знакомый огромному количеству программистов. Дядя Боб говорит о том, что количество компонентов может меняться, однако он не говорит какие компоненты могут добавляться и для решения каких задач. Курс показывает какие компоненты нужно будет создавать кто тех, что описаны Дядей Бобом, каково содержимое каждого компонента и какими будут ссылки между компонентами. Также вы найдете ответы на вопросы:Куда поместить сross-cutting сoncerns (сквозная функциональность) и хелперы, которые есть в любом реальном проектеОбязательно ли использовать Rich-модель и как изменится архитектура при использовании анемичной моделиЧем отличается и где находится бизнес-логика и логика приложенияКак организовать доступ к данным, обязательно ли создавать абстракцию для ORM в виде репозиториевКак изменится архитектура, если в системе будет много интеграций с внешними системами и инфраструктурыКакие есть подходы к реализации интерактора, какой подход лучше выбрать и почемуКакова роль ApplicationServices в чистой архитектуреКонтроллеры Дяди Боба и контроллеры MVC-фреймворка - это одно и то же или нетВсегда ли работает правило зависимостейНужно ли писать обертки для всех используемых в проекте библиотек и фреймворковДемо-приложение изначально реализовано по слоистой архитектуре. По ходу погружения в чистую архитектуру происходит поэтапное перепроектирование проекта в соответствии с чистой архитектурой. Так что слушатели курса получат подробный гайд по миграции любой существующей системы на чистую архитектуру. Отдельно рассматривается вопрос масштабирования архитектуры. Курс показывает как реализовать в соответствии с чистой архитектурой минимальный проект, а потом масштабировать его, н потеряв соответствие чистой архитектуре. В качестве минимального проекта показан микросервис, он масштабируется до стартапа, стартап - до среднего проекта, а средний - до большого, в котором будет несколько входных точек (Backend For Frontend). Наконец, рассматриваются два популярных демо-проекта с гитхаба, который реализованы в соответствии с чистой архитектурой. Производится обзор и анализ архитектуры этих проектов, их достоинств и недостатков (последних, увы, будет немало). И, конечно, показывается как отрефакторить эти проекты в соответствии с чистой архитектурой. Что такое чистая архитектура?Чистая архитектура была предложена Дядей Бобом. Она основана на созданных до него луковой и гексагональной (ее еще называют "порты и адаптеры") архитектурах, однако содержит достаточно много нового. Чистая архитектура говорит о том, что ядром системы должны быть бизнес-сущности и бизнес-правила, независимые от инфраструктуры (например, базы данных). Следующий слой - юскейсы, это реализация логики приложения. Далее слой контроллеров, а вся инфраструктура находится на внешнем слое фреймворков. При этом действует правило зависимостей: внешние слои могут использовать внутренние, но внутренние не могут использовать внешние.Курс отвечает на вопрос в чем похожи и чем отличаются эти три архитектуры, а также в чем их принципиальная разница со слоистой архитектурой. Курс рассказывает как реализовать проект, соответствующий сразу и чистой, и луковой, и гексагональной архитектурам. Для кого этот курс?Курс предназначен для backend-разработчиков бизнес-приложений, которые хотят чувствовать гордость за проделанную работу, создавая системы, в которых добавление новых фич и исправление багов вызывает радость и счастье, а не боль и страдание. Демо-проект курса сделан на C# и ASP.NET Core, но без использования специфических фич как языка программирования, так и платформы. Так что идеи и подходы, описанные в курсе, будут понятны и полезны backend-разработчикам на любом языке программирования и любой платформе (Java, Python, JavaScript, Ruby, Go, PHP итд).