Migrare da .NET Framework a .NET moderno: costi, strategie e rischi

Hai un software aziendale scritto in .NET Framework? Guida per chi decide: perché migrare, cosa si può portare e cosa no, strategie a tappe o in blocco, costi con ipotesi dichiarate e il ruolo delle persone, IA compresa.

Pubblicato il 6 novembre 202613 min di lettura
Un vecchio edificio e uno nuovo collegati da un ponte, con il software che continua a funzionare durante il passaggio

Se la tua azienda usa da anni un gestionale, un portale o un programma di magazzino scritto da uno sviluppatore che "lavorava in .NET", è probabile che dietro le quinte giri .NET Framework. Funziona, nessuno lo tocca, e per questo è facile dimenticarsene. Prima o poi, però, qualcuno pone la domanda: "Ma questo software è ancora aggiornabile? Quanto costerebbe portarlo su qualcosa di più moderno?"

Questa guida è scritta per chi quella domanda deve rispondere senza essere uno sviluppatore: titolari, responsabili IT di una PMI, project manager. Spiega che cosa cambia tra il vecchio e il nuovo mondo .NET, quali parti si portano via con relativa facilità e quali no, quali strategie esistono, quanto costa con ipotesi dichiarate e dove restano indispensabili le persone, anche ora che gli strumenti di intelligenza artificiale aiutano molto.

Rack di server con cavi in una sala dati
Foto di Kevin Ache su Unsplash

Che cosa sono .NET Framework e .NET (senza gergo)

.NET è la piattaforma di Microsoft su cui girano moltissimi software aziendali: fornisce i mattoni di base (gestione dei dati, della rete, delle pagine web, della stampa) su cui lo sviluppatore costruisce il programma. Esistono due "generazioni":

L'analogia più vicina: .NET Framework è un'automobile affidabile di vent'anni fa che il costruttore continua a tenere in garage per i ricambi; .NET moderno è il modello attuale, con un motore diverso. Non si cambia il motore con un cacciavite: si valuta se conviene riparare, ristrutturare o sostituire.

Verifica sempre le date ufficiali. Il calendario di supporto di ogni versione è pubblico sul sito di Microsoft (cerca "ciclo di vita .NET"). Qualsiasi cifra o scadenza che leggi in un articolo, compreso questo, va confrontata con quella pagina prima di prendere decisioni.

Perché ci si pone il problema: le ragioni vere

Un software che funziona non va toccato "perché sì". Le ragioni per cui conviene valutare una migrazione sono concrete:

  1. Vincolo di piattaforma. .NET Framework richiede Windows. Se vuoi spostare il programma su un server economico Linux, su container, su un servizio cloud moderno, non puoi.
  2. Costi di hosting e prestazioni. Le versioni moderne usano meno memoria e processore a parità di lavoro. Su un software con molti utenti, la differenza si vede nella bolletta del server.
  3. Difficoltà a trovare persone. Chi inizia oggi studia .NET moderno. Trovare qualcuno che voglia lavorare su WebForms o su tecnologie di quindici anni fa è sempre più difficile e più caro.
  4. Librerie e integrazioni che si fermano. Sempre più componenti di terze parti (pagamenti, firma digitale, fatturazione elettronica, servizi cloud) offrono novità solo per .NET moderno. Le versioni per Framework smettono di essere aggiornate.
  5. Sicurezza e conformità. Un sistema operativo o un componente fuori supporto è un problema per le assicurazioni, per i clienti che ti auditano e per il GDPR (una violazione su un sistema non aggiornato è difficile da giustificare).
  6. Evoluzione del prodotto. Nuove funzioni (accesso da telefono, interfaccia moderna, integrazione con servizi esterni) sono più semplici da costruire sulla piattaforma attuale.

Esistono anche ragioni sbagliate per migrare: "perché la tecnologia è vecchia" senza un danno concreto, "perché lo fanno tutti", "perché il nuovo fornitore preferisce lavorare così". Se il software gira da dieci anni su un server stabile, serve a venti persone e non deve cambiare, lasciarlo com'è può essere la scelta più razionale. Ne parliamo più avanti.

Che cosa si porta via e che cosa no

La buona notizia è che molta parte del lavoro scritto in .NET Framework si trasferisce. La parte cattiva è che alcune tecnologie non hanno un equivalente diretto e vanno riscritte.

