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

20
.NET Core e Linux per il Mobile Pietro Libro ROME 24-25 MARCH 2017

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

Page 1: .NET Core, ASP.NET Core e Linux per il Mobile

.NET Core e Linux per il MobilePietro Libro

ROME 24-25 MARCH 2017

Page 2: .NET Core, ASP.NET Core e Linux per il Mobile

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/  

Page 3: .NET Core, ASP.NET Core e Linux per il Mobile

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

Page 4: .NET Core, ASP.NET Core e Linux per il Mobile

.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

Page 5: .NET Core, ASP.NET Core e Linux per il Mobile

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

Page 6: .NET Core, ASP.NET Core e Linux per il Mobile

.NET Core

Page 7: .NET Core, ASP.NET Core e Linux per il Mobile

.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!

Page 8: .NET Core, ASP.NET Core e Linux per il Mobile

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

Page 9: .NET Core, ASP.NET Core e Linux per il Mobile

Demo«.NET Core & ASP.NET Core App»

Page 10: .NET Core, ASP.NET Core e Linux per il Mobile

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• …

Page 11: .NET Core, ASP.NET Core e Linux per il Mobile

ASP.NET Core: Pipeline

Middleware: https://tinyurl.com/zo79fty

Page 12: .NET Core, ASP.NET Core e Linux per il Mobile

Demo«CodeMotion2017 Blog Api»

Page 13: .NET Core, ASP.NET Core e Linux per il Mobile

DeploymentDue 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

Page 14: .NET Core, ASP.NET Core e Linux per il Mobile

DemoPubblicazione su «Azure App Service» e «Amazon Linux Virtual Machine»

Page 15: .NET Core, ASP.NET Core e Linux per il Mobile

Client: Xamarin AndroidApplicazione Xamarin Android in Visual Studio 2017

Page 16: .NET Core, ASP.NET Core e Linux per il Mobile

Demo«CM Blog Api Client» (Xamarin Android Client)

Page 17: .NET Core, ASP.NET Core e Linux per il Mobile

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

Page 18: .NET Core, ASP.NET Core e Linux per il Mobile

Question Time

Page 19: .NET Core, ASP.NET Core e Linux per il Mobile

Entity Framework (EF) Core

Paragone con il «fratello maggiore»:https://docs.microsoft.com/en-us/ef/efcore-and-ef6/ Install-Package Microsoft.EntityFrameworkCore.SqliteAggiunta EF Tools per gestione databaseInstall-Package Microsoft.EntityFrameworkCore.Tools -Version 1.1.0-msbuild3-finalNella demo creiamo un DB partendo dal codiceE’ 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

Page 20: .NET Core, ASP.NET Core e Linux per il Mobile

Entity Framework (EF) CoreEF Core è un O/RMLeggeroEstensibileCross-platformSupporto a: MSSQL, SQLite, DB2, MySQL, SQL Server Compact, PostgreSQL, InMemory, MyCat…e customDocs ed esempi: https://docs.microsoft.com/en-us/ef/ Aggiunta EF Core per SQLite al progettoInstall-Package Microsoft.EntityFrameworkCore.SqliteAggiunta EF Tools per gestione databaseInstall-Package Microsoft.EntityFrameworkCore.Tools -Version 1.1.0-msbuild3-final