SlideShare une entreprise Scribd logo
1  sur  43
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

NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
Habib MAALEM
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
SOAT
 

Tendances (19)

Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity Framework
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logicielle
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Azure devops
Azure devopsAzure devops
Azure devops
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
Asp.net core 3
Asp.net core 3Asp.net core 3
Asp.net core 3
 
Angular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium Versusmind
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme Meteor
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)
 

En vedette

Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Integration Summit 16 - Azure Logic App, bonnes pratiques et industrialisatio...
Cellenza
 

En vedette (20)

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

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

Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp Fr
Gregory Renard
 
Le Developpement Web Aspnet2 Vb2005
Le Developpement Web Aspnet2   Vb2005Le Developpement Web Aspnet2   Vb2005
Le Developpement Web Aspnet2 Vb2005
Gregory Renard
 

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

Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp Fr
 
Découverte .Net Core et Asp.Net Core
Découverte .Net Core et Asp.Net CoreDécouverte .Net Core et Asp.Net Core
Découverte .Net Core et Asp.Net Core
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Vue d'ensemble des nouveautés de System Center 2012 SP1
Vue d'ensemble des nouveautés de System Center 2012 SP1Vue d'ensemble des nouveautés de System Center 2012 SP1
Vue d'ensemble des nouveautés de System Center 2012 SP1
 
Windows HPC server sur Windows Azure (100
Windows HPC server sur Windows Azure (100Windows HPC server sur Windows Azure (100
Windows HPC server sur Windows Azure (100
 
Codeurs en seine microsoft .net core plaform
Codeurs en seine microsoft  .net core plaformCodeurs en seine microsoft  .net core plaform
Codeurs en seine microsoft .net core plaform
 
Starter Kits
Starter KitsStarter Kits
Starter Kits
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
Le Developpement Web Aspnet2 Vb2005
Le Developpement Web Aspnet2   Vb2005Le Developpement Web Aspnet2   Vb2005
Le Developpement Web Aspnet2 Vb2005
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0
 
SUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSPSUSE Expert Days Paris 2018 – CaaSP
SUSE Expert Days Paris 2018 – CaaSP
 
TIAD 2016 : Accenture Devops Platform dans Microsoft Azure
TIAD 2016 : Accenture Devops Platform dans Microsoft AzureTIAD 2016 : Accenture Devops Platform dans Microsoft Azure
TIAD 2016 : Accenture Devops Platform dans Microsoft Azure
 

Plus de Cellenza

[XamarinDay] Cellenza - Votre partenaire Mobilité et Xamarin !
[XamarinDay] Cellenza - Votre partenaire Mobilité et Xamarin ![XamarinDay] Cellenza - Votre partenaire Mobilité et Xamarin !
[XamarinDay] Cellenza - Votre partenaire Mobilité et Xamarin !
Cellenza
 

Plus de Cellenza (15)

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

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

  1. 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 ?
  2. On est grands, on est beaux, on est forts, envoyez-nous votre CV.
  3. Oui et non Oui : le flux de travail va beaucoup changer de nouveaux concepts sont à comprendre et assimiler. Non : TOUT ne change pas
  4. Non. Clairement non. Nous allons tenter de démystifier les nombreux changements qu’apportent .NET Core et ASP.NET Core
  5. 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.
  6. 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.
  7. 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
  8. 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.
  9. 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.
  10. Il y a un wagon à prendre. Ne le ratez pas.
  11. Définir .NET Core Nouveau composants qui forme le framework Pas de Web, programmes simples
  12. 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
  13. 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
  14. 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
  15. Multithreading : création de threads, type Thread et Task Multiplateforme : écrit en C++ donc compilé pour chaque plateforme
  16. 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
  17. 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)
  18. 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
  19. “Package de packages” : ne contient que des dépendances vers d’autres packages NuGet
  20. .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)
  21. 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
  22. 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.
  23. 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)
  24. 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
  25. dotnet new dotnet restore dotnet build dotnet run
  26. 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
  27. 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 
  28. 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
  29. 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
  30. Bénéfices du project.json progressivement ajouté dans le CSPROJ 
  31. 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
  32. Templates Core Projet Xunit  Clic droit > Edit .csproj .csproj : liste des fichiers source Assert(1,2) Run tests  (Supprimer <Compile> ) cmd : dotnet test
  33. 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)
  34. 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
  35. 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
  36. 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