ASP.NET Core sì o ASP.NET Core no?

In questo ultimo periodo, sia a lavoro sia per progetti miei, mi capita sempre più spesso di trovarmi di fronte al "dilemma" che dà il titolo a questo post: in questo nuovo progetto utilizzo ASP.NET 4.x o ASP.NET Core?

Quando usare ASP.NET Core

Uno dei punti di forza di ASP.NET Core è la possibilità di essere eseguito anche su altre piattaforme oltre che Windows.
Tali ambienti (Linux e macOS) possono essere usati anche durante lo sviluppo e non solo in produzione.
A supporto delle attività di sviluppo ci sono strumenti come Visual Studio Code che garantiscono comunque una certa velocità nelle operazioni quotidiane di uno sviluppatore, rispetto a un banale editor di testo.
Inoltre, la leggerezza e scalabilità di ASP.NET Core rendono le applicazioni molto adatte ad un'architettura applicativa basata su microservices.
Questo discorso va a braccetto con la possibilità di utilizzare una infrastruttura a containers come Docker.
Questo punto è molto interessante: data la possibilità di eseguire l'applicazione anche su Linux, può essere utilizzata indistintamente sia la versione di Docker per Windows, sia quella per Linux.
Un altro dei motivi per cui si può scegliere di utilizzare ASP.NET Core piuttosto che la versione "standard", è la necessità di avere performaces molto elevate.
ASP.NET Core è almeno 10 volte più veloce rispetto ad ASP.NET.
Questo è dovuto anche alla sua elevata scalabilità.

Quando usare ASP.NET 4.x

Se la vostra applicazione web utilizza già ASP.NET Full Framework e non avete intenzione di migrare ad ASP.NET Core, potete anche smettere di leggere qua l'articolo e rimanere su questo ecosistema. :)

Un altro punto che vi può far optare subito per questa scelta è la disponibilità di librerie di terze parti solo per il full framework e non per ASP.NET Core. Sia che queste siano su NuGet che componenti di terze parti quali Telerik o Syncfusion.
Altre cose che non sono supportate da ASP.NET Core e che vi dovrebbero "trattenere" su quest'altra scelta sono ad esempio la mancanza di Web Forms e WCF.
Se utilizzate almeno una di queste due tecnologie e non volete riscrivere la vostra applicazione, vi conviene rimanere su questa strada.

Ricapitolando

Quando usare ASP.NET Core:

  • i server sono su Linux
  • si è scelto di utilizzare Docker come container delle proprie applicazioni
  • performance e scalabilità sono due requisiti fondamentali

Quando usare ASP.NET Full Framework:

  • l'applicazione che state sviluppando utilizza già il Full Framework e non avete le necessità dei punti precedenti
  • utilizzate librerie di terze parti che non supportano .NET Core

Conclusioni

Le mie conclusioni sono che non esiste una verità assoluta sull'adozione di ASP.NET Core su un progetto, che sia nuovo o una migrazione di uno esistente ASP.NET 4.x.
Questa scelta dipende sempre dai requisiti che avete e da quanto la vostra applicazione sfrutterà le nuove funzionalità di ASP.NET Core da cui non potete prescindere assolutamente (le vedremo nel prossimo post).

Slide degli eventi di Ottobre [2016]

A ottobre è ricominciata ufficialmente la "stagione degli eventi" e quest'anno ho avuto l'opportunità di parlare a due di questi.

21 Ottobre - EtnaDev - ASP.NET Core e Docker

Secondo anno di fila che vengo chiamato come speaker a questo evento molto importante.
Uno dei pochi in Italia che ha più tracce contemporaneamente e tutte di sviluppo.
Durante la mia sessione ho parlato dei concetti base di ASP.NET Core 1.0 e di come fare il deploy su container Docker.
Qua sotto potete trovare le slide che ho utilizzato per la sessione.

22 Ottobre - 1nn0va -  Works with ASP.NET Core on Linux and Mac

Il giorno seguente sono volato (materialmente :)) a Pordenone per un altro evento.
Durante questa sessione ho parlato di come installare e configurare ASP.NET Core su Linux (Kubuntu 16.04) e sopratutto gli strumenti con cui è possibile lavorarci.
Primo fra tutti Visual Studio Code, che come ho già scritto altre volte, sta diventando il mio strumento di lavoro preferito e sopratutto quello che uso di più durante il giorno.
Qua sotto potete trovare le slide che ho usato per la sessione.