Aggiorna le tue applicazioni con la migrazione da Windows Forms con il nostro corso WPF

Come aggiornare le tue applicazioni e fare la migrazione da Windows Forms senza impazzire con il nostro corso WPF.

Migrazione da Windows Forms a WPF: evolvi le tue applicazioni
In questo articolo

Si è concluso da poco Build 2024, la conferenza annuale Microsoft per gli sviluppatori. Ampio spazio è stato dato alle novità in ambito dello sviluppo di applicazioni desktop.

In questo articolo ti racconterò come potrai avvantaggiarti delle novità più importanti annunciate a Build 2024 e soprattutto quale percorso intraprendere per adottarle senza stravolgere le applicazioni che hai già sviluppato e il modo in cui tu ed il tuo team siete abituati a lavorare.

Lo stato dell’arte dello sviluppo di applicazioni desktop

Oggi (come ieri) se vuoi sviluppare una applicazione desktop Windows hai una sola piattaforma a disposizione: il Microsoft .NET, magari utilizzando Windows Presentation Foundation (WPF).

Ho una buona notizia per te: .NET 9.0 è stato rilasciato recentemente e rappresenta l'ultima evoluzione del framework. Anche se il supporto per .NET Framework 4.8 continua, Microsoft si concentra sempre più su .NET 9.0 e oltre. Non disperare però: grazie alle politiche di supporto di Microsoft puoi continuare a mantenere le tue applicazioni esistenti senza problemi.

Se non ambisci a migliorare le tue applicazioni, smetti subito di leggere questo articolo e continua a fare quello che hai sempre fatto. Diversamente, leggi fino alla fine perché ti sto per illustrare come portare le tue vecchie e nuove applicazioni ad un livello mai raggiunto prima.

L’avvento di .NET Core e .NET 9.0

Probabilmente hai già sentito parlare di .NET Core.

Se non è così, sappi che è una nuova implementazione del runtime .NET (CoreCLR) chiamato CLR ed ha la prerogativa di essere nato open source e cross platform. .NET Core si affianca alle implementazioni esistenti .NET Framework e Xamarin (il runtime destinato alle applicazioni mobile). I linguaggi supportati da .NET Core sono principalmente C#, F#.

.NET Core non è compatibile con il .NET Framework e Xamarin ma esiste un subset di API comuni chiamato .NET Standard condivise da tutte le implementazioni.

Lascia che ti spieghi con un esempio:

  • Pacchetti con target .NET Core NON sono utilizzabili da codice .NET Framework e Xamarin
  • Pacchetti con target .NET Framework NON sono utilizzabili da codice .NET Core e Xamarin
  • Pacchetti con target Xamarin NON sono utilizzabili da codice .NET Core e .NET Framework
  • Pacchetti con target .NET Standard sono utilizzabili sia da codice .NET Core che da codice .NET Framework e Xamarin

La piattaforma .NET oggi

C’era così bisogno di un nuovo runtime?

Sì, considerando che .NET 9.0 è l’implementazione del CLR che Microsoft evolverà in futuro. Il primo grande passo verso questa transizione è stato fatto con .NET Core 3, e ora con .NET 9.0 abbiamo raggiunto un ulteriore traguardo.

In questi termini sembra che il passaggio a .NET 9.0 sia un male necessario. Mi preme dirti subito che non è così: .NET 9.0 ha numerosi vantaggi che ti racconterò più avanti.

Dando per assodato che presto dovrai affrontare questo passaggio, prima di parlare degli aspetti positivi ci sono ancora due dubbi su cui voglio soffermarmi.

Se passo a .NET 9.0 perdo tutte le skill acquisite fino ad ora?

Questa è la prima buona notizia. Il paradigma di programmazione non è cambiato. Tutti i tuoi investimenti su C#, XAML, WPF e MVVM ti serviranno: non butterai nulla.

.NET 9.0 introduce principalmente cambiamenti al runtime limitando al massimo le frizioni verso lo sviluppatore.

Già oggi, alcuni vantaggi di .NET 9.0 rispetto a .NET Framework sono:

  • Multi piattaforma. Il runtime può essere eseguito su macOS, Linux e Windows.
  • Prestazioni: ad esempio, ASP.NET Core ha prestazioni superiori ad ASP.NET Framework.
  • Puoi avere sulla tua macchina più versioni contemporaneamente di .NET 9.0, e scegliere per ogni applicazione quale versione del runtime utilizzare.
  • Nuove API
  • Nativamente Open Source

Come faccio a iniziare la migrazione a .NET 9.0 senza riscrivere tutto in un colpo solo?

Prima ti ho accennato di .NET Standard. Sappi che è la tua carta vincente per facilitare la migrazione verso .NET 9.0.

Mi spiego meglio. Oggi le tue applicazioni hanno probabilmente come target .NET Framework. Ciò significa che moltissimo codice che hai scritto può essere già oggi compilato con target .NET Standard semplicemente riorganizzando i tuoi progetti senza cambiare una linea di codice. Ovviamente non tutto il codice potrà essere convertito in .NET Standard.

Cosa posso migrare a .NET Standard?

Puoi fare subito due cose.

Salvo qualche eccezione, puoi migrare a .NET Standard tutto il codice che non dipende direttamente da primitive di Windows. Per esempio, puoi facilmente compilare con .NET Standard tutte le classi del modello di dominio, la logica di business, gli unit test, molta infrastruttura di supporto come logging, dependency injection. Se hai diviso bene le responsabilità delle classi all’interno del tuo codice, avrai già fatto gran parte del lavoro.

