43
ASP.NET Core De la théorie à la pratique

01 - [ASP.NET Core] Plénière

Embed Size (px)

Citation preview

Page 1: 01 - [ASP.NET Core] Plénière

ASP.NET CoreDe la théorie à la pratique

Page 2: 01 - [ASP.NET Core] Plénière

http://blog.cellenza.com/author/cpuell

Clément PuëllDéveloppeur .NET

Nicholas SuterCraftsman, MVP C#

http://blog.cellenza.com/author/nsuter http://www.nicholassuter.com @NicholasSuter

Page 3: 01 - [ASP.NET Core] Plénière

Des experts reconnus

10 AzureC#ALMSQL ServerWindows Client

1 4

Des publications :• Livres blancs (Cell’Insights)

• http://www.cellenza.com/cellinsights• Articles dans Programmez!• Blog Cellenza

• http://blog.cellenza.com• Organisation de TechEvent• Speakers lors de conférences

• TechDays, Azure Camp, …

Page 4: 01 - [ASP.NET Core] Plénière

Big Bang ?

Page 5: 01 - [ASP.NET Core] Plénière

De la magie ?

Page 6: 01 - [ASP.NET Core] Plénière

Changement de paradigme

ASP (1996) ASP.NET MVC (2009) ASP.NET Core (2017)

ASP.NET Webforms (2002) ASP.NET Web API et SignalR (2012)

IIS Extension .NET Framework + IIS .NET Core

(2007 – 2012)

Page 7: 01 - [ASP.NET Core] Plénière

One ASP.NET

ASP.NETSites Service

s

MVC Webpages

Webforms SPAs Web API SignalR

http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx

Page 8: 01 - [ASP.NET Core] Plénière

ASP.NET Core et ASP.NET 4.6

http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx

Page 9: 01 - [ASP.NET Core] Plénière

Pas un simple changement de version

ASP.NET Core appUpgrade

ASP.NET 4.6 appPortage

Page 10: 01 - [ASP.NET Core] Plénière

Application

Bousculez vos habitudes

Developpeur Serveur web SQL Server

.NET

C# SQL

Page 11: 01 - [ASP.NET Core] Plénière

Bousculez vos habitudes

Developpeur

C# Javascript SQL bash PowerShell css html Application

Outils : des frameworks modulaires orientés composant, des IDE plus légers, des boucles de feedback rapidesPatterns : Injection de dépendences, inversion de contrôle, factory, builderPratiques : TDD, BDD, DI, caching, mocking, Craftmanship, Clean Code, déploiement continu…

Page 12: 01 - [ASP.NET Core] Plénière

Embarquement imminent

Page 13: 01 - [ASP.NET Core] Plénière

Au menu du jour

Page 14: 01 - [ASP.NET Core] Plénière

Cell’Insights• Distribué par Yasmine (sois polie, dis

bonjour, Yasmine)

• A télécharger : http://www.cellenza.com/cellinsights/

Page 15: 01 - [ASP.NET Core] Plénière

Programme de la journée

Plénière : les fondamendaux .NET Core• Nicholas Suter

(MVP)• Clément Puëll

ASP.NET Core MVC• Georges

Damien (MVP)• Emilien Bassez• Jean Dumas

De Rauly

Retour d’expérience à la MAF• Matthias

Grosperrin• Mikaël Krief

(MVP)• Georges

Damien (MVP)

ASP.NET Web API et les SPA• Rémy Royer

Entity Framework Core• Nicholas Suter

(MVP)

ASP.Core et DevOps• Guillaume

Rouchon (MVP)• Mikaël Krief

(MVP)

Page 16: 01 - [ASP.NET Core] Plénière

Les fondamentaux

Page 17: 01 - [ASP.NET Core] Plénière

Petit historique

Début 2014Project K• .NET sous Unix

Mai 2014ASP.NET vNext• Cloud• NuGet• Mac et Linux

Novembre 2014ASP.NET 5• .NET Core 5• GitHub CoreFX

2015GitHub CoreCLR

Juin 2016.NET Core 1.0• ASP.NET Core 1.0• EF Core 1.0• .NET Standard• CLI

Page 18: 01 - [ASP.NET Core] Plénière

Entrée libre

CoreFX

CoreCLR.NET Standard

Page 19: 01 - [ASP.NET Core] Plénière

Getting started

SDKdot.net“.NET Core SDK”

Visual Studio Codecode.visualstudio.com

Visual Studio 2017Release Candidate“.NET Core and

Docker”

Page 20: 01 - [ASP.NET Core] Plénière

Les nouvelles briques

Page 21: 01 - [ASP.NET Core] Plénière

La machine d’exécution

Garbage Collector

JIT Compiler

Multithreading

Types de base

(Object, String)

Exceptions

Multi-plateforme (Windows, Linux, macOS)

Multi-architecture (x86, x64, arm)

3 à 5 millions de lignes de code

C / C++ / C#

CoreCLR

Microsoft.NETCore.Runtime.CoreCLR

Page 22: 01 - [ASP.NET Core] Plénière

La bibliothèque de classe

