net core e asp.net core in linux ver. 0.5

41
Guida a .NET Core & ASP.NET Core in ambiente Linux Ver. 0.5 Pietro Libro - 2016

Upload: pietro-libro

Post on 05-Apr-2017

173 views

Category:

Software


1 download

TRANSCRIPT

Page 1: NET Core e ASP.NET Core in Linux Ver. 0.5

Guida a

.NET Core & ASP.NET Core

in ambiente Linux

Ver. 0.5

Pietro Libro - 2016

Page 2: NET Core e ASP.NET Core in Linux Ver. 0.5

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.

Page 3: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 4: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 5: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 6: NET Core e ASP.NET Core in Linux Ver. 0.5

Fig. 6

Page 7: NET Core e ASP.NET Core in Linux Ver. 0.5

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):

Page 8: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 9: NET Core e ASP.NET Core in Linux Ver. 0.5

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):

Page 10: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 11: NET Core e ASP.NET Core in Linux Ver. 0.5

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.

Page 12: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 13: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 14: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 15: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 16: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 17: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 18: NET Core e ASP.NET Core in Linux Ver. 0.5

Yoeman

(TODO)

http://yeoman.io/

Page 19: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 20: NET Core e ASP.NET Core in Linux Ver. 0.5

Fig. 24

Page 21: NET Core e ASP.NET Core in Linux Ver. 0.5

Poi Download Node.js via openSUSE one-click (Fig.25):

Fig. 25

Page 22: NET Core e ASP.NET Core in Linux Ver. 0.5

Infine openSUSE e openSUSE 13 (Fig. 26 e 27):

Fig. 26

Page 23: NET Core e ASP.NET Core in Linux Ver. 0.5

Fig. 27

Page 24: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 25: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 26: NET Core e ASP.NET Core in Linux Ver. 0.5

Digitiamo il comando yo –version per una prima verifica dell'installazione:

Fig. 32

Page 27: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 28: NET Core e ASP.NET Core in Linux Ver. 0.5

Fig. 34

Page 29: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 30: NET Core e ASP.NET Core in Linux Ver. 0.5

Scegliamo il template Web Application Basic (Without Membership and Authorization) e poi Bootstrap

come UI framework:

Fig. 36

Page 31: NET Core e ASP.NET Core in Linux Ver. 0.5

Denominiamo il progetto come AspNetCoreHelloWorld:

Fig. 37

Page 32: NET Core e ASP.NET Core in Linux Ver. 0.5

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)

Page 33: NET Core e ASP.NET Core in Linux Ver. 0.5

Fig. 39

Page 34: NET Core e ASP.NET Core in Linux Ver. 0.5

A questo possiamo provare ad editare il nostro progetto tramite VS Code utilizzando il comando (se ci

troviamo nella directory AspNetCoreHelloWorld):

code .

Fig. 40

Page 35: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 36: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 37: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 38: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 39: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 40: NET Core e ASP.NET Core in Linux Ver. 0.5

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

Page 41: NET Core e ASP.NET Core in Linux Ver. 0.5

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