Si porta con relativa facilità

Va riscritto o ripensato

Tecnologia nel vecchio software Situazione nel mondo moderno Cosa si fa di solito
ASP.NET WebForms (pagine con "postback" e controlli trascinati) Non esiste in .NET moderno Si riscrive l'interfaccia con ASP.NET Core o Blazor
WCF lato server (servizi di scambio dati tra applicazioni) Non supportato in forma completa Si sostituisce con API web o gRPC; esiste un progetto della comunità per i casi semplici
Windows Workflow Foundation Non portato Si riscrivono i flussi o si adotta un motore di flussi alternativo
COM+ / Enterprise Services Dipendono da Windows Si ridisegna la parte coinvolta
Windows Forms e WPF (programmi con finestre) Funzionano, solo su Windows Si portano senza cambiare l'aspetto, ma restano per Windows
Librerie di terze parti non più mantenute Spesso non hanno versione moderna Si cerca un sostituto o si riscrive la parte

Una conseguenza pratica: la migrazione non è un solo progetto, ma tre. Una parte è quasi meccanica (aggiornare file e riferimenti), una parte è adattamento (sistemare le differenze), una parte è riscrittura. I costi stanno quasi tutti nella terza.

Le strategie possibili

Tre strade per migrare: tutto in una volta, a tappe, riscrittura da zero
Le tre strategie a confronto: la differenza non è solo di costo, ma di rischio e di impatto sull'attività

1. Tutto in una volta ("big bang")

Si congela il vecchio software, si migra tutto in un unico progetto e a una certa data si passa al nuovo.

2. A tappe ("incrementale")

Il vecchio e il nuovo software convivono. Un componente fa da "vigile urbano" (si chiama reverse proxy): le richieste che riguardano le parti già migrate vanno al nuovo sistema, le altre al vecchio. Si migra un modulo alla volta (fatturazione, anagrafiche, magazzino…) e il vecchio si spegne solo alla fine. In gergo si chiama approccio "strangler", cioè "a soffocamento": il nuovo cresce intorno al vecchio finché lo sostituisce.

3. Riscrittura da zero

Si decide che il vecchio codice non vale la pena di essere portato e si ricostruisce il sistema con tecnologie e un disegno nuovi.

Per la grande maggioranza delle PMI la strada più sensata è la seconda, oppure la prima per i software piccoli. La terza va scelta con la consapevolezza che non è una migrazione ma un nuovo progetto (vedi "Quanto costa sviluppare un gestionale su misura" e "Come si svolge un progetto software, fase per fase").

Le fasi di un progetto di migrazione, in parole semplici

  1. Inventario e valutazione. Si elencano progetti, librerie, database, integrazioni e tecnologie usate. Esistono strumenti di Microsoft (il .NET Upgrade Assistant e analizzatori di compatibilità) che segnalano automaticamente cosa non è portabile. Questo passaggio produce una mappa dei rischi: da qui in poi le stime sono molto più affidabili.
  2. Rete di sicurezza. Prima di toccare il codice, si scrivono test che fissano il comportamento attuale: "con questi dati in ingresso, il risultato deve essere questo". Senza test, a fine migrazione nessuno può dire se il nuovo software fa le stesse cose del vecchio.
  3. Aggiornamento "tecnico". Si portano i progetti al formato moderno, si sostituiscono le librerie obsolete, si adegua la configurazione.
  4. Adattamento e riscritture. Si sistemano le differenze di comportamento e si riscrivono le parti che non hanno equivalenti (tipicamente interfaccia e comunicazione tra servizi).
  5. Verifica con dati reali. Si fa girare il nuovo sistema in parallelo al vecchio, con copie dei dati veri, confrontando i risultati.
  6. Passaggio in produzione. Con un piano per tornare indietro, se qualcosa non va.
  7. Stabilizzazione. Alcune settimane di assistenza ravvicinata.

Quanto costa: un modo di ragionare

Chi propone un prezzo fisso senza aver visto il codice sta indovinando. La stima onesta parte da cosa c'è dentro il software. Quello che segue sono ordini di grandezza con ipotesi dichiarate, da non usare come preventivo.

