Getting Started: Clean Architecture in .NET

Start your .NET Clean Architecture journey

About This Course

Clean Architecture is one of the most popular software architecture and solution organization approaches out there, and that's for a good reason. It provides a clear path to a robust solution structure with clear guidelines and rules that help you fall into the pit of success immediately. It can, however, be confusing and complicated at first, especially if you don't have an experienced developer explaining the concept and principles to you. That's where Dometrain comes in. In this course, Amichai Mantinband, a Software Engineer at Microsoft, will help you start with Clean Architecture and teach you all the principles and rules in easy-to-digest clips and understandable examples. Start your Clean Architecture journey today on Dometrain!

Course Curriculum

3h 10m 13 sections
Welcome
01:04 Free preview
What will you learn in this course?
01:37 Free preview
Who is the course for and prerequisites
01:49 Free preview
What is Software Architecture?
01:42
What are Architectural Patterns?
01:01
Layered Architecture
04:42
Domain-Centric Architecture
01:35
What is Clean Architecture?
03:28
Section Recap
01:14
The Domain We'll Explore in this Course
04:29
The Project We Will Build & How this Course is Built
02:22
Project Setup Following Clean Architecture
03:09
Sending Requests Using .http Files
02:01
Section Recap
00:43
Presentation Layer Overview
02:50
Implementing Presentation Layer Contracts
05:15
Implementing Controllers in the Presentation Layer
01:50
Presentation Layer Frameworks in .NET
01:09
Section Recap
00:53
Application Layer Overview
02:57
Implementing Services in our Application Layer
04:44
Clean Architecture and Dependency Injection
07:36
Section Recap
00:34
What is the CQRS Pattern?
03:48
Implementing the CQRS Pattern
00:31
What is the Mediator Pattern?
01:41
Implementing the Mediator Pattern Using the MediatR NuGet Package
07:47
Splitting by Feature vs. Splitting by Type
02:43
Section Recap
00:54
What is the Result Pattern?
02:08
Implementing the Result Pattern
04:09
Section Recap
00:36
What is the Repository Pattern?
03:52
Implementing the Repository Pattern in the Application Layer
03:46
What is the Unit of Work Pattern?
02:13
Implementing the Unit of Work pattern in the Application Layer
01:56
Section Recap
00:46
Infrastructure Layer Overview
01:32
Implementing the Repository Pattern in the Infrastructure Layer
04:45
Implementing the Repository Pattern Using EF Core in the Infrastructure Layer
05:52
Implementing the Unit of Work Pattern in the Infrastructure Layer
02:31
EF Core and the Repository Pattern
03:47
Section Recap
00:38
Domain-Driven Design vs. Clean Architecture
01:50
What is Domain-Driven Design?
02:15
Domain Models
00:38
Rich vs. Anemic Domain Models
03:23
Always Valid Domain Models
01:49
Persistence Ignorance
01:33
Section Recap
01:40
Domain Layer Overview
03:18
Implementing Strongly Typed Enums
02:11
Implementing Domain Models
05:58
Implementing Domain Model EF Core Configurations
05:55
Final Project Overview
02:15
Final Project Code Walkthrough
05:07
Section Recap
01:10
Domain Layer Errors vs. Application Layer Errors vs. Presentation Layer Errors
09:07
Error Handling Approaches in Clean Architecture
06:16
Implementing Domain Layer Errors
04:22
Implementing Application Layer Errors
03:01
Converting Domain and Application Layer Errors to Presentation Errors
10:54
Section Recap
01:49
Conclusion
00:43

Meet Your Instructor

Amichai Mantinband

Amichai Mantinband

Amichai Mantinband is a Software Engineer at Microsoft and a .NET content creator.
He works on large-scale, distributed systems within Microsoft Office, serving over 100 million daily users. He is a speaker at official .NET conferences, and within Microsoft, he authors and teaches software architecture courses.
Amichai is the author of NuGet packages ErrorOr & Throw and has a .NET programming YouTube channel covering advanced topics such as design patterns, architecture, and best practices.

View all courses by Amichai Mantinband

What's New

Getting Started: Building .NET Applications on AWS
course

Getting Started: Building .NET Applications on AWS

Learn how to build and deploy .NET applications on AWS using CDK, Lambda, DynamoDB, S3, and more.

Learn More
What's new in C# 14
blog

What's new in C# 14

This guide covers every new C# 14 feature, explains its benefits, and provides practical code examples to help you navigate how you can use them.

Learn More
Let's Build It: AI Chatbot with RAG in .NET Using Your Data
course

Let's Build It: AI Chatbot with RAG in .NET Using Your Data

Build a Retrieval-Augmented Generation (RAG) chatbot that can answer questions using your data.

Learn More
From Zero to Hero: SignalR in .NET
course

From Zero to Hero: SignalR in .NET

Enable enterprise-grade real-time communication for your web apps with SignalR.

Learn More
Deep Dive: Solution Architecture
course

Deep Dive: Solution Architecture

Master solution architecture and turn business needs into scalable, maintainable systems.

Learn More
Migrating: ASP.NET Web APIs to ASP.NET Core
course

Migrating: ASP.NET Web APIs to ASP.NET Core

A step-by-step process to migrate ASP.NET Web APIs from .NET Framework to ASP.NET Core.

Learn More
Getting Started: Caching in .NET
course

Getting Started: Caching in .NET

Let's make the hardest thing in programming easy for .NET software engineers.

Learn More
From Zero to Hero: Testing with xUnit in C#
course

From Zero to Hero: Testing with xUnit in C#

Learn how to test any codebase in .NET with the latest version of xUnit, the industry-standard testing library.

Learn More
Create a ChatGPT Console AI Chatbot in C#
blog

Create a ChatGPT Console AI Chatbot in C#

This walkthrough is your hands-on entry point to create a basic C# console application that talks to ChatGPT using the OpenAI API.

Learn More