A monolith refers to a software application that is deployed as a single
physical deployment. Many monolithic applications lack sufficient structure
and end up becoming Big Balls of Mud. By contrast, a modular monolith breaks
up the application into logical modules which are largely independent from one
another. This provides many of the benefits of more distributed approaches like
microservices without the overhead of deploying and managing a distributed
application. In this course, we will build on top of your existing knowledge of Modular Monoliths
that you gained during the Getting Started course of the series and you�ll learn
how to apply advanced Modular Monolith patterns and add more features to the RiverBooks ecommerce site.
Course Curriculum
4h 21m 8 sections
Welcome
01:22Free preview
What will you learn in this course?
01:55Free preview
Who is the course for and prerequisites
01:19Free preview
Introducing the Sample App
11:30
New Requirements
01:38
High Level Design Considerations
02:24
Introducing the Shared Kernel
02:18
Key Takeaways
02:23
How can modules communicate?
05:46
Direct Synchronous Calls
04:47
The Mediator Pattern
04:30
Commands, Queries, and Events
04:14
Non-Blocking Communications
04:15
The Outbox Pattern
02:38
Materialized Views
03:02
Key Takeaways
02:26
Adding an OrderProcessing Module
24:44
Adding Addresses
07:39
Implementing a Materialized View
04:30
Updating the Materialized View
23:21
Key Takeaways
01:05
Refactoring to Clean Architecture
13:33
Enforcing Architecture Rules with ArchUnit.NET
08:06
Using Chain of Responsibility for Cross-Cutting Concerns
16:23
Key Takeaways
02:14
Introducing the EmailSending Module
04:38
Sending Registration Emails via MediatR
05:54
Sending Order Confirmation Emails via Domain Events
Steve "ardalis" Smith is an entrepreneur and software developer with a passion for building quality software as effectively as possible. He provides mentoring and training workshops for teams with the desire to improve. Steve has been recognized as a Microsoft MVP for over 10 consecutive years, and is a frequent speaker at software developer conferences and events. He is the top contributor to the official documentation on ASP.NET Core and enjoys helpings others write maintainable, testable applications using Microsoft's developer tools.