Contattataci

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
 21 ore

Numero di Partecipanti


Prezzo per partecipante

Recensioni (2)

Corsi in Arrivo

Categorie relative