Come aggiornare le tue applicazioni WinForms e WPF senza impazzire

Come aggiornare le tue applicazioni WinForms e WPF senza impazzire.

Perché non puoi ignorare la modernizzazione delle tue applicazione desktop con .NET e come prepararti per trarne il massimo vantaggio

Si è concluso da poco Build 2019, 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 2019 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 Framework, magari utilizzando Windows Presentation Foundation (WPF).

Ho una buona notizia per te: il mese scorso è stata rilasciata una nuova versione del .NET Framework, la 4.8. La cattiva notizia è che questa sarà l’ultima release del framework che ci ha accompagnato per quasi due decadi. Non disperare però: grazie alle politiche di supporto di Microsoft puoi continuare a mettere la testa sotto la sabbia e non cambiare nulla per ancora una decina di anni.

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

Probabilmente hai già sentito parlare di .NET Core. Se così non fosse sappi che .NET Core è una nuova implementazione del runtime .NET (CoreCLR) chiamato CLR ed ha la prerogativa di essere nato open source (alcune parti del .NET Framework sono diventate open source con il tempo) 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?

SI, considerando che NET Core sarà l’unica implementazione del CLR che Microsoft evolverà in futuro. Il primo (grande) passo verso questa transizione è stato fatto con .NET Core 3.

In questi termini sembra che il passaggio a .NET Core sia un male necessario, un po’ come è stato il recente passaggio alla fatturazione elettronica. Ci tengo a dirti subito che non è così, .NET Core ha numerosi vantaggi che però ti racconterò (poco) più avanti.

Dando per assodato che presto (meglio) o tardi (peggio) dovrai affontare questo passaggio, prima di parlare degli aspetti positivi ci sono ancora due dubbi su cui voglio soffermarmi.

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

Questa è la prima buona notizia (ne troverai tante continuando a leggere). Il paradigma di programmazione non è cambiato. Tutti i tuoi investimenti su C#, XAML, WPF e MVVM ti serviranno: non butterai nulla.

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

Già oggi, alcuni vantaggi di .NET Core rispetto a .NET Standard sono:

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

Come faccio a iniziare la migrazione a Core 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 Core.

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 farti degli esempi 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 Core molto più morbido e meno invasiva.

Microsoft ad oggi, raccomanda di scegliere .NET Core 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 Core 3, WPF e Winform

Una delle novità più attese .NET Core 3, ora in Preview e rilasciata a settembre, è senza ombra di dubbio la possibilità di godere dei benefici di .NET Core anche nelle applicazioni desktop (WinForm e WPF).

Mi stai dicendo che le applicazioni desktop .NET Core potranno essere multipiattaforma e girare su unix e macOS? Purtroppo no: le applicazioni desktop saranno solo per Windows.

.NET Core 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 Core 3 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 (circa il 30%), supporta una ampio numero di database provider rispetto ad Entity Framework 6.

.NET Core 3

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 artificiali 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 Core 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 2019

Grazie ad ML.NET Model Builder, puoi creare modelli di intelligenza artificiale in modo visuale direttamente da Visual Studio 2019, 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 Core 5, l’ultimo passo per un runtime unificato per tutte le piattaforme

Come ti ho raccontato, .NET Core 3 fa un passo in avanti verso una piattaforma unificata aggiungendo all’ecosistema Core le applicazioni desktop. Questa transizione sarà completata con NET Core 5.

.NET Core 5 combinarà .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 Core 5

Non solo. Oltre a supportare tantissime piattaforme, .NET Core 5 sarà interoperabile con Java, Swift ed Object-C.

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

Quanto tempo hai a disposizione?

La roadmap della piattaforma .NET

Formalmente la transizione verso .NET Core si concluderà a novembre 2020 con il rilascio di .NET Core 5. E’ 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.

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

Categoria

WPF

Tag

Corso-WPF modernizzazione