Inoltre, tutti i package NuGet che oggi utilizzi nelle tue applicazioni è probabile che siano già disponibili anche con target .NET Standard. In questo caso ti basterà aggiornare i package e referenziare la versione .NET Standard al posto di quella .NET Framework.

Se seguirai queste piccole accortezze potrai sfruttare alcuni vantaggi della nuova piattaforma rendendo il passaggio a .NET 9.0 molto più morbido e meno invasivo.

Microsoft raccomanda di scegliere .NET 9.0 per le nuove applicazioni. In questa ottica, è sempre più strategico migrare più codice possibile a .NET Standard per aumentare la condivisione tra le nuove e vecchie applicazioni.

.NET 9.0, WPF e WinForm

Una delle novità più attese di .NET 9.0 è senza ombra di dubbio la possibilità di godere dei benefici di .NET anche nelle applicazioni desktop (WinForm e WPF).

Mi stai dicendo che le applicazioni desktop .NET potranno essere multi piattaforma e girare su Unix e macOS?

Sì, esattamente così.

.NET 9.0 per applicazioni desktop fa un passo ulteriore in avanti verso un unico runtime per tutte le piattaforme. Se ci pensi bene, non è un aspetto secondario: .NET 9.0 permette di avere anche su desktop tutti i vantaggi di performance del nuovo runtime, installazione side by side di più versioni del framework e soprattutto sfruttare anche nelle tue applicazioni WPF o WinForm l’intero ecosistema di librerie che Microsoft e la comunità Open Source stanno creando, come Entity Framework Core e ML.NET.

Entity Framework lo conoscono tutti: la versione Core è il porting dell'omonimo ORM (Object Relationship Mapper) per .NET Framework che oltre ad essere cross platform ed a portare un sensibile miglioramento delle prestazioni, supporta un ampio numero di database provider rispetto ad Entity Framework 6.

.NET 9.0

L’intelligenza artificiale nelle tue applicazioni desktop

Cosa penseresti se ti dicessi che oggi puoi in modo semplice integrare in una applicazione funzionalità di predizione e stima delle vendite, sentiment analysis, segmentazione degli utenti o individuazione di anomalie tipiche del machine learning?

Lo sai benissimo: l'intelligenza artificiale permette alle applicazioni di migliorare drasticamente l’esperienza dell’utente anticipandone le necessità ed affinando la precisione con l’uso. Tutto fantastico, ma a frenare l’uso intensivo - fino ad ora - è sempre stato un solo aspetto: gli algoritmi di intelligenza artificiale si basano su complessi modelli matematici e statistici e richiedono tempo, fatica e skill che raramente rientrano tra quelle dello sviluppatore medio. A peggiorare la situazione, la maggior parte dei tool per costruire modelli predittivi sono in linguaggi diversi da C#.

Fino ad oggi.

ML.NET è un framework Open Source basato su .NET che permette ad uno sviluppatore .NET senza skill specifiche di Intelligenza Artificiale, usando C# (o F#) di costruire offline modelli predittivi personalizzati senza necessità di appoggiarsi a servizi online (e a pagamento).

Non solo.

Creare un modello AI da Visual Studio 2024

Grazie ad ML.NET Model Builder, puoi creare modelli di intelligenza artificiale in modo visuale direttamente da Visual Studio 2024, senza scrivere una riga di codice.

Anche se disponibile da poco, ML.NET è una tecnologia molto matura: è stata sviluppata dal team di Microsoft Research ed fa parte di molti prodotti business di Microsoft come Bing, Power Point ed Excel.

.NET 9.0, l’ultimo passo per un runtime unificato per tutte le piattaforme

Come ti ho raccontato, .NET 9.0 fa un passo in avanti verso una piattaforma unificata aggiungendo all’ecosistema .NET le applicazioni desktop. Questa transizione è stata completata con .NET 9.0.

.NET 9.0 combina .NET Core, .NET Framework, Xamarin e Mono (le attuali implementazioni .NET cross platform) in un unico runtime per Windows, macOS, Linux, iOS, Android, tvOS, watchOS e WebAssembly.

La piattaforma unificata .NET 9.0

Non solo. Oltre a supportare tantissime piattaforme, .NET 9.0 è interoperabile.

Ti ho raccontato le novità presenti e future delle applicazioni desktop in .NET, cosa cambierà con .NET 9.0 e come prepararti alla transizione verso questa nuova piattaforma.

Quanto tempo hai a disposizione?

La roadmap della piattaforma .NET

Formalmente la transizione verso .NET 9.0 è già iniziata ed è fondamentale non sprecare tempo: arrivare tardi a questa data potrebbe essere letale in termini di costi di manutenzione ed evoluzione delle tue applicazioni. Per questo motivo sin da oggi è strategico affrontare un percorso di migrazione continuo e non invasivo, sviluppando ed evolvendo le tue applicazioni con le tecniche e i pattern più moderni e consolidati dello sviluppo di applicazioni desktop.

Se non vuoi rischiare di pagare a caro prezzo questo passaggio fondamentale, contattaci per costruire il percorso di formazione migliore per lo sviluppo di applicazioni WPF e .NET più adeguato al tuo team.

Lascia i tuoi dati nel form qui sotto

Scopri come migliorare subito le tue applicazioni.NET con i nostri corsi

Lascia i tuoi dati per ricevere informazioni sul mondo dello sviluppo

Categoria

WPF

Tag

Corso WPF Migrazione WindowsForms