SlideShare une entreprise Scribd logo
ASP.NET Core
De la théorie à la pratique
http://blog.cellenza.com/author/cpuell
Clément Puëll
Développeur .NET
Nicholas Suter
Craftsman, MVP C#
http://blog.cellenza.com/author/nsuter
http://www.nicholassuter.com
@NicholasSuter
Des experts reconnus
10
Azure
C#
ALM
SQL Server
Windows 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.NET
Sites Services
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 app
Upgrade
ASP.NET 4.6 app
Portage
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 rapides
Patterns : Injection de dépendences, inversion de contrôle, factory, builder
Pratiques : 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 2014
Project K
• .NET sous Unix
Mai 2014
ASP.NET vNext
• Cloud
• NuGet
• Mac et Linux
Novembre 2014
ASP.NET 5
• .NET Core 5
• GitHub CoreFX
2015
GitHub 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
SDK
• dot.net
• “.NET Core SDK”
Visual Studio Code
• code.visualstudio.com
Visual Studio 2017
• Release 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
CoreFX
Types 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
netstandard
2.0
netstandard
1.6
netstandard
1.2
netstandard
1.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 historique
Peut référencer n’importe quelle librairies tierces
Dépendance à Windows et à .NET
netcoreapp
Pour la portabilité
Multi-plateforme
Plus de package que netstandard
Compatibilité 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 dotnet
L’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 enrichi
Adapté 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
installeur
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 XML
Compatible msbuild
 Mais cette fois-ci, facile à
lire et à éditer !
Fichier de configuration
Nouveau format XML .csproj Ancien format project.json
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

Contenu connexe

Tendances (19)

PPTX
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Microsoft
 
PPTX
Open Source et Microsoft Azure, rêve ou réalité ?
Microsoft
 
PDF
NodeJS for Mobile App
Habib MAALEM
 
PDF
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Microsoft
 
PDF
ASP.NET MVC 6
Microsoft
 
PDF
JavaScript dans l'usine logicielle
jollivetc
 
PDF
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Microsoft
 
PPTX
Azure devops
Maxime Eglem
 
ODP
Présentation de nodejs
13p
 
PPTX
Asp.net core 3
MSDEVMTL
 
PPTX
Angular2 / Typescript symposium Versusmind
Philippe Didiergeorges
 
PDF
Symposium n°7 : Plateforme Meteor
ArthurMaroulier
 
PDF
Industrialisation PHP - Canal+
ekino
 
PPTX
Meetup aix-js-28-08-2017
Philippe Beroucrry
 
PPTX
20140227 - injection de dépendances - mug lyon
Clement Bouillier
 
PDF
Introduction à ASP.NET
Abdelouahed Abdou
 
DOCX
Introduction to Rust in Production - Servo Mozilla project (Talk)
Quentin Frémeaux
 
PPTX
Soirée 3T Soat - Asp.net MVC
SOAT
 
PPTX
Introduction to Rust in Production - Servo Mozilla project (Slides)
Quentin Frémeaux
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Microsoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Microsoft
 
NodeJS for Mobile App
Habib MAALEM
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Microsoft
 
ASP.NET MVC 6
Microsoft
 
JavaScript dans l'usine logicielle
jollivetc
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Microsoft
 
Azure devops
Maxime Eglem
 
Présentation de nodejs
13p
 
Asp.net core 3
MSDEVMTL
 
Angular2 / Typescript symposium Versusmind
Philippe Didiergeorges
 
Symposium n°7 : Plateforme Meteor
ArthurMaroulier
 
Industrialisation PHP - Canal+
ekino
 
Meetup aix-js-28-08-2017
Philippe Beroucrry
 
20140227 - injection de dépendances - mug lyon
Clement Bouillier
 
Introduction à ASP.NET
Abdelouahed Abdou
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Quentin Frémeaux
 
Soirée 3T Soat - Asp.net MVC
SOAT
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Quentin Frémeaux
 

En vedette (20)

