ASP.NET CoreDe la théorie à la pratique
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
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, …
Big Bang ?
De la magie ?
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)
One ASP.NET
ASP.NETSites Service
s
MVC Webpages
Webforms SPAs Web API SignalR
http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx
ASP.NET Core et ASP.NET 4.6
http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx
Pas un simple changement de version
ASP.NET Core appUpgrade
ASP.NET 4.6 appPortage
Application
Bousculez vos habitudes
Developpeur Serveur web SQL Server
.NET
C# SQL
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…
Embarquement imminent
Au menu du jour
Cell’Insights• Distribué par Yasmine (sois polie, dis
bonjour, Yasmine)
• A télécharger : http://www.cellenza.com/cellinsights/
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)
Les fondamentaux
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
Entrée libre
CoreFX
CoreCLR.NET Standard
Getting started
SDKdot.net“.NET Core SDK”
Visual Studio Codecode.visualstudio.com
Visual Studio 2017Release Candidate“.NET Core and
Docker”
Les nouvelles briques
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
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
NuGet, partout
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;
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
.NET Core : nouvelle stack incompatible !
Recompiler pour chaque SDK ?
Depuis 2011 : Portable Class Libraries
Problème…
Un standard pour les gouverner tous
netstandard2.0
netstandard1.6
netstandard1.2
netstandard1.0<TargetFramework>netstandard1.6</TargetFramework>
Versionning de .NET Standard
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
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
La boite à outils
Démo 1
Démo Hello World
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
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
Démo 2
Démo Visual Studio Code
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é
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 !
Fichier de configuration
Nouveau format XML .csproj Ancien format project.json
> dotnet migrate
Démo 3
Démo Visual Studio 2017
Publication
“Framework”
• DLL portable• A charger via dotnet
“Self-contained”
• Exécutable natif• Cible un OS : Windows, Ubuntu…• Embarque tous le framework
dotnet publish
Démo 4
Démo publication
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
Planning