.NET Microservices: Architecture for Containerized .NET Applications

Introduction to Containers and Docker
1
What is Docker?
2
Docker terminology
3
Docker containers, images, and registries
Choosing Between .NET 5 and .NET Framework for Docker Containers
1
General guidance
2
When to choose .NET for Docker containers
3
When to choose .NET Framework for Docker containers
4
Decision table: .NET frameworks to use for Docker
5
What OS to target with .NET containers
6
Official .NET Docker images
Architecting container and microservice-based applications
1
Container design principles
2
Containerizing monolithic applications
3
State and data in Docker applications
4
Service-oriented architecture
5
Microservices architecture
6
Data sovereignty per microservice
7
Logical architecture versus physical architecture
8
Challenges and solutions for distributed data management
9
Identify domain-model boundaries for each microservice
10
The API gateway pattern versus the Direct client-to-microservice communication
11
Communication in a microservice architecture
12
Asynchronous message-based communication
13
Creating, evolving, and versioning microservice APIs and contracts
14
Microservices addressability and the service registry
15
Creating composite UI based on microservices
16
Resiliency and high availability in microservices
17
Orchestrate microservices and multi-container applications for high scalability and availability
Development process for Docker-based applications
1
Development environment for Docker apps
2
.NET languages and frameworks for Docker containers
3
Development workflow for Docker apps
Designing and Developing Multi-Container and Microservice-Based .NET Applications
1
Design a microservice-oriented application
2
Creating a simple data-driven CRUD microservice
3
Defining your multi-container application with docker-compose.yml
4
Use a database server running as a container
5
Implementing event-based communication between microservices (integration events)
6
Implementing an event bus with RabbitMQ for the development or test environment
7
Subscribing to events
8
Testing ASP.NET Core services and web apps
9
Implement background tasks in microservices with IHostedService and the BackgroundService class
10
Implement API Gateways with Ocelot
Tackle Business Complexity in a Microservice with DDD and CQRS Patterns
1
Apply simplified CQRS and DDD patterns in a microservice
2
Apply CQRS and CQS approaches in a DDD microservice in eShopOnContainers
3
Implement reads/queries in a CQRS microservice
4
Design a DDD-oriented microservice
5
Design a microservice domain model
6
Implement a microservice domain model with .NET
7
Seedwork (reusable base classes and interfaces for your domain model)
8
Implement value objects
9
Use enumeration classes instead of enum types
10
Design validations in the domain model layer
11
Client-side validation (validation in the presentation layers)
12
Domain events: design and implementation
13
Design the infrastructure persistence layer
14
Implement the infrastructure persistence layer with Entity Framework Core
15
Use NoSQL databases as a persistence infrastructure
16
Design the microservice application layer and Web API
17
Implement the microservice application layer using the Web API
Implement resilient applications
1
Handle partial failure
2
Strategies to handle partial failure
3
Implement retries with exponential backoff
4
Implement resilient Entity Framework Core SQL connections
5
Use IHttpClientFactory to implement resilient HTTP requests
6
Implement HTTP call retries with exponential backoff with IHttpClientFactory and Polly policies
7
Implement the Circuit Breaker pattern
8
Health monitoring
Make secure .NET Microservices and Web Applications
1
Implement authentication in .NET microservices and web applications
2
Authorization in .NET microservices and web applications
3
Store application secrets safely during development
4
Using Azure Key Vault to protect secrets at production time