Passa al contenuto principale

C# / ASP.NET Core

Convenzioni, pattern e riferimenti tecnici per lo sviluppo con C# e ASP.NET Core.

Contenuto

  1. Switch expression e pattern matching — switch expression, pattern matching, when guard
  2. Rate limitingMicrosoft.AspNetCore.RateLimiting, policy, sliding window
  3. Feature flagMicrosoft.FeatureManagement, flag condizionali, targeting
  4. LoggingILogger<T>, Serilog, sink, log strutturati
  5. Osservabilità — OpenTelemetry, trace, metriche, health checks
  6. Configurazione tipizzataIOptions<T>, IOptionsMonitor<T>, validazione
  7. Code native .NETQueue<T>, ConcurrentQueue<T>, Channel<T>
  8. Librerie per code e job — Hangfire, Quartz.NET
  9. Middleware custom — pipeline, RequestDelegate, gestione errori globale
  10. Action filterIActionFilter, IAsyncActionFilter
  11. Authorization filterIAuthorizationFilter, API key, tenant
  12. Exception filterIExceptionFilter, IAsyncExceptionFilter
  13. Problem Details (RFC 9457) — errori strutturati, ProblemDetails, ValidationProblemDetails
  14. Async / Await — throughput nelle Web API, CancellationToken, anti-pattern
  15. Dependency Injection — lifetimes, captive dependency, keyed services
  16. HttpClient / IHttpClientFactory — typed client, DelegatingHandler, socket exhaustion
  17. Validazione — DataAnnotations, FluentValidation, ValidationProblemDetails
  18. Background servicesBackgroundService, worker pattern, graceful shutdown
  19. CachingIMemoryCache, IDistributedCache, output caching
  20. Resilienza — retry, circuit breaker, timeout con Microsoft.Extensions.Http.Resilience
  21. Records e immutabilitàrecord, with expression, DTO e value object

Struttura della Solution

  • Struttura fisica — filesystem, .sln, .csproj, naming assembly e namespace
  • Dipendenze tra progetti — Core, Db, Api, Tests e direzione delle dipendenze
  • Organizzazione di Core — Screaming Architecture, dominio vs tipo tecnico
  • UseCases — livello intermedio, comandi completi, SaveChanges, Result pattern
  • Convenzioni — naming esplicito, un file per classe, record, interfacce, Program.cs
  • Progetti di integrazione — client HTTP/SOAP, librerie esterne, confinamento delle dipendenze
  • Models — DTO, enum di dominio, Result<T>, tipi condivisi tra progetti

Entity Framework

Test unitari

  • A cosa servono — logica pura, monitoraggio librerie di terze parti, verifica di comportamenti puntuali

Test di integrazione