Ipotesi di calcolo: costo medio di una giornata di lavoro di un professionista senior, tra 400 e 500 euro (si usa 450 euro come valore centrale); software scritto in modo ordinato, con una persona che conosce il dominio disponibile per le domande; nessun cambiamento di funzioni durante la migrazione.

Tipo di software Esempio Giornate indicative Ordine di grandezza (a 450 €/giorno)
Piccolo, solo logica e dati Un servizio che elabora file, un'utilità di calcolo 10 – 30 4.500 – 13.500 €
Medio, con interfaccia web moderna già a livelli Gestionale di reparto, API con poche integrazioni 40 – 100 18.000 – 45.000 €
Medio con interfaccia WebForms da riscrivere Portale interno o area clienti 100 – 250 45.000 – 112.000 €
Grande, con molte integrazioni e regole accumulate Gestionale completo con anni di storia 250 – 600 e oltre 112.000 – 270.000 € e oltre

Che cosa fa salire il costo:

Che cosa tiene basso il costo:

Ricorda infine di mettere a bilancio il costo dell'alternativa: restare dove sei ha un costo, fatto di rischio, di hosting più caro, di difficoltà a trovare persone e di interventi urgenti a prezzi da emergenza. Quel costo non compare su nessuna fattura, finché non arriva.

E l'intelligenza artificiale?

Gli strumenti di IA aiutano davvero in questo tipo di lavoro, e vale la pena dirlo con precisione:

Ma non decidono cosa conviene migrare, non conoscono le regole non scritte della tua azienda, non possono garantire che il risultato sia equivalente, e a volte sbagliano in modo convincente: un calcolo tradotto con un arrotondamento diverso passa tutti i controlli visivi e sbaglia le fatture. Il lavoro che resta alle persone è quello decisivo: valutare, disegnare la strategia, scegliere cosa tenere, verificare i risultati, rispondere dell'esito. Ne parliamo in dettaglio in "L'IA non scrive il software al posto tuo" e, per il caso specifico del codice vecchio, nell'articolo dedicato alla modernizzazione con l'IA.

Come scegliere con chi farlo

Alcune domande utili da fare a un fornitore o a un freelance prima di accettare un'offerta:

  1. "Hai già migrato software simili? Posso parlare con chi l'ha commissionato?"
  2. "Come fai la valutazione iniziale?" Una risposta seria include l'analisi del codice e un prezzo separato per questa fase.
  3. "Come garantisci che il nuovo software faccia quello del vecchio?" La risposta giusta parla di test e di esecuzione in parallelo.
  4. "Cosa succede se a metà strada cambiamo idea?" La strategia a tappe permette di fermarsi senza perdere il lavoro fatto.
  5. "Chi risponde del risultato?" Un nome e un ruolo, non "il team".
  6. "Come usi l'IA in questo lavoro e chi controlla il risultato?"

Se stai cercando la persona giusta, su LancerJob puoi pubblicare una richiesta di progetto descrivendo cosa hai (versione, tecnologie, dimensione) e ricevere proposte da freelance .NET specializzati. Prima di farlo, la guida "Come scrivere una richiesta di progetto efficace" ti aiuta a non lasciare fuori l'essenziale.

Quando non migrare

Per equilibrio, i casi in cui lasciare tutto com'è è una scelta sensata:

In questi casi vale la pena fare comunque tre cose a basso costo: copie di sicurezza verificate, documentazione minima (dove gira, come si riavvia, chi ha le credenziali) e un piano scritto per il giorno in cui qualcosa si romperà.

Errori da evitare

Dove servono ancora le persone

In un progetto di migrazione, le persone sono necessarie in ogni passaggio che conta. L'analista che ricostruisce le regole di business non scritte. Il progettista che sceglie tra strategia a tappe e big bang. Lo sviluppatore che riscrive le parti senza equivalente. Il tester che confronta vecchio e nuovo con dati reali. Il project manager che tiene insieme tempi, budget e collaudo. L'IA fa guadagnare tempo sulle parti ripetitive; la responsabilità del risultato resta di chi lo firma.

In sintesi

Hai un software in .NET Framework e vuoi capire da dove cominciare? Iscriviti alla waitlist di LancerJob: al lancio potrai descrivere il tuo progetto e ricevere proposte da professionisti .NET che hanno già affrontato migrazioni simili. Nel frattempo, leggi anche "Quanto costa sviluppare un gestionale su misura" e "I ruoli di un progetto software".