SlideShare une entreprise Scribd logo
1  sur  22
Aspnet.core
Introduction
Introduction à ASP.NET
Architecture .NET Core : Une
architecture multiplateforme
Template dans Visual Studio 2015 / 2017
 Il existe 3 projets dans .NET core
 La class librarie permettant de créer une librairie en .net
 La console Application qui permet de s’exécuter en console
 ASP.NET Core Web Application pour l’application Web
Première approche avec un projet
ASP.NET Core
 Architecture et principe généraux
Site ASP.NET
APPLICATION
SERVEUR
APPLICATION
CLIENT
Projet library class
Nuget packages
Wwwroot :
ressources statiques
Packages bower
Tasks grunt/gulp
Où est mon global.asax ?
 Comme avec Owin remplacé par la classe Startup
 2 Méthodes s’exposent désormais à
 ConfigureServices pour les services
 Configure pour la configuration du pipeline, extensible pour récupérer les
différents objets à injecter à Configure
Qu’est-ce qu’un Service ?
 1 Service est une classe instancié par l’injecteur de dépendances .net core et qui a pour
objectif de partager des fonctionnalités avec l’ensemble de votre application. Il existe les
types suivants
 Antiforgery permet de luter contre les attaques de sécurité
 Authorization permet de fournir un service d’authentification et d’autorisation
 Cors permet de fournir un service de gestion des Cors
 Data Protection permet de fournir un service de gestion des données
 DirectoryBrowser permet de fournir un service qui permet d’explorer des fichiers
 DistributedMemoryCache permet de fournir un service de gestion de cache distribué
 MemoryCache permet de fournir le service de gestion de cache local
 EntityFramework permet de suppléer via DI l’entité-framework
 Localization permet de suppléer le service de localisation utilisé par l’application
 Logging permet de fournir le fournisseur de logue
 MVC pour fournir le service MVC
 Routing pour le routage des URL
 Scoped fourni un injecteur personnalisé de niveau scope
 Singleton fourni un injecteur personnalisé de niveau singleton (une seule instance par
application)
 Transient fourni un injecteur personnalisé de niveau requête
 WebEncoder permet de gérer les encodeurs de HTML, Url et Javascript
Comment j’utilise un service ?
 Il existe différentes façons
d’utiliser un service
 Depuis l’injection automatique
via le constructeur d’un
contrôleur
 Depuis l’injection automatique
via une propriété
 Depuis la propriété
RequestServices
 Pour déclarer le service il faut
passer une interface
 Pour l’enregistrer il faut modifier
la classe Startup
Mais où est donc mon fichier de
configuration ?
 Asp.net core utilise plusieurs types
de fichiers de configuration
 Fichier (json, xml, ini)
 Command line
 Variables d’environnement
 Objet .Net stocké en mémoire
 Database
 Custom
 Mais rien n’est déclaré par défaut,
contrairement à ASP.NET, donc il
faut déclarer le bon service dans la
classe startup. Exemple pour du
json
Mais comment on écrit un fichier
maintenant ?
 Comme nous l’avons vu, ASP.net
core fonctionne sur Linux,
Windows, et Mac donc on ne
peut utiliser le system.Io de
Windows car il est indépendant
de la plateforme. Pour pouvoir
travailler avec des fichiers, il
faut implémenter un service qui
implémente l’interface
IFileProvider
 On peut dire que System.IO.File
a été remplace par le provider
PhysicalFileProvider
Support multiple environnement
 Aspnet core introduit
la gestion multi-
environnement
nécessaire
 Vous pouvez définir
des paramètres et des
comportements
spécifiques par
environnement
Un fichier Program dans un projet Web ?
 Et oui, Aspnet core a fini avec le support direct et lié
à IIS, il faut désormais activer une application pour
tourner, c’est pourquoi il y a cette classe Program.
 Pour configurer le hoster IIS, il faut l’activer dans
Main de cette classe
 Ce qui offre des avantages
 On peut également facilement capturer les
erreurs de démarrage du domaine
 On peut également recupérer les détails des
erreurs capturés
 On peut définir le chemin Root
 On peut définir l’environnement d’exécution
 On peut définir le binding directement des Url
 On peut spécifier l’assembly qui contient la
classe Startup
 On peut ajouter le gestionnaire de configuration
à utiliser
Ok, mais côté client on perd
l’optimisation Web de l’Aspnet
 Effectivement le composant Web
optimization de Microsoft n’existe
plus dans Aspnet core et a été
remplacé directement par des
tâches gulp ou grunt
 Une vrai séparation du
développement client et serveur a
été mise en place
 Les développeurs web travailleront