CoreFXTypes

primitifs

Int32

String

Structures de données

System.Collections

List

Dictionary

Classes utilitaires

System.Net

HttpClient

System.IO

File

System.Collections System.ThreadingSystem.Linq

System.Net.Http System.Text.EncodingSystem.Xml.XDocument

System.IO System.ReflectionSystem.Globalization

Page 23: 01 - [ASP.NET Core] Plénière

NuGet, partout

Page 24: 01 - [ASP.NET Core] Plénière

NuGet, partout

github.com/dotnet/coreclr/tree/master/src/mscorlib/src/System/Collections

nuget.org/packages/System.Collections

<PackageReference Include="System.Collections" Version="4.3.0" />

using System.Collections;

Page 25: 01 - [ASP.NET Core] Plénière

Métapackage

Toutes les API de

CoreFX

CoreCLR.NET Standard

+ Linq.Parallel, Net.Security, …

Microsoft.NETCore.App

Toutes les API du .NET

Standard

Collections, IO, Linq, XML, Tasks,

NETStandard.Library

Page 26: 01 - [ASP.NET Core] Plénière

.NET Core : nouvelle stack incompatible !

Recompiler pour chaque SDK ?

Depuis 2011 : Portable Class Libraries

Problème…

Page 27: 01 - [ASP.NET Core] Plénière

Un standard pour les gouverner tous

netstandard2.0

netstandard1.6

netstandard1.2

netstandard1.0<TargetFramework>netstandard1.6</TargetFramework>

Page 28: 01 - [ASP.NET Core] Plénière

Versionning de .NET Standard

Page 29: 01 - [ASP.NET Core] Plénière

Choisir son framework cible

SDK et runtime Bibliothèque de classe

Packages NuGet Compatibilité

Target Framework

• net45• net461

• netcoreapp1.0

• netcoreapp1.1

• netstandard1.6

• netstandard2.0

Moniker

Page 30: 01 - [ASP.NET Core] Plénière

Tableau comparatif

net

Pour windows

Accès à toute la bibliothèque historiquePeut référencer n’importe quelle librairies tiercesDépendance à Windows et à .NET

netcoreapp

Pour la portabilité

Multi-plateformePlus de package que netstandardCompatibilité moyenne

netstandard

Pour les bibliothèques

Référençable par tout type de projet

Moins d’API disponibles

Page 31: 01 - [ASP.NET Core] Plénière

La boite à outils

Page 32: 01 - [ASP.NET Core] Plénière

Démo 1

Démo Hello World

Page 33: 01 - [ASP.NET Core] Plénière

C:\> La ligne de commande dotnetL’homme à tout faire de .NET Core

Universelle Scriptable Extensible

Multi-plateforme (évidemment)

Fondation pour les outils de plus haut niveau

restore

Restauration des packages

new

build test

add Ajout de références

publish

clean pack

Templates projet

Création d’un package

Génération des

binaires

Page 34: 01 - [ASP.NET Core] Plénière

Visual Studio Code Petit Visual Studio deviendra grand

Éditeur de texte enrichiAdapté pour le Web, node.js et .NET Core

Très extensible

Environnement .NET complet pour Linux !

dotnet

Extension C#

VS Code

Page 35: 01 - [ASP.NET Core] Plénière

Démo 2

Démo Visual Studio Code

Page 36: 01 - [ASP.NET Core] Plénière

Visual Studio 2017

VS2017

Nouvel installeu

r

Performances

Live testing

Debugger

amélioré

“Ouvrir un

dossier”

Support .NET Core Release Candidate gratuite

Sortie mi-2017 avec le tooling .NET Core finalisé

Page 37: 01 - [ASP.NET Core] Plénière

Petite histoire du fichier de configuration

.kproj + project.json

.xproj + project.json

.csproj

• Très recent !

Pourquoi un project.json ?Facile à éditer “à la main” sur Linux et macOS

Retour au .csproj XMLCompatible msbuild

Mais cette fois-ci, facile à lire et à éditer !

Page 38: 01 - [ASP.NET Core] Plénière

Fichier de configuration

Nouveau format XML .csproj Ancien format project.json

> dotnet migrate

Page 39: 01 - [ASP.NET Core] Plénière

Démo 3

Démo Visual Studio 2017

Page 40: 01 - [ASP.NET Core] Plénière

Publication

“Framework”

• DLL portable• A charger via dotnet

“Self-contained”

• Exécutable natif• Cible un OS : Windows, Ubuntu…• Embarque tous le framework

dotnet publish

Page 41: 01 - [ASP.NET Core] Plénière

Démo 4

Démo publication

Page 42: 01 - [ASP.NET Core] Plénière

A retenir

Multi-plateforme avec des DLL portables ou des exécutables natifs Open-source sur GitHub, ouvert aux contributions Framework distribué par NuGet

Ligne de commande dotnet Éditeurs Visual Studio 2017 et Visual Studio Code

Templates d'applications Console – Tests unitaires – Bibliothèques – ASP.NET

.NET Standard pour le partage de code

Page 43: 01 - [ASP.NET Core] Plénière

Planning