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 limiting: Microsoft.AspNetCore.RateLimiting, policy, sliding window
  3. Feature flag: Microsoft.FeatureManagement, flag condizionali, targeting
  4. Logging: ILogger<T>, Serilog, sink, log strutturati
  5. Osservabilità: OpenTelemetry, trace, metriche, health checks
  6. Configurazione tipizzata: IOptions<T>, IOptionsMonitor<T>, validazione
  7. Code native .NET: Queue<T>, ConcurrentQueue<T>, Channel<T>
  8. Librerie per code e job: Hangfire, Quartz.NET
  9. Middleware custom: pipeline, RequestDelegate, gestione errori globale
  10. Action filter: IActionFilter, IAsyncActionFilter
  11. Authorization filter: IAuthorizationFilter, API key, tenant
  12. Exception filter: IExceptionFilter, 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 services: BackgroundService, worker pattern, graceful shutdown
  19. Caching: IMemoryCache, 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
  22. CancellationToken: propagazione, timeout, linked token, anti-pattern

Struttura della Solution

Entity Framework

Test unitari

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

Pattern

  • Strategy: IEnumerable<T> per selezione a runtime, Keyed Services per selezione dichiarativa

Test di integrazione

Esempi

  • Serilog su database (EF): sink custom per scrivere eccezioni su DB via Entity Framework
  • HTTP audit log: middleware per registrare request/response su DB, con modellazione e considerazioni operative