Autore: Filippo
-
Kestrel in C#: cos’è davvero e come ottimizzarlo in produzione
TL;DR Kestrel è il web server integrato in ASP.NET Core, pensato per essere leggero, cross-platform e ad alte prestazioni. È production-ready, ma le sue performance reali dipendono dalla configurazione e dal modo in cui viene inserito nell’architettura complessiva. Per ottenere il massimo occorre definire endpoint, limiti e timeout, abilitare protocolli moderni solo quando servono, delegare…
-
DbContext in C#: Guida Completa ed Approfondita
Introduzione In Entity Framework Core, il DbContext in C# è il cuore del data access: È un concetto semplice ma potente: un errore nella gestione del DbContext può rallentare l’applicazione o introdurre bug complessi. In questo articolo vediamo come sfruttarlo al meglio, ottimizzando performance, testabilità e architettura. Cos’è il DbContext in C# Il DbContext in…
-
Union Types nel costruttore: PHP vs C#
Perché questo articolo PHP 8 ha introdotto i union types—comodissimi nei costruttori perché permettono di accettare più tipi senza duplicare la firma. In C# non esistono union types nativi, ma ci sono pattern idiomatici per ottenere la stessa ergonomia con type safety superiore. In questo articolo vediamo come tradurre la feature, quando conviene farlo e…
-
Perché scegliere Hexagonal Architecture (e non fermarsi a Layered o Clean)
Introduzione Molti sviluppatori iniziano con la classica Layered Architecture e alcuni tentano la Clean Architecture. Ma quando serve testabilità, manutenibilità e flessibilità, la scelta migliore è spesso la Hexagonal Architecture, nota anche come Ports and Adapters. In questo articolo vedremo: Cos’è l’Hexagonal Architecture? L’Hexagonal Architecture organizza l’applicazione in modo da isolare completamente la business logic…
-
Async/Await : quello che (forse) ti sfugge potrebbe rallentare tutto
L’introduzione di async/await in C# ha reso la programmazione asincrona molto più accessibile. Tuttavia, per chi lavora su sistemi scalabili, concurrent o ad alte prestazioni, usarli “alla leggera” può introdurre rallentamenti, memory leak o comportamenti imprevedibili. In questo articolo vediamo cosa succede realmente dietro la keyword async, perché ogni metodo asincrono ha un costo, e…
-
Microservizi in C#: quando usare un API Gateway con Ocelot
I microservizi sono diventati uno standard de-facto per costruire sistemi scalabili e autonomi. In ambito .NET/C#, l’ecosistema offre tooling maturo per deploy containerizzato, osservabilità e integrazioni cloud. In questo articolo vediamo linee guida pratiche e valutiamo pro/contro dell’uso di un API Gateway con Ocelot. Perché usare i microservizi (e quando evitarli) Vantaggi Svantaggi Regola d’oro:…
-
Cosa sono i channels in c#?
1. Introduzione Nelle applicazioni .NET moderne, specialmente quelle con high concurrency o asynchronous workflows, è comune dover scambiare dati tra parti diverse del sistema in modo sicuro e senza introdurre colli di bottiglia.I C# Channels, introdotti in .NET Core 3.0 (System.Threading.Channels), offrono un approccio performante e thread-safe per implementare il pattern Producer/Consumer in memoria. 2.…
-
Pattern Avanzati di Programmazione: Riutilizzo, Flessibilità e Architetture a Low Coupling
Nel mondo dello sviluppo moderno, la capacità di scrivere codice riutilizzabile, flessibile e facilmente testabile è un tratto distintivo degli sviluppatori senior. Architetture solide si basano su due principi cardine: In questo articolo esploreremo come usare Dependency Injection (DI) e IoC in modo avanzato, applicando pattern flessibili e reali in ambienti enterprise complessi. 1. Dependency…
-
Clean Code nelle PR: guida essenziale
Nel lavoro quotidiano di uno sviluppatore senior, la revisione del codice (PR Review) è una delle attività più strategiche e frequenti. Non si tratta solo di approvare righe di codice, ma di contribuire attivamente alla qualità complessiva del software, migliorando leggibilità, manutenibilità e coerenza dell’intero progetto. Questa guida raccoglie alcuni dei principi da tenere sempre…
-
Come diventare un programmatore senior
Quali sono gli elementi essenziali per diventare un programmatore senior? Cosa si intende per “seniority”? Quello che è certo è che il titolo di programmatore senior non è legato al tempo per il quale si è programmato. Ho incontrato spesso dei programmatori “veterani” ma che avevano uno stile di programmazione e un background non definibili…