.NET Core e Linux per il Mobile
Pietro Libro
ROME 24-25 MARCH 2017
About me 
• Senior Software Engineer
• Systems Test Development
• Project Leader for Factory 4.0 MES
• http://www.gfms.com/country_CH/
LinkedIn: https://www.linkedin.com/in/pietrolibro/
Blog: http://blogs.ugidotnet.org/PietroLibroBlog
DomusDotNet: http://www.domusdotnet.org/
Agenda
• .NET Core
• .NET Core: Linux
• ASP.NET Core
• Deployment, 2 scenari
• Microsoft Azure App Service
• Amazon Linux Virtual Machine
• Client: Xamarin Android
• Question Time
.NET Core
• Piattaforma Cross-Platform, gestita da Microsoft e Community GitHub
• Windows, Linux, macOS, IoT, embedded, cloud etc..• Q
• Distribuzione Flessibile
• Riga di comando
• Versione Cross-Platform del .NET Framework (al livello di BCL)
• Fornisce subset di API disponibili in .NET Framework, Xamarin/Mono
• Implementa le specifiche .NET Standard Library
• Open Source: Licenza MIT e APACHE 2, documentazione tramite CC-BY
• Supportato da Microsoft
.NET Core
• Linguaggi supportati: C# e F#
• Di base un singolo modello di applicazione «Console Apps»(testo), su cui
sono stati costruiti modelli aggiuntivi:
• ASP.NET Core (parleremo oggi)
• Piattaforma UWP (Universal Windows Platform) per Windows 10
• Xamarin.Forms
• Composto da:
• Microsoft .NET Core Runtime
• Framework libraries
• Microsoft .NET Core SDK  Per iniziare
• .NET «app host» -> .NET Core Apps
• Altre versioni, pre-release: https://tinyurl.com/zd6lmla
• .NET Core Installation Guide: https://tinyurl.com/hurwe8f
• Per le Demo:
• Sviluppo: .NET Core 1.1.1 con SDK 1.0.1 del 2017.03.07 (VS 2017)
.NET Core
.NET Core: Linux
• Versioni minime supportate (https://tinyurl.com/hurwe8f):
• Red Hat Enterprise Linux 7 Server
• Ubuntu 14.04, 16.04 e Linux Mint 17
• Debian 8.x
• Fedora 23
• CentOS 7.1 & Oracle Linux 7.1
• openSUSE 13.2
• Distribuzione demo: Debian 8.7.1 su Hyper-V
• Download iso: https://tinyurl.com/26plvas
• Installazione e prima applicazione .NET Core in soli 3 steps!
ASP.NET Core
• Modello di applicazione Web-Oriented
• Composto da moduli con minimo overhead e massima flessibilità nella
«costruzione» della propria applicazione
• Astrazione tramite interface
• Non piu’ basato su System.Web.dll
• Basato su package NuGet da includere secondo le necessità
• Principali vantaggi:
• Integrazione dei framework lato client (Grunt, Gulp, Knockout etc.)
• HTTP (Request) pipeline leggera e modulare
• Host in IIS o in un proprio processo
• Built-in Dependency Injection
• Unico path per Web UI (MVC) e Web APIs (RESTful applications)
• Per iniziare:
• ASP.NET Core Getting Started: https://www.asp.net/core
Demo
«.NET Core & ASP.NET Core App»
ASP.NET Core
• ASP.NET «Core App» è una «Console App» con Web Server nel «Main»
• Kestrel, cross-platform Web Server per ASP.NET Core basato su libuv
• Libuv, cross-platform async I/O library: https://tinyurl.com/k2hdq7y
• Possono essere utilizzati altri Web Server: https://tinyurl.com/hz6njyj
• «Startup» class
• Configurazione Request Pipeline: Configure (Middleware)
• Static File
• Authentication
• Routing
• …
• Configurazione Servizi: ConfigureServices (Dependeny Injection)
• ASP.NET MVC Core
• Entity Framework Core
• Identity
• …
ASP.NET Core: Pipeline
Middleware: https://tinyurl.com/zo79fty
Demo
«CodeMotion2017 Blog Api»
Deployment
Due possibili scenari:
• Continuous Deployment su Azure:
• Creazione Account su Azure (anche Trial)
• Configurazione Azure Service App
• Configurazione Git Repository
• Configurazione Visual Studio Code
• Docs: https://tinyurl.com/zbybrnk
• Deployment su Linux Virtual Machine (Ubuntu Server 14.04, Amazon)
• Creazione Account su Amazon Web Service (anche Trial)
• Configurazione Putty
• Installazione .NET Core runtime
• Configurazione HTTP Reverse Proxy (nginx)
• Configurazione Filezilla (o script automatico)
Ambienti «confezionati» per la Demo per esigenze temporali
Demo
Pubblicazione su «Azure App Service» e «Amazon Linux Virtual Machine»
Client: Xamarin Android
Applicazione Xamarin Android in Visual Studio 2017
Demo
«CM Blog Api Client» (Xamarin Android Client)
Toolbox
• Visual Studio Code
• Editor potente e flessibile eseguibile in ambiente Windows, macOS, Linux
• Download: https://code.visualstudio.com/
• Estensibile e Personalizzabile, GIT built-in, IntelliSense, Debugging
• Entity-Framework Core (O/RM)
• Leggero, Estensibile Cross-Platform
• MSSQL, SQLite, DB2, MySQL, SQL Server Compact, PostgreSQL, InMemory
• Code First, DB-First
• https://tinyurl.com/jcha2p6
• NGINX: HTTP e Reverse Proxy Server - https://nginx.org/en/
• Putty: SSH e TelNet client - http://www.putty.org/
• Filezilla: https://filezilla-project.org/
• Microsoft Azure: Piattaforma e Servizi di Cloud Computing
• https://portal.azure.com
• f
• Amazon Web Services: Piattaforma e Servizi di Cloud Computing
• https://aws.amazon.com
Question Time
Entity Framework (EF) Core
Paragone con il «fratello maggiore»:
https://docs.microsoft.com/en-us/ef/efcore-and-ef6/
Install-Package Microsoft.EntityFrameworkCore.Sqlite
Aggiunta EF Tools per gestione database
Install-Package Microsoft.EntityFrameworkCore.Tools -Version
1.1.0-msbuild3-final
Nella demo creiamo un DB partendo dal codice
E’ ovviamente anche possibile partire da un database esistente dal
quale estrarre il modello:
https://docs.microsoft.com/en-us/ef/core/get-
started/aspnetcore/existing-db
Entity Framework (EF) Core
EF Core è un O/RM
Leggero
Estensibile
Cross-platform
Supporto a: MSSQL, SQLite, DB2, MySQL, SQL Server Compact,
PostgreSQL, InMemory, MyCat…e custom
Docs ed esempi: https://docs.microsoft.com/en-us/ef/
Aggiunta EF Core per SQLite al progetto
Install-Package Microsoft.EntityFrameworkCore.Sqlite
Aggiunta EF Tools per gestione database
Install-Package Microsoft.EntityFrameworkCore.Tools -Version
1.1.0-msbuild3-final

.NET Core, ASP.NET Core e Linux per il Mobile

  • 1.
    .NET Core eLinux per il Mobile Pietro Libro ROME 24-25 MARCH 2017
  • 2.
    About me  •Senior Software Engineer • Systems Test Development • Project Leader for Factory 4.0 MES • http://www.gfms.com/country_CH/ LinkedIn: https://www.linkedin.com/in/pietrolibro/ Blog: http://blogs.ugidotnet.org/PietroLibroBlog DomusDotNet: http://www.domusdotnet.org/
  • 3.
    Agenda • .NET Core •.NET Core: Linux • ASP.NET Core • Deployment, 2 scenari • Microsoft Azure App Service • Amazon Linux Virtual Machine • Client: Xamarin Android • Question Time
  • 4.
    .NET Core • PiattaformaCross-Platform, gestita da Microsoft e Community GitHub • Windows, Linux, macOS, IoT, embedded, cloud etc..• Q • Distribuzione Flessibile • Riga di comando • Versione Cross-Platform del .NET Framework (al livello di BCL) • Fornisce subset di API disponibili in .NET Framework, Xamarin/Mono • Implementa le specifiche .NET Standard Library • Open Source: Licenza MIT e APACHE 2, documentazione tramite CC-BY • Supportato da Microsoft
  • 5.
    .NET Core • Linguaggisupportati: C# e F# • Di base un singolo modello di applicazione «Console Apps»(testo), su cui sono stati costruiti modelli aggiuntivi: • ASP.NET Core (parleremo oggi) • Piattaforma UWP (Universal Windows Platform) per Windows 10 • Xamarin.Forms • Composto da: • Microsoft .NET Core Runtime • Framework libraries • Microsoft .NET Core SDK  Per iniziare • .NET «app host» -> .NET Core Apps • Altre versioni, pre-release: https://tinyurl.com/zd6lmla • .NET Core Installation Guide: https://tinyurl.com/hurwe8f • Per le Demo: • Sviluppo: .NET Core 1.1.1 con SDK 1.0.1 del 2017.03.07 (VS 2017)
  • 6.
  • 7.
    .NET Core: Linux •Versioni minime supportate (https://tinyurl.com/hurwe8f): • Red Hat Enterprise Linux 7 Server • Ubuntu 14.04, 16.04 e Linux Mint 17 • Debian 8.x • Fedora 23 • CentOS 7.1 & Oracle Linux 7.1 • openSUSE 13.2 • Distribuzione demo: Debian 8.7.1 su Hyper-V • Download iso: https://tinyurl.com/26plvas • Installazione e prima applicazione .NET Core in soli 3 steps!
  • 8.
    ASP.NET Core • Modellodi applicazione Web-Oriented • Composto da moduli con minimo overhead e massima flessibilità nella «costruzione» della propria applicazione • Astrazione tramite interface • Non piu’ basato su System.Web.dll • Basato su package NuGet da includere secondo le necessità • Principali vantaggi: • Integrazione dei framework lato client (Grunt, Gulp, Knockout etc.) • HTTP (Request) pipeline leggera e modulare • Host in IIS o in un proprio processo • Built-in Dependency Injection • Unico path per Web UI (MVC) e Web APIs (RESTful applications) • Per iniziare: • ASP.NET Core Getting Started: https://www.asp.net/core
  • 9.
    Demo «.NET Core &ASP.NET Core App»
  • 10.
    ASP.NET Core • ASP.NET«Core App» è una «Console App» con Web Server nel «Main» • Kestrel, cross-platform Web Server per ASP.NET Core basato su libuv • Libuv, cross-platform async I/O library: https://tinyurl.com/k2hdq7y • Possono essere utilizzati altri Web Server: https://tinyurl.com/hz6njyj • «Startup» class • Configurazione Request Pipeline: Configure (Middleware) • Static File • Authentication • Routing • … • Configurazione Servizi: ConfigureServices (Dependeny Injection) • ASP.NET MVC Core • Entity Framework Core • Identity • …
  • 11.
    ASP.NET Core: Pipeline Middleware:https://tinyurl.com/zo79fty
  • 12.
  • 13.
    Deployment Due possibili scenari: •Continuous Deployment su Azure: • Creazione Account su Azure (anche Trial) • Configurazione Azure Service App • Configurazione Git Repository • Configurazione Visual Studio Code • Docs: https://tinyurl.com/zbybrnk • Deployment su Linux Virtual Machine (Ubuntu Server 14.04, Amazon) • Creazione Account su Amazon Web Service (anche Trial) • Configurazione Putty • Installazione .NET Core runtime • Configurazione HTTP Reverse Proxy (nginx) • Configurazione Filezilla (o script automatico) Ambienti «confezionati» per la Demo per esigenze temporali
  • 14.
    Demo Pubblicazione su «AzureApp Service» e «Amazon Linux Virtual Machine»
  • 15.
    Client: Xamarin Android ApplicazioneXamarin Android in Visual Studio 2017
  • 16.
    Demo «CM Blog ApiClient» (Xamarin Android Client)
  • 17.
    Toolbox • Visual StudioCode • Editor potente e flessibile eseguibile in ambiente Windows, macOS, Linux • Download: https://code.visualstudio.com/ • Estensibile e Personalizzabile, GIT built-in, IntelliSense, Debugging • Entity-Framework Core (O/RM) • Leggero, Estensibile Cross-Platform • MSSQL, SQLite, DB2, MySQL, SQL Server Compact, PostgreSQL, InMemory • Code First, DB-First • https://tinyurl.com/jcha2p6 • NGINX: HTTP e Reverse Proxy Server - https://nginx.org/en/ • Putty: SSH e TelNet client - http://www.putty.org/ • Filezilla: https://filezilla-project.org/ • Microsoft Azure: Piattaforma e Servizi di Cloud Computing • https://portal.azure.com • f • Amazon Web Services: Piattaforma e Servizi di Cloud Computing • https://aws.amazon.com
  • 18.
  • 19.
    Entity Framework (EF)Core Paragone con il «fratello maggiore»: https://docs.microsoft.com/en-us/ef/efcore-and-ef6/ Install-Package Microsoft.EntityFrameworkCore.Sqlite Aggiunta EF Tools per gestione database Install-Package Microsoft.EntityFrameworkCore.Tools -Version 1.1.0-msbuild3-final Nella demo creiamo un DB partendo dal codice E’ ovviamente anche possibile partire da un database esistente dal quale estrarre il modello: https://docs.microsoft.com/en-us/ef/core/get- started/aspnetcore/existing-db
  • 20.
    Entity Framework (EF)Core EF Core è un O/RM Leggero Estensibile Cross-platform Supporto a: MSSQL, SQLite, DB2, MySQL, SQL Server Compact, PostgreSQL, InMemory, MyCat…e custom Docs ed esempi: https://docs.microsoft.com/en-us/ef/ Aggiunta EF Core per SQLite al progetto Install-Package Microsoft.EntityFrameworkCore.Sqlite Aggiunta EF Tools per gestione database Install-Package Microsoft.EntityFrameworkCore.Tools -Version 1.1.0-msbuild3-final