
Master clean architecture fundamentals and SOLID principles, with the C4 model, and implement a domain-centric design across presentation, infrastructure, application, and core layers.
Explore the single responsibility principle within SOLID, showing how a module should have one reason to change by separating cart calculations, discounts, totals, and purchase submission in an e-commerce example.
Apply the open-closed principle by structuring software with a business layer and a data access layer, making behavior extendable without modifying existing artifacts.
Explore the Liskov substitution principle, where superclass objects must be replaceable by subclasses without breaking the application, illustrated by the duck with batteries and the square versus rectangle case.
Present the interface segregation principle by showing defined responsibilities and dependencies on only what is necessary, using separate student, class, and parent repositories to save data.
Apply the dependency inversion principle by making high level modules depend on abstractions, not on low level details; use interfaces and dependency injection to wire concrete implementations.
discover clean architecture variants—onion, hexagon, and ports and adapters—centering entities and business rules, with layered UI and infrastructure and strict dependency rules.
Review recommended software tools for the course.
Run a web api project with default settings, enable swagger, and use the weather forecast controller to try out and return sample forecasts.
Demonstrates creating an extension class to add swagger via extension methods on IServiceCollection, enabling endpoint explorer and swagger gen, and keeping program.cs lean while validating the setup.
Create a sort controller as a web api endpoint that accepts an int array via post and returns the same list after applying a bubble sort.
Explore the core layer in clean architecture, defining abstractions and interfaces, and applying dependency inversion and dependency injection to wire the sort service through program startup (ISortService).
Review the solid principles: single responsibility, open and closed, Liskov substitution. Align these with the C4 model diagrams: system context, container, component, and code, within a domain-centric clean architecture.
Overview of current clean architecture created in the course, views of architecture violations and tools to validate the architecture.
Create a Test Layer and adding the nuget packages,.
Testing the layers for violations.
validate architecture through unit tests and dependency checks across presentation, infrastructure, application, and core layers, and automate violations in builds to prevent releases.
In this course you will learn the fundamentals of layered software architecture. A review of the Clean Architecture concepts will be given, and you will implement an application without the use of Clean Architecture. You will then gradually refactor the software in a step-by-step tutorial to grasp and understand Clean Architecture. This step-by-step guide will allow you to understand Clean Architecture at its core and not focus on the details such as database, frameworks, or any third-party library. One should easily replicate this knowledge with any object-oriented language.
Frequently, students find it difficult to understand Clean Architecture in a more fundamental approach. Many courses will focus on combining Clean Architecture with other frameworks and design patterns such as DDD, Microservices, Entity Framework, Repositories, CQRS, etc. That is not the objective of this course.
The goal of this course is for students to gain a clear understanding of Clean Architecture from basic theory to a practical implementation. Learning by doing is goal here, you will learn how to implement all layers that comes with this approach such as the core, application, and infrastructure. Also, the reason why the separation of concerns is important with layering and the benefits this type of architecture can bring to software applications.