PDF
[XamarinDay] Deep dive des produits Xamarin part 1
Cellenza
 
PDF
[XamarinDay] Développez en XAML avec Xamarin Forms
Cellenza
 
PPTX
05 - [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
Cellenza
 
PDF
Integration Summit 16 - Keynote Integration Trends
Cellenza
 
PPTX
Integration Summit 16 : Azure API Management
Cellenza
 
PDF
[XamarinDay] Développez de manière 100% native avec Xamarin
Cellenza
 
PPTX
Integration Summit 16 - Citizen Integrator / Flow - Power apps
Cellenza
 
PPTX
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Cellenza
 
PDF
[XamarinDay] Retours sur Evolve 2016
Cellenza
 
PPTX
[DevTestday] Continuous Delivery d'une Infra Dev/Test Azure - Olivier Delmotte
Cellenza
 
PPTX
[Dev/Testday] Dev testazure infra-arm - Manon Pernin
Cellenza
 
PDF
[DevTestday] Keynote
Cellenza
 
PPTX
[DevTestday] Azure devtestlab - Mikael Krief
Cellenza
 
PPTX
[Agile Testing Day] Test & Métiers
Cellenza
 
PPTX
[Agile Testing Day] Test Driven Development (TDD)
Cellenza
 
PDF
[29/06] Paris Container Day - Microservices avec Azure
Cellenza
 
PDF
[XamarinDay] Xamarin History - From 0 to microsoft acquisition !
Cellenza
 
PDF
Athlon – UX trends for Fintech
RanzieAnthony
 
PPTX
Dial M for ECommerce (if you aren't, think Mobile for omni-channel. NOW)
Suhas Dutta
 
PPTX
Integration Summit 16 - Hybrid Integration
Cellenza
 
[XamarinDay] Deep dive des produits Xamarin part 1
Cellenza
 
[XamarinDay] Développez en XAML avec Xamarin Forms
Cellenza
 
05 - [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
Cellenza
 
Integration Summit 16 - Keynote Integration Trends
Cellenza
 
Integration Summit 16 : Azure API Management
Cellenza
 
[XamarinDay] Développez de manière 100% native avec Xamarin
Cellenza
 
Integration Summit 16 - Citizen Integrator / Flow - Power apps
Cellenza
 
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Cellenza
 
[XamarinDay] Retours sur Evolve 2016
Cellenza
 
[DevTestday] Continuous Delivery d'une Infra Dev/Test Azure - Olivier Delmotte
Cellenza
 
[Dev/Testday] Dev testazure infra-arm - Manon Pernin
Cellenza
 
[DevTestday] Keynote
Cellenza
 
[DevTestday] Azure devtestlab - Mikael Krief
Cellenza
 
[Agile Testing Day] Test & Métiers
Cellenza
 
[Agile Testing Day] Test Driven Development (TDD)
Cellenza
 
[29/06] Paris Container Day - Microservices avec Azure
Cellenza
 
[XamarinDay] Xamarin History - From 0 to microsoft acquisition !
Cellenza
 
Athlon – UX trends for Fintech
RanzieAnthony
 
Dial M for ECommerce (if you aren't, think Mobile for omni-channel. NOW)
Suhas Dutta
 
Integration Summit 16 - Hybrid Integration
Cellenza
 
Publicité

Similaire à 01 - [ASP.NET Core] Plénière (20)

PPT
Introdot Netc Sharp Fr
Gregory Renard
 
PPTX
Découverte .Net Core et Asp.Net Core
Ionut Mihalcea
 
PPTX
Architecturez vos applications mobiles avec Azure et Xamarin
Thierry Buisson
 
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
Microsoft
 
PPTX
Server Side Javascript in the cloud
stefounet
 
PPTX
JavaScript aussi sur le serveur et jusque dans le cloud?
benjguin
 
PPTX
Azure Camp 9 Décembre 2014 - slides Keynote
Microsoft
 
PPTX
Vue d'ensemble des nouveautés de System Center 2012 SP1
Microsoft Technet France
 
PDF
Windows HPC server sur Windows Azure (100
Microsoft Technet France
 
PPTX
Codeurs en seine microsoft .net core plaform
Sébastien Pertus
 
PPT
Starter Kits
Gregory Renard
 
PPTX
Au cœur du Framework .NET 4.5.1
Microsoft
 
PDF
Keynote .NET 2015 : une nouvelle ère
Microsoft
 
PPTX
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
AZUG FR
 
PPT
Le Developpement Web Aspnet2 Vb2005
Gregory Renard
 
PDF
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Hamida Rebai Trabelsi
 
PDF
Être productif avec JHipster - Devoxx France 2017
Julien Dubois
 
PPTX
Initiation à ASP.NET 4.0
Jean-Baptiste Vigneron
 
PDF
SUSE Expert Days Paris 2018 – CaaSP
SUSE
 
PPTX
TIAD 2016 : Accenture Devops Platform dans Microsoft Azure
The Incredible Automation Day
 
Introdot Netc Sharp Fr
Gregory Renard
 
Découverte .Net Core et Asp.Net Core
Ionut Mihalcea
 
Architecturez vos applications mobiles avec Azure et Xamarin
Thierry Buisson
 
JavaScript aussi sur le serveur et jusque dans le cloud?
Microsoft
 
Server Side Javascript in the cloud
stefounet
 
JavaScript aussi sur le serveur et jusque dans le cloud?
benjguin
 
Azure Camp 9 Décembre 2014 - slides Keynote
Microsoft
 
Vue d'ensemble des nouveautés de System Center 2012 SP1
Microsoft Technet France
 
Windows HPC server sur Windows Azure (100
Microsoft Technet France
 
Codeurs en seine microsoft .net core plaform
Sébastien Pertus
 
Starter Kits
Gregory Renard
 
Au cœur du Framework .NET 4.5.1
Microsoft
 
Keynote .NET 2015 : une nouvelle ère
Microsoft
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
AZUG FR
 
Le Developpement Web Aspnet2 Vb2005
Gregory Renard
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Hamida Rebai Trabelsi
 
Être productif avec JHipster - Devoxx France 2017
Julien Dubois
 
Initiation à ASP.NET 4.0
Jean-Baptiste Vigneron
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE
 
TIAD 2016 : Accenture Devops Platform dans Microsoft Azure
The Incredible Automation Day
 
Publicité

Plus de Cellenza (15)

PPTX
The PostBuildEvent : Retour sur la //Build 2017
Cellenza
 
PPTX
DevCon 3 : Containérisation d’applications
Cellenza
 
PDF
DevCon 3 : BOT Framework & Luis
Cellenza
 
PDF
DevCon 3 : Azure API Management
Cellenza
 
PPTX
Integration Summit 16 - Tour d'horizon d'Azure Logic Apps
Cellenza
 
PPTX
Integration Summit 16 - Les nouveautés BizTalk Server 2016
Cellenza
 
PPTX
Integration Summit 16 : IoT, Service Fabric et Logic App
Cellenza
 
PDF
[XamarinDay] Deep dive des produits Xamarin part 2
Cellenza
 
PDF
[XamarinDay] Xamarin pour votre entreprise
Cellenza
 
PDF
[XamarinDay] Cellenza - Votre partenaire Mobilité et Xamarin !
Cellenza
 
PDF
[XamarinDay] Xamarin et le Cloud, better together !
Cellenza
 
PDF
[XamarinDay] Pipeline DevOps sur un projet Xamarin
Cellenza
 
PDF
DevCon Programmez! - Miriot
Cellenza
 
PDF
[aOS N°2] DevOps & SharePoint - Michel Hubert
Cellenza
 
PPTX
[GAB2016] Workshop - Industrialisez vos expérimentations Azure Machine Learni...
Cellenza
 
The PostBuildEvent : Retour sur la //Build 2017
Cellenza
 
DevCon 3 : Containérisation d’applications
Cellenza
 
DevCon 3 : BOT Framework & Luis
Cellenza
 
DevCon 3 : Azure API Management
Cellenza
 
Integration Summit 16 - Tour d'horizon d'Azure Logic Apps
Cellenza
 
Integration Summit 16 - Les nouveautés BizTalk Server 2016
Cellenza
 
Integration Summit 16 : IoT, Service Fabric et Logic App
Cellenza
 
[XamarinDay] Deep dive des produits Xamarin part 2
Cellenza
 
[XamarinDay] Xamarin pour votre entreprise
Cellenza
 
[XamarinDay] Cellenza - Votre partenaire Mobilité et Xamarin !
Cellenza
 
[XamarinDay] Xamarin et le Cloud, better together !
Cellenza
 
[XamarinDay] Pipeline DevOps sur un projet Xamarin
Cellenza
 
DevCon Programmez! - Miriot
Cellenza
 
[aOS N°2] DevOps & SharePoint - Michel Hubert
Cellenza
 
[GAB2016] Workshop - Industrialisez vos expérimentations Azure Machine Learni...
Cellenza
 

Dernier (11)

PDF
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 
PDF
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
PDF
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
PDF
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
PDF
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
PDF
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
PDF
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
PDF
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
PPTX
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
PPTX
Stage PFE en Développement Web – Projet de Vidéosurveillance IP
Abderahman Ouzzani chahdie
 
PDF
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 
Communication entre les conteneurs docker dans diff réseaux
SOUFIANE MOUHTARAM
 
Google Remote Procedure Call Web Service
SOUFIANE MOUHTARAM
 
Présentation UCOPIA et ses fonctionnalités
ZakariaRAHOUI2
 
Généralités sur balisage (Tagging) en git
SOUFIANE MOUHTARAM
 
Circuit Breaker pattern avec Resilience4j
SOUFIANE MOUHTARAM
 
Katalog VRF Clivet vrf technology(1).pdf
MehfoozAli19
 
CHAPITRE 5_Déplacement des données DBA.pdf
houcemswissi1
 
Rapport de Stage Fin D’étude - Développement Web et Multimédia
YassineMyara
 
Soutanece Stage Pfe Développement Web et Multimédia
YassineMyara
 
Stage PFE en Développement Web – Projet de Vidéosurveillance IP
Abderahman Ouzzani chahdie
 
CHAPITRE1_Architecture du Serveur Oracle.pdf
houcemswissi1
 

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

  • 1. ASP.NET Core De la théorie à la pratique
  • 2. http://blog.cellenza.com/author/cpuell Clément Puëll Développeur .NET Nicholas Suter Craftsman, MVP C# http://blog.cellenza.com/author/nsuter http://www.nicholassuter.com @NicholasSuter
  • 3. Des experts reconnus 10 Azure C# ALM SQL Server Windows 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, …
  • 6. 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)
  • 7. One ASP.NET ASP.NET Sites Services MVC Webpages Webforms SPAs Web API SignalR http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx
  • 8. ASP.NET Core et ASP.NET 4.6 http://www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx
  • 9. Pas un simple changement de version ASP.NET Core app Upgrade ASP.NET 4.6 app Portage
  • 10. Application Bousculez vos habitudes Developpeur Serveur web SQL Server .NET C# SQL
  • 11. 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 rapides Patterns : Injection de dépendences, inversion de contrôle, factory, builder Pratiques : TDD, BDD, DI, caching, mocking, Craftmanship, Clean Code, déploiement continu…
  • 13. Au menu du jour
  • 14. Cell’Insights • Distribué par Yasmine (sois polie, dis bonjour, Yasmine) • A télécharger : http://www.cellenza.com/cellinsights/
  • 15. 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)
  • 17. Petit historique Début 2014 Project K • .NET sous Unix Mai 2014 ASP.NET vNext • Cloud • NuGet • Mac et Linux Novembre 2014 ASP.NET 5 • .NET Core 5 • GitHub CoreFX 2015 GitHub CoreCLR Juin 2016 .NET Core 1.0 • ASP.NET Core 1.0 • EF Core 1.0 • .NET Standard • CLI
  • 19. Getting started SDK • dot.net • “.NET Core SDK” Visual Studio Code • code.visualstudio.com Visual Studio 2017 • Release Candidate • “.NET Core and Docker”
  • 21. 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
  • 22. La bibliothèque de classe CoreFX Types 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
  • 25. 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
  • 26.  .NET Core : nouvelle stack incompatible !  Recompiler pour chaque SDK ?  Depuis 2011 : Portable Class Libraries Problème…
  • 27. Un standard pour les gouverner tous netstandard 2.0 netstandard 1.6 netstandard 1.2 netstandard 1.0<TargetFramework>netstandard1.6</TargetFramework>
  • 29. 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
  • 30. Tableau comparatif net Pour windows Accès à toute la bibliothèque historique Peut référencer n’importe quelle librairies tierces Dépendance à Windows et à .NET netcoreapp Pour la portabilité Multi-plateforme Plus de package que netstandard Compatibilité moyenne netstandard Pour les bibliothèques Référençable par tout type de projet Moins d’API disponibles
  • 31. La boite à outils
  • 33. C:> La ligne de commande dotnet L’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
  • 34. Visual Studio Code Petit Visual Studio deviendra grand Éditeur de texte enrichi Adapté pour le Web, node.js et .NET Core Très extensible Environnement .NET complet pour Linux ! dotnet Extension C# VS Code
  • 35. Démo 2 Démo Visual Studio Code
  • 36. Visual Studio 2017 VS2017 Nouvel installeur Performances Live testing Debugger amélioré “Ouvrir un dossier” Support .NET Core Release Candidate gratuite Sortie mi-2017 avec le tooling .NET Core finalisé
  • 37. 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 XML Compatible msbuild  Mais cette fois-ci, facile à lire et à éditer !
  • 38. Fichier de configuration Nouveau format XML .csproj Ancien format project.json
  • 39. Démo 3 Démo Visual Studio 2017
  • 40. Publication “Framework” • DLL portable • A charger via dotnet “Self- contained” • Exécutable natif • Cible un OS : Windows, Ubuntu… • Embarque tous le framework dotnet publish
  • 42. 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

Notes de l'éditeur

  • #2: Bonjour, on est ravis Objectif de la journée : partager ce qu’on a appris nous Tout d’horizon : Qui est développeur ? Qui a joué avec ASP.NET Core ? Qui est dev web ? Qui est dev ASP.NET MVC ? Webforms ? Autres technos ?
  • #4: On est grands, on est beaux, on est forts, envoyez-nous votre CV.
  • #5: Oui et non Oui : le flux de travail va beaucoup changer de nouveaux concepts sont à comprendre et assimiler. Non : TOUT ne change pas
  • #6: Non. Clairement non. Nous allons tenter de démystifier les nombreux changements qu’apportent .NET Core et ASP.NET Core
  • #8: ASP.NET 4.5+ avait déjà fait un pas en avant vers l’homogénéisation des différentes technologies web de Microsoft. Mais cette homogénéisation ne faisait que masquer la complexité sous-jacente.
  • #9: ASP.NET 4.6 et Core COHABITENT ASP.NET 4.6 est le framework mature, robuste et éprouvé, reposant sur .NET ASP.NET Core est le nouveau joujou qui vient de sortir et n’est pas forcément LA nouvelle réponse à tout On peut développer en ASP.NET Core avec le framework .NET Complet.
  • #10: Il n’y aura pas de conversion auto 4.6 > Core Certaines API changent D’autres ont des noms similaires mais un comportement différent
  • #11: Trop longtemps, nous avons tout fait pour masquer la complexité du développent web. On a cru pouvoir développer pour le web sans connaître les technologies du web : http, Javascript, css. Il est grand temps de se les réapproprier.
  • #12: Les applications modernes ont des architectures plus complexes que par le passé. En revanche, les possibilités sont tellement plus grandes. Et notre travail nettement plus intéressant. La complexité n’est plus masque, mais le développement est accompagné. Philosophie plug & play.
  • #13: Il y a un wagon à prendre. Ne le ratez pas.
  • #17: Définir .NET Core Nouveau composants qui forme le framework Pas de Web, programmes simples
  • #18: Project K : K Runtime Environment / K Package Manager / K Runtime project.json ASP.NET vNext : TechEd Projet pilote autour duquel se construit la plateforme .NET Core ASP.NET 5 : Connect() Visual Studio 2015 Briques sous-jacentes à ASP.NET > code au coeur du framework > .NET Core
  • #19: Suite logique de l’orientation de Microsoft depuis quelques années C’est tout un écosystème qui est open-source (machine virtuelle, bibliothèque de classe, ASP.NET, ligne de commande, Visual Studio Code) GitHub : L’équipe .NET de Microsoft suit le même processus de développement que la communauté et passe par des Pull Request et des revues de code Pourquoi l’open-source : Manière naturelle de construire une solution multi-plateforme S’appuyer sur l’expérience de Mono Cycles de livraison court, feedback rapide des utilisateurs .NET Foundation : NuGet et Mono
  • #20: Que faut-il pour se lancer dans .NET Core ? SDK : Les outils en ligne de commande Multi-plateforme Visual Studio Code : Expérience épurée, rapide mais très complete (IntelliSence, débuggeur, etc.) Multi-plateforme Visual Studio 2017 : - RC gratuite - Expérience complète, toute-en-un
  • #22: Multithreading : création de threads, type Thread et Task Multiplateforme : écrit en C++ donc compilé pour chaque plateforme
  • #23: CoreFX fournit tous les types utilisables dans nos applications Les types de bases sont visibles publiquement dans CoreFX mais « redirigent » le compilateur vers leurs implémentations dans CoreCLR Chaque namespace est distribué dans un package NuGet
  • #24: Plateforme pensée très modulaire NuGet est le vecteur principal de distribution : runtime, assemblies, spécification .NET Standard Objectifs : Réduire les dépendances inutiles (chaque package a les siennes) Réduire l’empreinte mémoire des exécutables Evolution des packages indépendante du framework dans son ensemble (dans la pratique : nouvelle version de .NET Core = nouvelle version de chaque package)
  • #25: Code source de System.Collections dans GitHub Le package NuGet généré La référence dans le fichier projet L’usage dans le code
  • #26: “Package de packages” : ne contient que des dépendances vers d’autres packages NuGet
  • #27: .NET, écosystème fragmenté Positif : chaque projet a une méthode de développement et des outils bien calibrés Mais : bibliothèques de classe réutilisable, dépendances entre projets .NET Core est une nouvelle stack, incompatible avec .NET Classique Exemple : impossible de référencer un projet .NET depuis une application .NET Core Distribuer une bibliothèque : Anciennement : Recompiler pour chaque SDK cible Depuis 2011 : PCL (union de SDKs) Problèmes des PCL : Liste et version des Targets en dur Non versionné Plus de target = moins d’API (SDKs : .NET complet, .NET Core, Mono, Windows, Windows Phone, Unity, Silverlight)
  • #28: Définition d'une liste d'API que chaque runtime doit implémenter Spécification du contenu que l’on attend d’un framework Pas de code, seulement des redirections vers les classes du runtime sous-jacent (“TypeForwading”) Versionné Métapackage NuGet : NETStandard.Library Cibler netstandard signifie : le programme déclare qu’il utilise ces API, et qu’il est prêt à s’exécuter sur les runtimes compatibles Adapté aux bibliothèques de classe
  • #29: Exemple : une bibliothèque écrite pour .NET Standard 1.2 pourra être référencée par un programme .NET Core 1.0, .NET 4.5.1, Mono 4.6, etc. Conclusion : .NET Standard déjà supporté par la plupart des plateformes PI : on peut créer des PCL .NET Standard ou des projets au format .NET Core.
  • #30: SDK : compilateur, machine d’execution Bibliothèque de classe : Assemblies et APIs accessible depuis notre code Packages NuGet : chaque package est accessible pour certains framework Compatibilité : la capacité de votre programme à être référencé par d’autre “net” : On peut très bien s’appuyer sur le framework “traditionnel”, Windows (dépendance à Windows, au framework disponible sur la machine cible, accès à toutes les APIs de la BCL) (SDKs : .NET complet, .NET Core, Mono, Windows, Windows Phone, Unity, Silverlight)
  • #31: net46 (windows, bcl, compatibilité lib) : Rapide et facile pour les applications qui s’exécutent sous Windows netcoreapp (multi-plateforme, compatibilité difficile)  Pour les applications “finales” Console ou Web netstandard (pour les libs, grande compatibilité, api réduites)  : Pour les bibliothèques partagées Résumé des composants : CoreCLR CoreFX Distribué par NuGet .NET Standard, pour se réconcilier avec l’écosystème .NET Choisir son target framework
  • #33: dotnet new dotnet restore dotnet build dotnet run
  • #34: Installée avec le "SDK .NET Core" (windows, linux, etc.)  Anciennement "dnu/dnx/dnvm"  Outil universel pour centraliser toutes les opérations d’un projet Core Délègue la compilation à msbuild depuis la preview3  Commandes de bases : new (templates Console, Web, Tests), restore, build, test, publish  Et aussi : pack, add package, clean
  • #35: Open-source, multi-plateforme, gratuit Ressemble beaucoup à Atom, basé sur le même framework (Electron) IntelliSense, Coloration, Debugguer, Git, extensions, (+ refactoring) Orienté Web, node.js et .NET Core 
  • #36: dotnet new -t web code .  Ctrl+P Remove using Intellisense CodeLens Breakpoint Startup + F5 Fermer VS Code dotnet add package AutoMapper code . « mapper » > Ctrl+; > using
  • #37: Nouvel installeur  Performance (démarre 50% plus vite) Live testing Débuggueur (exceptions, profiling), éditeur (refactoring) Ouvrir un dossier (projets Web) Support .NET Core avec template, gestion unifié des dépendances
  • #38: Bénéfices du project.json progressivement ajouté dans le CSPROJ 
  • #39: Le web.config / app.config a disparu ! (Non c’est faux, IIS en a besoin pour démarrer un site Web…) AppSettings sont déplacés dans un fichier JSON : appsettings.json  Petit détail qui change la vie : plus besoin de lister les fichiers sources dans le XML ! Ceux-ci sont détectés automatiquement dans le dossier
  • #40: Templates Core Projet Xunit  Clic droit > Edit .csproj .csproj : liste des fichiers source Assert(1,2) Run tests  (Supprimer <Compile> ) cmd : dotnet test
  • #41: Basé sur un framework : génère une .dll portable exécutable avec le loader dotnet : Même pour une application console, on a une dll dont le Main sera lancé par la commande dotnet « Auto-contenu » : génère exécutable basé sur un runtime (.exe, etc.), embarque le framework (hello world 50 Mo)
  • #42: RuntimeIdentifiers : win7-x64 ; ubuntu.14.04-x64 dotnet publish  Bash : dotnet file.dll dotnet publish -r win  dotnet publish -r ubuntu  cmd : .exe  Bash : ./file
  • #43: Pour résumer, nous avons vu que : - - NuGet est le vecteur principal de diffusion des nouveaux composants La CLI dotnet est légère, facile d’accès. Ce sera votre meilleur ami pour travailler en .NET Core Visual Studio 2017 est bientôt prêt, et VS Code propose une experience de développement très satisfaisante Les templates suivants sont disponibles pour initialiser un projet : … .NET Standard est l’avenir du partage de code dans tous l’écosystème .NET
  • #44: Nous allons enchainer sur la session MVC Si vous avez des questions : pause déjeuner, ou en fin de journée pendant une session de questions/réponses et débats sur tous les sujets