Guida a .NET Core & ASP.NET Core in ambiente Linux Ver. 0.5 Pietro Libro - 2016
Guida a
.NET Core & ASP.NET Core
in ambiente Linux
Ver. 0.5
Pietro Libro - 2016
Prefazione
Non sono un esperto Linux, ma è un po' che pensavo alla scrittura di questo testo ed alla fine mi sono
deciso. Sono un grande appassionato delle tecnologie Microsoft® ed in particolare dell'Environment .NET e
mi sarebbe sempre piaciuto approfondire l'uso di una distribuzione Linux fin dai tempi degli studi
Universitari. Certo il progetto Mono poteva (puo') essere un buon punto di partenza, ma un po' per pigrizia,
un po' per questioni lavorative ho sempre rimandato il raggiungimento di questo obiettivo.
.NET Core mi sembra una buona occasione per non rimandare oltre, quindi eccoci qua. L'obiettivo non è
sicuramente creare un documento che sia esauriente in tutte le sue parti, questa è una prima stesura, con
ancora dei TODO presenti (e tanti punti ancora da sviluppare...), ma ho voluto rendere pubblico lo stesso il
lavoro fino ad oggi compiuto per ricevere quanto prima dei feedback ([email protected]) e creare un
documento tecnico di buon livello, ma che sia allo stesso tempo di facile lettura e comprensione,
coinvolgendo quanti piu' lettori (sviluppatori) possibili.
Aggiornero' quanto piu' possibile e celermente il documento, del resto le tecnologie evolvono molto
rapidamente e le nostre conoscenze, per quanto possibile, dovrebbero seguire lo stesso andamento.
Buona lettura.
Pietro Libro
Dedicato alla mia piccola Giulia ed Eleonora.
Installazione .NET Core 1.0 RTM
L'installazione di .NET Core è veramente semplice e le varie procedure possono essere eseguite a partire da
questo link: https://www.microsoft.com/net/core sia che lo si voglia utilizzare in ambiente Windows, Linux
o macOS. Essendo questo documento orientato all'utilizzo di .NET Core su Linux, possiamo scegliere una
delle distribuzioni attualmente supportate tra:
Red Hat Enterprise Linux 7 Server (RHEL)
Ubuntu
Debian
Fedora
CentOS, Oracle Linux
openSUSE
Per la stesura del documento è stato scelto il sistema openSUSE 13.2 64 bit scaricabile direttamente dal sito
ufficiale all'indirizzo https://software.opensuse.org/132/en.
Una volta installato il sistema operativo su sistema fisico (o virtuale) possiamo subito passare
all'installazione di .NET Core 1.0 seguendo i tre passi descritti dalla guida
(https://www.microsoft.com/net/core#opensuse)
Passo 1 - Installazione del .NET Core SDK
E' sufficiente digitare (copiare\incollare) i comandi seguenti:
sudo zypper install libunwind libicu curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=827532 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin
Ottenendo il risultato mostrato in Fig. 1 e Fig. 2:
Fig. 1
Fig. 2
A questo punto possiamo subito verificare che l'installazione sia andata a buon fine digitando il comando:
dotnet –version
Il risultato è mostrato in Fig. 3
Fig. 3
Passo 2 – .NET Core Hello, World!
In Documents ( o dove preferite) creiamo una nuova directory NetCoreProjects ed al suo interno ancora una
denominata HelloWorld utilizzando i comandi seguenti (Fig. 4):
mkdir NetCoreProjects mkdir HelloWorld cd HelloWorld
Fig. 4
Infine il comando:
dotnet new
E poi
dotnet restore
Fig 5.
Se tutto è andato come previsto siamo pronti ad eseguire la nostra prima applicazione .NET Core in
ambiente Linux, eseguendo il comando:
dotnet run
Fig. 6
Visual Studio Code
Sebbene sia possibile editare i sorgenti con l'editor di testo preferito, senza ombra di dubbi, avere a
disposizione un IDE leggero e flessibile penso che sia il "sogno" di qualunque sviluppatore, ed allora non ci
resta che installare Visual Studio Code, che in piena filosofia .NET Core, è utilizzabile in ambiente Windows,
Linux e macOS. Nel momento in cui si scrive la versione presente in rete è la 1.5, il file di installazione per il
proprio ambiente è scaricabile al link seguente: https://code.visualstudio.com/Download
Nel nostro caso preleviamo la versione ".rpm, Red Hat, Fedora, CentOS" come da Fig. 7:
Fig. 7
A questo punto ci verrà chiesto di salvare il file (Fig. 8) e dopo il download l'installazione dovrebbe partire in
automatico:
Fig. 8
Se cosi non fosse, procedere manualmente, aprendo una nuova finestra di "Dolphin" (ovvero il gestore di
file per KDE4) e visualizziamo il contenuto della directory dove abbiamo salvato il file di installazione in
precedenza (Fig 9):
Fig. 9
Classico doppio click (Windows Style) e dopo qualche instante dovrebbe aprirsi la finestra che chiede la
conferma di installazione dell'applicazione (Fig.10):
Fig. 10
Premere "Continue" (o "Continua", dipende dalla lingua scelta durante la fase di installazione del sistema
operativo). E poi eventualmente, come in Fig. 11, ancora "Continue":
Fig. 11
Se necessario, specificare le credenziali di accesso come utente root ed attendere il tempo necessario
affinché venga terminata (Fig. 12):
Fig. 12
Utilizzando il Kickoff Application Launcher e navigando nel sottomenu Applications\Development dovrebbe
essere presente la voce "Text Editor, Visual Studio Code" (Fig. 13):
Fig. 13
Solito click, ed avviamo una nuova istanza di Visual Studio Code (d'ora in avanti VS Code):
Fig. 14
Tutti i dettagli relativi alla configurazione, all'uso ed esempi di VS Code sono descritti qui:
https://code.visualstudio.com/docs, ma per iniziare a sviluppare nel modo "corretto" è necessario
spendere almeno due parole sulle estensioni ed al supporto dell'IntelliSense.
Estensioni
Come da documentazione, VS Code è distribuito built-in con supporto a Javascript, Typescript e Node.js, ma
un ricco ecosistema permette di estenderlo all'utilizzo verso altri linguaggi (ad esempio C++, C#, Python,
PHP) e runtimes. Per installare una nuova estensione è sufficiente aprire VS Code, cliccare l'ultimo bottone
della barra sinistra (Extensions o CTRL+SHIFT+X) e digitare nel campo filtro le parole chiave dell'estensione
che si vuole installare.
Supporto IntelliSense
Affinché VS Code abbia il supporto all'IntelliSense per C# è necessario installare l'estensione "C# for Visual
Studio Code (powered by OmniSharp)". La procedura da eseguire è quella descritta nel paragrafo
precedente ("Estensioni"), digitando il testo "C#" (Fig. 15).
Fig. 15
Dopo aver installato l'estensione è necessario abilitarla tramite il comando Enable.
Fig. 16
Affinché le modifiche siano rese effettive VS Code chiede di essere riavviato. Per editare il precedente
progetto HelloWorld! tramite VS Code ci spostiamo nella cartella HelloWorld e digitiamo il comando (Fig.
17):
code .
Fig. 17
Durante l'avvio di VS Code si potrà notare in basso allo schermo la dicitura Downloading and configuring
.NET Core Debugger (Fig. 18):
Fig. 18
E poi il popup con una domanda chiederà conferma dell'aggiunta degli assets necessari ad eseguire la build
ed il debug del progetto direttamente da VS Code. Scegliamo "Yes" (o secondo della lingua impostata, Fig.
19).
Fig. 19
Quanto descritto avviene perché a livello di Solution la sottodirectory .vscode è assente, e con essa i relativi
file launch.json e tasks.json che descrivono le attività di build e debug. Dopo la conferma la precedente
sottodirectory verrà creata: (Fig. 20).
Fig. 20
Per verificare che l’IntelliSense sia stato correttamente installato clicchiamo all'interno dell'editore il file
Program.cs e proviamo a scrivere la parola Console, cosi' come in Fig. 21, se la procedura fino adesso
descritta è andata a buon fine, allora dovremmo veder comparire la finestra con i suggerimenti, altrimenti
bisogna rivedere i passi fino ad ora descritti.
Fig. 21
Siamo giunti cosi' al "magico" momento della compilazione e dell'esecuzione del nostro progetto,
premiamo F5 e VS Code inizierà a macinare un po', ma alla fine dovremmo ottenere a livello di console la
magica frase Hello, World!, le impostazioni base per sviluppare e debuggare codice con VS Code in
ambiente Linux sono pronte (Fig.22).
Fig. 22
ASP.NET Core 1.0
ASP.NET Core racchiude sotto un unico nome le tecnologie ASP.NET (5), MVC (6) e Web API (2) e come nel
caso di .NET Core 1.0 è un framework open-source e cross-platform per lo sviluppo di moderne applicazioni
internet, fortemente orientate al mondo cloud, come Web Apps, IoT (Internet of Things) e servizi di
backend per il mobile. ASP.NET Core, secondo delle necessità puo' essere eseguito su .NET Core o sulla
versione completa del .NET Framework. E' composto da componenti modulari con overhead minimo cosi'
da poter sviluppare applicazioni composte solo da quello che effettivamente serve, sia che ci troviamo in
ambiente Cloud che on-premise. Tutto questo deriva dal fatto che ASP.NET Core non è basato su
System.Web.dll, ma da un insieme granulare di pacchetti NuGet, che permette di includere solo quello di
cui abbiamo effettivamente bisogno. Il codice completo di ASP.NET Core è scaricabile via GitHub
all'indirizzo seguente: https://github.com/aspnet/home. La documentazione completa di ASP.NET Core 1.0
è consultabile al link seguente: https://docs.asp.net/en/latest/index.html
Installazione Node.js
Per installare ed utilizzare Yoeman, abbiamo bisogno di installare npm, il Package Manager per Javascript
presente in Node.js. Per installare quest'ultimo, possiamo utilizzare il link https://nodejs.org/en/ (Fig. 23)
Fig.23
Oppure utilizzare il Package Manager del nostro sistema operativo partendo da questo indirizzo
https://nodejs.org/en/download/package-manager/ e scegliendo il link openSUSE and SLE come in Fig. 24
Fig. 24
Poi Download Node.js via openSUSE one-click (Fig.25):
Fig. 25
Infine openSUSE e openSUSE 13 (Fig. 26 e 27):
Fig. 26
Fig. 27
A questo punto dovrebbe essere visualizzata la finestra per l'installazione (Fig. 28) , quindi seguire le
istruzioni del caso:
Fig. 28
Eventualmente si puo' procedere con l'installazione manuale, come descritto all'indirizzo seguente:
https://nodejs.org/en/download/package-manager/#opensuse-and-sle. Per verificare l'installazione
digitiamo il comando:
npm –version
Fig. 29
Installazione yoeman
Siamo quindi pronti ad installare yoeman. In una nuova finestra di terminale digitiamo:
sudo npm install –g yo
Fig. 30
ed attendiamo fino al termine dell'installazione (Fig. 31):
Fig. 31
Digitiamo il comando yo –version per una prima verifica dell'installazione:
Fig. 32
Generatore aspnet-core
L'elenco dei generatori presenti nel repository di yoeman è presente qui: http://yeoman.io/generators/.
Nel nostro caso abbiamo bisogno del generatore aspnet (Fig. 33):
Fig. 33
L'installazione di un generatore (nel caso specifico aspnet) è molto semplice, basta digitare il comando:
sudo npm install –g generator-aspnet
Fig. 34
ASP.NET Core Hello, World!
Siamo quindi pronti a creare il nostro primo progetto ASP.NET Core. Nella directory Document creiamo una
nuova cartella AspNetCoreProjects e ci spostiamo in quest'ultima. Digitiamo il comando yo aspnet:
Fig. 35
Scegliamo il template Web Application Basic (Without Membership and Authorization) e poi Bootstrap
come UI framework:
Fig. 36
Denominiamo il progetto come AspNetCoreHelloWorld:
Fig. 37
Come suggerito al termine delle operazioni (Fig. 38) eseguiamo uno dopo l'altro i comandi seguenti:
cd AspNetCoreHelloWorld
dotnet restore
dotnet build
dotnet run
Fig. 38
Dopo l'ultimo comando (dotnet run), aprendo il nostro browser all'indirizzo di default
http://localhost:5000 la nostra prima applicazione ASP.NET Core è up & running !!! (Fig. 39)
Fig. 39
A questo possiamo provare ad editare il nostro progetto tramite VS Code utilizzando il comando (se ci
troviamo nella directory AspNetCoreHelloWorld):
code .
Fig. 40
Come nel caso precedente VS Code chiederà di aggiungere automaticamente gli assets per la build ed il
debug dell'applicazione. A questo punto, se volessimo avviare in modalità debug l'applicazione sarebbe
sufficiente premere il tasto F5.
Fig. 41
ASP.NET Core Web API e Azure
(Introduzione progetto esempio – TODO)
Microsoft Azure
TODO
Come nel caso precedente andremo ad utilizzare yoeman per creare la base del progetto che andremo a
pubblicare su Microsoft Azure. Se non lo fossimo già, ci spostiamo nella directory AspNetCoreProjectes e
digitiamo il comando:
yo aspnet
Fig. 42
Questa volta scegliamo il template Web Api Application e denominiamo il progetto come MyBlogWebApi.
Al termine delle operazioni ci spostiamo nella directory creata (solito comando cd) e digitiamo in sequenza
i comandi (a questo punto dovrebbe essere automatico):
dotnet restore
dotnet build
dotnet run
Possiamo testare questa prima versione dell'applicazione digitando nella barra degli indirizzi
http://localhost:5000/api/values (Fig. 43)
Fig. 43
Siamo quindi sicuri che la nostra prima ASP.NET Core Web Api funziona, possiamo quindi procedere con la
pubblicazione su Azure, ma prima è necessario installare e configurare Git.
Cosè Git ?
TODO
Installazione "Git"
Come indicato dalla pagina presente all'indirizzo https://git-scm.com/download/linux, per il sistema
operativo openSUSE è sufficiente digitare il seguente comando in una finestra di terminale:
sudo zypper install git
Dopo l'installazione è configuriamo la nostra identità con i comandi:
git config --global user.name "Nome Cognome"
git config --global user.email [email protected]
Possiamo verificare la configurazione digitando i comandi:
git config user.name
git config user.email
Come nella figura seguente:
Fig. 44
Usando il parametro --global abbiamo impostato la nostra identità per tutti i nostri progetti (anche
futuri), ma se per un particolare progetto volessimo impostare un'identità diversa bisognerà rieseguire i
comandi omettendo l'opzione --global (ulteriori dettagli qui) https://git-scm.com/book/en/v2/Getting-
Started-First-Time-Git-Setup.
Prima di pubblicare su piattaforma Azure, manca ancora da impostare VS Code. Apriamo il progetto
MyBlogWebApi e clicchiamo sull'icona di Git; Verrà visualizzato un messaggio ad indicare che il nostro
Workspace non è stato ancora configurato per Git (Fig. 45):
Fig. 45
Clicchiamo su Initialize git repository, inseriamo un commento (ad esempio "My First Commit from VS
Code") e poi premiamo la combinazione CTRL+Enter (oppure l'icona "Visto" in alto) :
Fig. 46
Ora, per pubblicare su Azure abbiamo bisogno di un account (Trial, a pagamento o collegato alla nostra
Subscription) e creare una nuova Azure Web App direttamente tramite il portale Azure, raggiungibile
all'indirizzo https://portal.azure.com (ulteriori dettagli sull'utilizzo del portale di Azure esulano da questo
documento).
Fig. 47
Per completare la pubblicazione con successo è necessario seguire i passi descritti a questo link Local Git
Deployment to Azure App Service, dallo Step 3 in poi dato che tramite VS Code abbiamo già inizializzato il
nostro repository. Tramite il portale Azure recuperiamo l'url ("GIT URL" in FIG. 48)per la pubblicazione delle
nostre Web Api tramite Git:
Fig. 48
Se non l'avessimo già fatto, apriamo una nuova istanza del terminale direttamente da VS Code tramite la
sequenza di tasti CTRL+SHIFT+P e poi scegliamo la voce New Integrated Terminal (la prossima volta è
possibile utilizzare direttamente la combinazione di tasti suggerita):
Fig. 49
Quindi digitiamo il comando:
git remote add azure GIT_URL
Il quale aggiunge una "named reference" a un "remote repository", nello specifico viene creata un
riferimento di nome "azure" con il repository (remoto) della nostra Web App. Poi digitiamo il comando:
git push azure master
Durante l'esecuzione del comando verrà richiesta la password utilizzata per la creazione delle credenziali
FTP\GIT tramite il portale di Azure per trasferire tutto il contenuto verso il Web App Service remoto.
Al termine dell'esecuzione del comando se tutto è stato eseguito correttamente, navigando all'indirizzo
http://<yourwebsitename>.azurewebsites.net/api/values (dove "yourwebsitename" è il nome scelto
durante il Wizard di creazione del Web App Service) dovremmo avere le nostre Web API Up & Running (Fig.
50):
Fig. 50
Entity Framework Core
TODO