Roadmap towards mastery .
NET 8 in
2024.
Topics
Clean Architecture
Domain Driven Design
Global Error Handling
CQRS && Mediator
CI CD
Caching
Logging
Api Versioning
Generic Repository && Unit Of Work
Dapper with EF core
SignalR real time notifications
SOLID
Design Patterns (Dependency Injection, Specification pattern, Options
Pattern)
Custom Middleware
JWT Token and Refresh Token
Event Sourcing in .NET
Interceptors
1. Dependency Injection and Inversion of Control
Microsoft.Extensions.DependencyInjection:
Built-in dependency injection container.
Autofac:
A popular IoC container with more advanced features
than the built-in container.
2. Data Access
Entity Framework Core:
Microsoft's Object-Relational Mapper (ORM) for .NET Core.
Microsoft.EntityFrameworkCore.SqlServer:
Provider for SQL Server.
Microsoft.EntityFrameworkCore.Tools:
Tools for EF Core migrations.
Microsoft.EntityFrameworkCore.Design:
Design-time utilities for EF Core.
Dapper: A simple and lightweight ORM for .NET Core, used
for more direct SQL access.
Npgsql.EntityFrameworkCore.PostgreSQL: Provider for
PostgreSQL databases with EF Core.
3. Logging and Monitoring
Serilog:
A powerful logging library that integrates well with .NET
Core.
Serilog.AspNetCore: Integration with ASP.NET Core.
Serilog.Sinks.Console: Console sink for Serilog.
Serilog.Sinks.File: File sink for Serilog.
NLog: Another popular logging library.
NLog.Web.AspNetCore: Integration with ASP.NET Core.
4. APIs and Middleware
Swashbuckle.AspNetCore:
Swagger integration for API documentation.
NSwag.AspNetCore:
An alternative to Swashbuckle for Swagger/OpenAPI
documentation.
5. Authentication and Authorization
Microsoft.AspNetCore.Authentication.JwtBearer:
JWT Bearer token authentication.
Microsoft.AspNetCore.Identity: Identity management for
ASP.NET Core.
6. HTTP Clients and Communication
Refit: A REST library for .NET Core, simplifying HTTP API
calls.
RestSharp: Another popular library for making HTTP
requests.
7. Validation and Mapping
FluentValidation: A popular validation library for .NET.
AutoMapper: A library for object-to-object mapping, useful
for converting between different layers (e.g., DTOs to
domain models).
8. Background Processing
Hangfire: A library for handling background tasks and
scheduled jobs.
Quartz.NET: A robust job scheduling library for .NET
applications.
9. Testing
xUnit: A popular testing framework for .NET.
Moq: A popular mocking library for .NET.
FluentAssertions: An assertion library for better
readability in tests.
10. Performance and Caching
StackExchange.Redis: A Redis client for .NET, used for
caching and other Redis functionalities.
Microsoft.Extensions.Caching.Memory: In-memory caching
for .NET Core applications.
Polly: A resilience and transient-fault-handling library,
often used for implementing retries and circuit breakers.
11. Other Useful Packages
MediatR: A simple mediator pattern implementation
in .NET for CQRS.
Newtonsoft.Json: A popular JSON library for .NET, though
System.Text.Json is now preferred for new projects.
HtmlAgilityPack: A library for parsing and manipulating
HTML.
Sample Directory.Packages.props
Here is an example Directory.Packages.props file for
central package management in a .NET Core solution:
<Project>
<ItemGroup>
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer"
Version="8.0.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools"
Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageVersion Include="Serilog.AspNetCore" Version="5.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="4.0.0" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer"
Version="8.0.0" />
<PackageVersion
Include="AutoMapper.Extensions.Microsoft.DependencyInjection"
Version="11.0.0" />
<PackageVersion Include="FluentValidation" Version="11.0.0" />
<PackageVersion Include="Hangfire.AspNetCore" Version="1.8.0" />
<PackageVersion Include="xunit" Version="2.5.0" />
<PackageVersion Include="Moq" Version="5.0.0" />
<PackageVersion Include="FluentAssertions" Version="6.10.0" />
<PackageVersion Include="Polly" Version="8.0.0" />
<PackageVersion Include="System.Text.Json" Version="8.0.0" />
</ItemGroup>
</Project>
- xUnit
- JWT
- Refit
- Quartz
- Bogus
- Serilog
- Dapper
- EF Core
- MediatR
- NSubstitute
- FluentValidation
- System.Text.Json
clean arch
Mediate + cqrs, behaviors identity validation
Middlewares
Domain, integration & application events
Unit & integration test + Moq
Exception handling
Repo & UOW
Services in mediteR
Roles, jwt & identity
Upload files using base64, form data
Upload file by save path or save byte array
Dtos
DDD, value objects & aggregation
Dapper with EF core
EF eager, lazy & explicit loading
Inserting & updating or deleting with details
As no tracking
Func, action, delegates & expression
Threads, parallism & yeild
Background service, windows service & queues,
SignalR
Action filters
Performance test Like Benchmark
Records
Logging
Span
Reflection
Service provider
Caching