- ASP.NET Core 6.0 (with .NET 6.0)
- ASP.NET WebApi Core
- ASP.NET Identity Core
- Entity Framework Core
- .NET Core Native DI
- AutoMapper
- FluentValidator
- MediatR
- Swagger UI
- MSSQL
- xUnit
- Moq
- Fluent Assertions
- Polly
- Refit
- DbUp
- Domain Driven Design
- Domain Events
- Domain Notification
- CQRS
- Event Sourcing
- Unit Of Work
- Repository & Generic Repository
- Inversion of Control / Dependency injection
- ORM
- Mediator
- Specification Pattern
- Options Pattern
- Create file
C:\Users\[UserName]\AppData\Roaming\Microsoft\UserSecrets\51c0770a-8c88-4362-b3b5-a8936796ecef\secrets.json
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=DDD;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
- For Visual Studio:
Select profile > Run (F5)
- For VSCode:
Select configuration > Run (F5)
- For Terminal:
dotnet build Src/DDD.Services.Api/DDD.Services.Api.csproj
dotnet run --project Src/DDD.Services.Api/DDD.Services.Api.csproj --launch-profile Dev
- Terminal:
dotnet test
docker build -t aspnetcore-docker-image .
docker run -it --rm -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image
docker run -d -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image
- Use multiple environments
- Transaction (Unit of Work)
- Validation (FluentValidation)
- Response wrapper
- Async/Await
- REST
- JWT
- Mapping (AutoMapper)
- API Specification, API Definition (Swagger)
- ORM {Entity Framework Core}
- Middleware
- CORS
- Pagination
- Sorting
- Error Handling, Global Exception
- HealthCheck
- Http
- Database Auditing: CreatedAt/UpdatedAt CreatedBy/UpdatedBy
- Soft Delete
- Common: Constants, Helpers
- Docker
- EF: Shadow Properties
- Events
- Unit Testing
- Integration Testing
- Scoped over Transient
- Use
abstract
keyword to appropriate class - Use
IQueryable
,IEnumerable
,IList
interfaces - Use NetStandard 2.1 for Class Library
- Hashing
- AnalysisLevel: Automatically find latent bugs
- Migration (DbUp)
- User Secrets
- Scaffold
- Data Seeding
- Logging
- OAuth2, OIDC (OpenId Connect)
- SignalR
- Search
- Kafka, RabbitMQ
- Microservices, API Gateway
- Multi-tenancy
- StyleCop
- API Versioning
- API Versioning with Swagger
- Primary Key to Integer
- File storage: Upload/Download
- Kubernetes
- Globalization & Localization
- Caching
- Kestrel
- Secret Manager
- Task scheduling & Queues
- Session & Cookie
- Notifications
- Encryption
- EF: No-tracking queries
- Dapper, Dapper Contrib (Optional)
- BulkInsert, BulkUpdate, Async method for IRepository
- https://github.com/EduardoPires/EquinoxProject
- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles
- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims
- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies
- https://docs.microsoft.com/en-us/aspnet/core/security/authorization/limitingidentitybyscheme
- https://www.red-gate.com/simple-talk/dotnet/c-programming/policy-based-authorization-in-asp-net-core-a-deep-dive/
- https://docs.microsoft.com/en-us/archive/msdn-magazine/2017/october/cutting-edge-policy-based-authorization-in-asp-net-core
- https://dev.azure.com/Techhowdy/_git/NG_Core_AuthRTDB
- https://github.com/Elfocrash/Youtube.AspNetCoreTutorial
- https://www.meziantou.net/entity-framework-core-soft-delete-using-query-filters.htm
- https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
- https://michael-mckenna.com/multi-tenant-asp-dot-net-core-application-tenant-resolution
- https://stackify.com/writing-multitenant-asp-net-core-applications/
- https://github.com/DanielRBowen/SimpleMultiTenant
- https://deviq.com/specification-pattern/
- https://devblogs.microsoft.com/dotnet/automatically-find-latent-bugs-in-your-code-with-net-5/
- https://xunit.github.io/docs/why-no-netstandard