en c#
 Les développeurs front
travailleront en jquery et auront
gulp ou grunt pour leur tâche
d’optimisation, nettoyage,
optimisation
Créer votre premier site
Architecture MVC
 A l’Instar de ASP.NET 4.6, ASP.NET Core est basée sur une architecture MVC
 Partage des responsabilités entre les 3 composants
 Le Model contient l’entité à utiliser
 La Vue contient l’apparence visuelle
 Le Controller contient le traitement et les règles de gestion
 ASP.NET Core MVC offre les fonctionnalités suivantes
 Routage
 Model Validation
 Injection de dépendance
 Filtre
 Zonage
 Web API
 Testabilité facilitée
 Razor
 Vue fortement typée
 Tag helper
 View component
Routage
 ASP.NET core fournit deux méthodes pour le Routage
 Enregistrement des routes à utiliser :
 routes.MapRoute(name: "Default", template: "{controller=Home}/{action=Index}/{id?}");
 Déclaration d’une route
 [Route("api/[controller]")
Model Validation
 Binding automatique des formulaires HTML avec les entités
 Utilisation des décorateurs pour spécifier les règles de validation : Required,
MinLength, MaxLength, DataType, StringLength, Compare
 Utilisation de ModelState.IsValid pour valider automatiquement qu’une entité
bindée est valide pour l’ensemble des ces décorateurs ou non
 Utilisation possible du framework Javascript jquery-validation pour la
validation côtée client
 Injection possible côté code c# via les constructeurs et les propriétés
 Utilisation de la meta @inject pour injecter côté Razor et Vue
Injection de dépendances
Filtre
 Nous avons vue qu’il est possible de personnalisé le pipeline ASP.NET par filtre
 Nous avons vue qu’il existe différents types de filtres
 Autorisation pour la sécurité sur un controller
 Resource pour implémenter le mécanisme de cache
 Action pour exécuter du code avant et après l’exécution de l’action
 Exception pour capturer une excpetion
 Result pour éxecuter du code avant et après l’appel de l’action
 Filtre est implémentée par une interface spécifique exemple IActionFilter
 Les interfaces des filtres sont fournies avec leur correspond asynchrone
 Le framework .NET core fourni également des filtres de base
 ActionFilterAttribute
 ExceptionFilterAttribute
 ResultFilterAttribute
 FormatFilterAttribute
 ServiceFilterAttribute
 TypeFilterAttribute
 Le filtre est enregistré par l’option du middleware :
services.AddMvc(options =>
{
options.Filters.Add(new AddHeaderAttribute("GlobalAddHeader",
"Result filter added to MvcOptions.Filters")); // an instance
});
Filtre (suite)
 Nous avons vu que l’ordre d’exécution d’un filtre peut être modifié
 [AddHeader("Author", "Michel Bruchet @StartPoint", Order =3)]
 Nous avons vue qu’il est possible désactiver l’exécution d’un filtre en surchargeant le
result
public class ShortCircuitingResourceFilterAttribute : Attribute,
IResourceFilter
{
public void OnResourceExecuting(ResourceExecutingContext context)
{
context.Result = new ContentResult()
{
Content = "Resource unavailable - header should not be set"
};
}
public void OnResourceExecuted(ResourceExecutedContext context)
{
}
}
 Moyen de diviser proprement un site en plusieurs sous site
 Possibilité d’utiliser un dossier spécifique
 Possibilité de regrouper les vues, les controllers par zone
 Possibilité de diviser le site par domaine fonctionnel
Zonage
Autre vidéo
 Merci pour votre assiduité, je vais publié beaucoup d’autre vidéo, technique
(ASP.NET Core / Service Fabric / Powershell / etc..) que de gestion de
projets, architecture d’entreprise
 Vous pouvez me contacter par
 email : mbruchet@live.fr
 Linkedin : https://www.linkedin.com/in/michelbruchet
 Facebook : https://www.facebook.com/michel.bruchet.3
StartPoint
Logiciel de comptabilité et de gestion

Contenu connexe

Tendances

eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api managementLilia Sfaxi
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1Sem Koto
 
Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine Kwaye Kant
 
Cloud & Google app engine Presentation by Ngiambus Marcus
 Cloud & Google app engine Presentation  by Ngiambus Marcus Cloud & Google app engine Presentation  by Ngiambus Marcus
Cloud & Google app engine Presentation by Ngiambus MarcusMarc NGIAMBA
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
Selenium WebDriver avec Java
Selenium WebDriver avec Java Selenium WebDriver avec Java
Selenium WebDriver avec Java Ahmed HARRAK
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natifHenri Gomez
 

Tendances (20)

eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api management
 
Google App Engine
Google App EngineGoogle App Engine
Google App Engine
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
Cours JSP
Cours JSPCours JSP
Cours JSP
 
Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine
 
Cloud & Google app engine Presentation by Ngiambus Marcus
 Cloud & Google app engine Presentation  by Ngiambus Marcus Cloud & Google app engine Presentation  by Ngiambus Marcus
Cloud & Google app engine Presentation by Ngiambus Marcus
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Présentation symfony drupal
Présentation symfony drupalPrésentation symfony drupal
Présentation symfony drupal
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Java RMI
Java RMIJava RMI
Java RMI
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Apache ANT
Apache ANTApache ANT
Apache ANT
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
Selenium WebDriver avec Java
Selenium WebDriver avec Java Selenium WebDriver avec Java
Selenium WebDriver avec Java
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 

Similaire à Aspnetcore introduction

Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Nazih Heni
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayehHiba1
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerThe Incredible Automation Day
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbHINDGUENDOUZ
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EESabri Bouchlema
 
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5Mohamed Nemili
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Microsoft
 

Similaire à Aspnetcore introduction (20)

Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
TFS
TFSTFS
TFS
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
 
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
 
Spring.NET
Spring.NETSpring.NET
Spring.NET
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Starter Kits
Starter KitsStarter Kits
Starter Kits
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
[TechDays 2012] : Quoi de neuf dans ASP.NET 4.5
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5
 

Plus de Michel Bruchet

Rechercherunproduit pitch-en
Rechercherunproduit pitch-enRechercherunproduit pitch-en
Rechercherunproduit pitch-enMichel Bruchet
 
Rechercherunproduit pitch
Rechercherunproduit pitchRechercherunproduit pitch
Rechercherunproduit pitchMichel Bruchet
 
Microservices architecture v2
Microservices architecture v2Microservices architecture v2
Microservices architecture v2Michel Bruchet
 
Configure an environnement for ASP.NET Core 2
Configure an environnement for ASP.NET Core 2Configure an environnement for ASP.NET Core 2
Configure an environnement for ASP.NET Core 2Michel Bruchet
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architectureMichel Bruchet
 
Architecture multi tiers et système de notification
Architecture multi tiers et système de notificationArchitecture multi tiers et système de notification
Architecture multi tiers et système de notificationMichel Bruchet
 
Video3 mise enplacedaikibo
Video3 mise enplacedaikiboVideo3 mise enplacedaikibo
Video3 mise enplacedaikiboMichel Bruchet
 
Video2 agilite etscalabiliteentreprise
Video2 agilite etscalabiliteentrepriseVideo2 agilite etscalabiliteentreprise
Video2 agilite etscalabiliteentrepriseMichel Bruchet
 
Startpoint - Sprint 2 - Objectifs
Startpoint - Sprint 2 - ObjectifsStartpoint - Sprint 2 - Objectifs
Startpoint - Sprint 2 - ObjectifsMichel Bruchet
 
Devops - VSTS - Source
Devops - VSTS - SourceDevops - VSTS - Source
Devops - VSTS - SourceMichel Bruchet
 

Plus de Michel Bruchet (20)

Meetup daikibo 1
Meetup daikibo 1Meetup daikibo 1
Meetup daikibo 1
 
Rechercherunproduit pitch-en
Rechercherunproduit pitch-enRechercherunproduit pitch-en
Rechercherunproduit pitch-en
 
Rechercherunproduit pitch
Rechercherunproduit pitchRechercherunproduit pitch
Rechercherunproduit pitch
 
Proxy pattern
Proxy patternProxy pattern
Proxy pattern
 
Proxy pattern
Proxy patternProxy pattern
Proxy pattern
 
Microservices architecture v2
Microservices architecture v2Microservices architecture v2
Microservices architecture v2
 
Configure an environnement for ASP.NET Core 2
Configure an environnement for ASP.NET Core 2Configure an environnement for ASP.NET Core 2
Configure an environnement for ASP.NET Core 2
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
About netcore2
About netcore2About netcore2
About netcore2
 
ECommerce Logging
ECommerce LoggingECommerce Logging
ECommerce Logging
 
Architecture multi tiers et système de notification
Architecture multi tiers et système de notificationArchitecture multi tiers et système de notification
Architecture multi tiers et système de notification
 
Revue sprint2
Revue sprint2Revue sprint2
Revue sprint2
 
Revue sprint 1
Revue sprint 1Revue sprint 1
Revue sprint 1
 
Video3 mise enplacedaikibo
Video3 mise enplacedaikiboVideo3 mise enplacedaikibo
Video3 mise enplacedaikibo
 
Video2 agilite etscalabiliteentreprise
Video2 agilite etscalabiliteentrepriseVideo2 agilite etscalabiliteentreprise
Video2 agilite etscalabiliteentreprise
 
Ingenius Web Services
Ingenius Web ServicesIngenius Web Services
Ingenius Web Services
 
Startpoint - Sprint 2 - Objectifs
Startpoint - Sprint 2 - ObjectifsStartpoint - Sprint 2 - Objectifs
Startpoint - Sprint 2 - Objectifs
 
StartPoint - Sprint 1
StartPoint - Sprint 1StartPoint - Sprint 1
StartPoint - Sprint 1
 
Devops - VSTS - Source
Devops - VSTS - SourceDevops - VSTS - Source
Devops - VSTS - Source
 
Devops - Git - VSTS
Devops - Git - VSTSDevops - Git - VSTS
Devops - Git - VSTS
 

Aspnetcore introduction

  • 3. Architecture .NET Core : Une architecture multiplateforme
  • 4. Template dans Visual Studio 2015 / 2017  Il existe 3 projets dans .NET core  La class librarie permettant de créer une librairie en .net  La console Application qui permet de s’exécuter en console  ASP.NET Core Web Application pour l’application Web
  • 5. Première approche avec un projet ASP.NET Core  Architecture et principe généraux Site ASP.NET APPLICATION SERVEUR APPLICATION CLIENT Projet library class Nuget packages Wwwroot : ressources statiques Packages bower Tasks grunt/gulp
  • 6. Où est mon global.asax ?  Comme avec Owin remplacé par la classe Startup  2 Méthodes s’exposent désormais à  ConfigureServices pour les services  Configure pour la configuration du pipeline, extensible pour récupérer les différents objets à injecter à Configure
  • 7. Qu’est-ce qu’un Service ?  1 Service est une classe instancié par l’injecteur de dépendances .net core et qui a pour objectif de partager des fonctionnalités avec l’ensemble de votre application. Il existe les types suivants  Antiforgery permet de luter contre les attaques de sécurité  Authorization permet de fournir un service d’authentification et d’autorisation  Cors permet de fournir un service de gestion des Cors  Data Protection permet de fournir un service de gestion des données  DirectoryBrowser permet de fournir un service qui permet d’explorer des fichiers  DistributedMemoryCache permet de fournir un service de gestion de cache distribué  MemoryCache permet de fournir le service de gestion de cache local  EntityFramework permet de suppléer via DI l’entité-framework  Localization permet de suppléer le service de localisation utilisé par l’application  Logging permet de fournir le fournisseur de logue  MVC pour fournir le service MVC  Routing pour le routage des URL  Scoped fourni un injecteur personnalisé de niveau scope  Singleton fourni un injecteur personnalisé de niveau singleton (une seule instance par application)  Transient fourni un injecteur personnalisé de niveau requête  WebEncoder permet de gérer les encodeurs de HTML, Url et Javascript
  • 8. Comment j’utilise un service ?  Il existe différentes façons d’utiliser un service  Depuis l’injection automatique via le constructeur d’un contrôleur  Depuis l’injection automatique via une propriété  Depuis la propriété RequestServices  Pour déclarer le service il faut passer une interface  Pour l’enregistrer il faut modifier la classe Startup
  • 9. Mais où est donc mon fichier de configuration ?  Asp.net core utilise plusieurs types de fichiers de configuration  Fichier (json, xml, ini)  Command line  Variables d’environnement  Objet .Net stocké en mémoire  Database  Custom  Mais rien n’est déclaré par défaut, contrairement à ASP.NET, donc il faut déclarer le bon service dans la classe startup. Exemple pour du json
  • 10. Mais comment on écrit un fichier maintenant ?  Comme nous l’avons vu, ASP.net core fonctionne sur Linux, Windows, et Mac donc on ne peut utiliser le system.Io de Windows car il est indépendant de la plateforme. Pour pouvoir travailler avec des fichiers, il faut implémenter un service qui implémente l’interface IFileProvider  On peut dire que System.IO.File a été remplace par le provider PhysicalFileProvider
  • 11. Support multiple environnement  Aspnet core introduit la gestion multi- environnement nécessaire  Vous pouvez définir des paramètres et des comportements spécifiques par environnement
  • 12. Un fichier Program dans un projet Web ?  Et oui, Aspnet core a fini avec le support direct et lié à IIS, il faut désormais activer une application pour tourner, c’est pourquoi il y a cette classe Program.  Pour configurer le hoster IIS, il faut l’activer dans Main de cette classe  Ce qui offre des avantages  On peut également facilement capturer les erreurs de démarrage du domaine  On peut également recupérer les détails des erreurs capturés  On peut définir le chemin Root  On peut définir l’environnement d’exécution  On peut définir le binding directement des Url  On peut spécifier l’assembly qui contient la classe Startup  On peut ajouter le gestionnaire de configuration à utiliser
  • 13. Ok, mais côté client on perd l’optimisation Web de l’Aspnet  Effectivement le composant Web optimization de Microsoft n’existe plus dans Aspnet core et a été remplacé directement par des tâches gulp ou grunt  Une vrai séparation du développement client et serveur a été mise en place  Les développeurs web travailleront en c#  Les développeurs front travailleront en jquery et auront gulp ou grunt pour leur tâche d’optimisation, nettoyage, optimisation
  • 15. Architecture MVC  A l’Instar de ASP.NET 4.6, ASP.NET Core est basée sur une architecture MVC  Partage des responsabilités entre les 3 composants  Le Model contient l’entité à utiliser  La Vue contient l’apparence visuelle  Le Controller contient le traitement et les règles de gestion  ASP.NET Core MVC offre les fonctionnalités suivantes  Routage  Model Validation  Injection de dépendance  Filtre  Zonage  Web API  Testabilité facilitée  Razor  Vue fortement typée  Tag helper  View component
  • 16. Routage  ASP.NET core fournit deux méthodes pour le Routage  Enregistrement des routes à utiliser :  routes.MapRoute(name: "Default", template: "{controller=Home}/{action=Index}/{id?}");  Déclaration d’une route  [Route("api/[controller]")
  • 17. Model Validation  Binding automatique des formulaires HTML avec les entités  Utilisation des décorateurs pour spécifier les règles de validation : Required, MinLength, MaxLength, DataType, StringLength, Compare  Utilisation de ModelState.IsValid pour valider automatiquement qu’une entité bindée est valide pour l’ensemble des ces décorateurs ou non  Utilisation possible du framework Javascript jquery-validation pour la validation côtée client
  • 18.  Injection possible côté code c# via les constructeurs et les propriétés  Utilisation de la meta @inject pour injecter côté Razor et Vue Injection de dépendances
  • 19. Filtre  Nous avons vue qu’il est possible de personnalisé le pipeline ASP.NET par filtre  Nous avons vue qu’il existe différents types de filtres  Autorisation pour la sécurité sur un controller  Resource pour implémenter le mécanisme de cache  Action pour exécuter du code avant et après l’exécution de l’action  Exception pour capturer une excpetion  Result pour éxecuter du code avant et après l’appel de l’action  Filtre est implémentée par une interface spécifique exemple IActionFilter  Les interfaces des filtres sont fournies avec leur correspond asynchrone  Le framework .NET core fourni également des filtres de base  ActionFilterAttribute  ExceptionFilterAttribute  ResultFilterAttribute  FormatFilterAttribute  ServiceFilterAttribute  TypeFilterAttribute  Le filtre est enregistré par l’option du middleware : services.AddMvc(options => { options.Filters.Add(new AddHeaderAttribute("GlobalAddHeader", "Result filter added to MvcOptions.Filters")); // an instance });
  • 20. Filtre (suite)  Nous avons vu que l’ordre d’exécution d’un filtre peut être modifié  [AddHeader("Author", "Michel Bruchet @StartPoint", Order =3)]  Nous avons vue qu’il est possible désactiver l’exécution d’un filtre en surchargeant le result public class ShortCircuitingResourceFilterAttribute : Attribute, IResourceFilter { public void OnResourceExecuting(ResourceExecutingContext context) { context.Result = new ContentResult() { Content = "Resource unavailable - header should not be set" }; } public void OnResourceExecuted(ResourceExecutedContext context) { } }
  • 21.  Moyen de diviser proprement un site en plusieurs sous site  Possibilité d’utiliser un dossier spécifique  Possibilité de regrouper les vues, les controllers par zone  Possibilité de diviser le site par domaine fonctionnel Zonage
  • 22. Autre vidéo  Merci pour votre assiduité, je vais publié beaucoup d’autre vidéo, technique (ASP.NET Core / Service Fabric / Powershell / etc..) que de gestion de projets, architecture d’entreprise  Vous pouvez me contacter par  email : mbruchet@live.fr  Linkedin : https://www.linkedin.com/in/michelbruchet  Facebook : https://www.facebook.com/michel.bruchet.3 StartPoint Logiciel de comptabilité et de gestion