Struttura del corso
Introduzione alla piattaforma .NET moderna
- Panoramica sul runtime di .NET 8, sull’SDK e sulla piattaforma unificata
- Confronto evolutivo tra .NET Framework, .NET Core e .NET 8+/li>
- Struttura dei progetti, selezione del framework di destinazione e concetti base sul multi-targeting
- Configurazione dell’ambiente di sviluppo e degli strumenti necessari
C# moderno e buone pratiche linguistiche per il futuro
- Uso dei record, dei setter a inizializzazione esclusiva e delle tecniche di immutabilità
- Miglioramenti nel matching dei pattern e utilizzo delle espressioni switch
- Gestione sicura dei tipi nullable tramite meccanismi compilatori avanzati
- Best practice sull’utilizzo di async/await e su flussi dati efficienti dal punto di vista della memoria
- Strumenti matematici generici, astratti statici nelle interfacce e API ottimizzate per le prestazioni
- Preparazione dei progetti all’adozione delle nuove funzionalità di C# 12/13 su .NET 8
Fondamenti di ASP.NET Core e avvio dell’applicazione
- Configurazione della catena di middleware, del meccanismo host builder e ciclo di vita delle richieste
- Confronto tra API minimali e quelle basate su controller: criteri decisionali da tenere a mente
- Gestione della configurazione, impostazioni specifiche per l’ambiente e protezione delle informazioni sensibili
- Utilizzo di file statici, regole di routing e convenzioni sugli endpoint
- Configurazione del contenitore delle dipendenze e scelta corretta della durata di vita dei servizi
Progettazione e implementazione di API REST
- Modelli di maturità REST, modellazione delle risorse e definizione ottimale degli URI
- Adozione dei metodi HTTP, gestione dei codici di stato e negoziazione del contenuto
- Validazione input, binding dei modelli e integrazione con librerie tipo FluentValidation
- Strategie di versionamento adatte sia a API pubbliche che interne all’azienda
- Generazione automatica della documentazione tramite OpenAPI e Swagger UI
- Test d’integrazione delle API attraverso strumenti come TestServer e WebApplicationFactory
Iniezione delle dipendenze aziendale e principio di inversione del controllo
- Utilizzo della tecnica di iniezione tramite costruttore, gestione delle durate di vita dei servizi e prevenzione delle dipendenze non desiderate
- Applicazione dei pattern decorator e factory con il contenitore integrato di .NET
- Integrazione avanzata con librerie terze come Scrutor per la gestione delle dipendenze
- Ottimizzazione dell’organizzazione del codice tramite registrazione modulare dei servizi e strutture basate su feature
- Affrontare le tematiche trasversali ricorrenti tramite middleware ed elementi di filtraggio avanzati
Logging, configurazione e gestione centralizzata degli errori
- Implementazione di un logging strutturato con Microsoft.Extensions.Logging e Serilog
- Gestione dei livelli di dettaglio, contesto delle informazioni aggiuntive e configurazione dei sink di registrazione
- Creazione di middleware appositi per gestire le eccezioni globalmente e mantenere una gestione coerente degli errori
- Risposte d’errore conformi alla specifica RFC 7807, comprensive dei dati tipici di ProblemDetails
- Monitoraggio dell’integrità delle risorse tramite controlli di salute, telemetria e indicatori osservabili
- Preparazione al tracciamento distribuito attraverso l’assegnazione sistematica di identificatori correlati alle richieste
Architettura software per applicazioni enterprise in .NET
- Fondamenti delle architetture a livelli, esagonale e pulita nella progettazione dei sistemi
- Tecniche di design orientato al dominio e strumenti utilizzabili in .NET
- Applicazione dei pattern CQRS e dell’architettura basata su mediator tramite MediatR
- Implementazione del repository e dell’unità di lavoro con EF Core come strumenti fondamentali
- Sviluppo di architetture a fette verticali che raggruppano i componenti in base alle feature specifiche
- Analisi critica dei vantaggi e svantaggi tra approcci basati su monoliti, moduli isolati o microservizi per la realtà aziendale
Sicurezza per applicazioni web e API
- Scelta adeguata dei meccanismi di autenticazione: JWT, OAuth2, OpenID Connect ed accesso basato su cookie
- Definizione delle politiche di autorizzazione, controllo dell’accesso per base ai claim e tutela delle risorse sensibili
- Imposizione rigorosa del protocollo HTTPS, configurazione adeguata di HSTS e implementazione dei middleware per la protezione degli header HTTP
- Misure di prevenzione sicura di attacchi XSS, manipolazioni dati ed altre minacce tipiche secondo le linee guida OWASP Top 10
- Limitazione delle richieste in ingresso, regole CORS appropriate e gestione accurata dei token anti-falsificazione necessari per la sicurezza web
- Gestione e aggiornamento sicuro dei segreti tramite strumenti tipo Azure Key Vault abbinati a impostazioni variabili in base all’ambiente di riferimento
Qualità del codice, manutenibilità e buone pratiche ingegneristiche
- Adozione di convenzioni scritte, regole EditorConfig predefinite e strumenti tipo dotnet format per uniformare lo stile di scrittura del codice
- Analisi statica del codice attraverso analizzatori Roslyn ed eventuale integrazione con piattaforme tipo SonarQube
- Sviluppo di test unitari tramite xUnit e tecnica di mock appropriata grazie a Moq o NSubstitute
- Verifica affidabile dell’integrità delle soluzioni mediante test d’integrazione all’interno dei cicli CI/CD automatizzati
- Rifattorizzazione mirata e organica per ottimizzare la struttura di moduli ereditati da sistemi vecchi ormai in uso da anni
- Elaborazione di procedure efficaci di documentazione, descrizione dei contratti API e condivisione delle conoscenze tecniche tra i membri del team
Strategie di modernizzazione: analisi preliminare del codice legacy basato su .NET Framework
- Analisi strutturale dell’intero portfolio software al fine di classificare le applicazioni in base a impatto aziendale, complessità tecnica e utilità operativa
- Impiego degli strumenti tipo .NET Upgrade Assistant e analizzatori specifici per verificare la compatibilità delle parti coinvolte
- Rilevamento automatico di API obsolete, dipendenze legate esclusivamente a piattaforme specifiche e problematiche derivanti da librerie terze non aggiornate
- Individuazione precisa delle difficoltà connesse all’uso prolungato di funzionalità tipiche del sistema operativo Windows o alle migrazioni avanzate di protocollo WCF
- Creazione di un piano d’azione coerente per le attività di migrazione, organizzando progressivamente tali interventi in base alla rilevanza e al rischio tecnico previsto
Migrazione graduale ed espedienti per la convivenza tra sistemi nuovi e vecchi
- Applicazione del cosiddetto “pattern Strangler Fig” mediante l’adozione di una transizione parziale e continua dei moduli critici da sostituire nel vecchio sistema
- Iniziative detta “migrazione API-first” per introdurre nuovi servizi REST in grado di accedere alle funzionalità offerte dai vecchi sistemi< li>
- Creazione di canali d’integrazione basati su messaggi affidabili forniti da tecnologie tipo RabbitMQ, Azure Service Bus o Kafka
- Gestione condivisa dell’archivio dati principale e metodi strategici per lo sviluppo di più versioni dello schema strutturale comune< li>
- Configurazione sicura dei contesti operativi per far coesistere contemporaneamente applicazioni .NET Framework e soluzioni realizzate in .NET 8 all’interno delle medesime infrastrutture
- Pratiche consigliate per l’inserimento nei container dei moduli nuovi, lasciando intatto sui server IIS il codice ormai consolidato e legacy
Esercitazioni pratiche sulla migrazione e conclusione del corso
- Utilizzo dell’Upgrade Assistant su un progetto rappresentativo, precedentemente sviluppato in versioni più vecchie di .NET< li>
- Rifattorizzazione completa di sistemi Web Forms o servizi WCF per conformarli ai criteri imposti da ASP.NET Core
- Introduzione accurata di strumenti tipo dipendenze iniettate, logging centralizzato e meccanismi robusti per la gestione degli errori all’interno della versione appena aggiornata< li>
- Integrazione sistematica di elementi d’autenticazione sicura ed autorizzazione nei nuovi servizi creati
- Conferma dell’interoperabilità dei nuovi e vecchi moduli tramite una serie completa di test end-to-end accurati< li>
- Riepilogo finale, risposte alle domande dei partecipanti e orientamento strategico per la prosecuzione coerente del processo di aggiornamento tecnologico dopo il corso
Requisiti
- Esperienza nella programmazione con C# e nei principi della progettazione orientata agli oggetti
- Conoscenza dei concetti fondamentali dello sviluppo web (HTTP, HTML, CSS e nozioni base di JavaScript)
- Comprensione basilare delle basi di dati relazionali e della sintassi SQL
- L’esperienza precedente con .NET Framework o ASP.NET è utile ma non indispensabile
Destinatari del corso
- Sviluppatori e architetti .NET che intendono modernizzare applicazioni esistenti basate su .NET Framework
- Ingegneri software che stanno entrando nel campo dello sviluppo enterprise in .NET
- Responsabili tecnici incaricati della pianificazione della migrazione e della convivenza tra sistemi vecchi e nuovi
- Tecnici DevOps e specialisti infrastrutturali coinvolti nel ciclo di vita delle applicazioni .NET
Recensioni (2)
Interattività e soluzioni di codice al volo
Eduard-Emanuel Zaharia - Kruk Italia
Corso - Advanced Blazor
Traduzione automatica
possibilità di svolgere esercitazioni pratiche e pazienza del formatore
sheena - Te Manawa Taki Trauma System
Corso - Visual Studio 2022 IDE
Traduzione automatica