SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
2013-12-16

3T – ASP.NET MVC

1
Agenda
⦿ Le routage
⦿ Les moteurs de vues
⦿ Web API

2013-12-16

3T – ASP.NET MVC

2
ASP.NET MVC
Le routage

2013-12-16

3T – ASP.NET MVC

3
Le routage
⦿ Pour mémoire …

(Ces images sont issues de la MSDN)
2013-12-16

3T – ASP.NET MVC

4
Le routage
⦿ Et pour ASP.NET MVC ?

Deux impératifs :
- un paramètre controller
- un paramètre action

2013-12-16

3T – ASP.NET MVC

5
Le routage
⦿ La clé ? L’Url Routing Module

2013-12-16

3T – ASP.NET MVC

6
Le routage
⦿ Une route, c’est quoi ?

2013-12-16

3T – ASP.NET MVC

7
Le routage
⦿ Une route, c’est quoi ?

2013-12-16

3T – ASP.NET MVC

8
Le routage
⦿ Des exemples de routes …
routes.MapRoute(
name: "Ma-Premiere-Route",
url: "ma-premiere-route"
);
routes.MapRoute(
name: "Ma-Premiere-Route",
url: "ma-premiere-route/{monParametre}"
);

2013-12-16

3T – ASP.NET MVC

9
Le routage
⦿ … encore des exemples de routes …
routes.MapRoute(
name: "Ma-Premiere-Route",
url: "{controller}/{action}"
);
routes.MapRoute(
"Ma-Premiere-Route",
"{controller}/{action}",
new { controller = "Home", action = "Index"}
);
routes.MapRoute(
"Ma-Premiere-Route",
“ma-page",
new { controller = "Home", action = "Index"}
);
2013-12-16

3T – ASP.NET MVC

10
Le routage
⦿ … et avec des contraintes
routes.MapRoute(
name: "Historique",
url: "{annee}/{mois}/{jour}",
defaults: new { controller = "Home", action =
"Historique" },
constraints: new
{
annee = @"d{4}",
mois = @"d{2}",
jour = @"d{2}"
}
);

2013-12-16

3T – ASP.NET MVC

11
Le routage
⦿ Pour résumer
Arrivée de la
requête

Récupère une
implémentation de
IRouteHandler

Récupère une
implémentation de
IHttpHandler

Prise en charge par
UrlRoutingModule

Pour chaque
route, évalue
également les
contraintes

Exécute
l’implémentation de
IHttpHandler

Parcourt la table de
routage

Cherche une route
dont l’url
correspond à celle
de la requête

Retourne la réponse

2013-12-16

3T – ASP.NET MVC

12
DEMO

2013-12-16

3T – ASP.NET MVC

13
2013-12-16

3T – ASP.NET MVC

14
ASP.NET MVC
Les moteurs de vues

2013-12-16

3T – ASP.NET MVC

15
Les moteurs de vues
⦿ Une action veut retourner une vue …

⦿ Et après ?

2013-12-16

3T – ASP.NET MVC

16
Les moteurs de vues
Contrôleur

ViewResult

ViewEngines
ViewEngines

IView
IView

Return View()
FindView
IView (ou pas)

Render
Rend la main après avoir écrit dans la réponse

Rend la main

2013-12-16

3T – ASP.NET MVC

17
Les moteurs de vues

2013-12-16

3T – ASP.NET MVC

18
Les moteurs de vues : Razor
⦿ Moteur de templating
⦿ Tout est dans le @
⦿ Syntaxe légère
⦿ Une panoplie de Helper extensible
⦿ (mais aussi disponible pour les autres moteurs !)

⦿ Il n’est pas lié qu’à ASP.NET MVC 
2013-12-16

3T – ASP.NET MVC

19
Les moteurs de vues : Razor
⦿ La composition vue d’un fichier _Layout.cshtml

2013-12-16

3T – ASP.NET MVC

20
Les moteurs de vues : Razor
⦿ HTML Helpers

⦿ + Data Annotations

⦿ = Vue

2013-12-16

3T – ASP.NET MVC

21
Les moteurs de vues : Razor
⦿ Une classe est générée pour chaque vue

2013-12-16

3T – ASP.NET MVC

22
Les moteurs de vues : Razor
⦿ Une classe est générée pour chaque vue
⦿

2013-12-16

C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Files...

3T – ASP.NET MVC

23
DEMO
ModelMetadataProvider

2013-12-16

3T – ASP.NET MVC

24
Démo - ModelMetadataProvider
⦿ Objectifs :
⦿ Générer des formulaires dynamiquement
⦿ Pouvoir extraire des metadata d’une base de
données
⦿ Avoir une cohabitation avec des modèles plus
classiques qui utilisent les data annotations

2013-12-16

3T – ASP.NET MVC

25
DEMO
Razor sans ASP.NET MVC

2013-12-16

3T – ASP.NET MVC

26
Démo – Razor sans ASP.NET MVC
⦿ Objectifs :
⦿ Utiliser Razor pour générer du contenu …

⦿ … dans une application console 

2013-12-16

3T – ASP.NET MVC

27
2013-12-16

3T – ASP.NET MVC

28
ASP.NET MVC
Web API

2013-12-16

3T – ASP.NET MVC

29
Web API
⦿ REST ?

2013-12-16

3T – ASP.NET MVC

30
Web API
⦿ REST ? 3 règles principales
⦿ URI : Identifiant de ressources
⦿ Verbe HTTP : Identifiant d’opération
⦿ Réponse HTTP : Représentation d’une
ressource

2013-12-16

3T – ASP.NET MVC

31
Web API

2013-12-16

3T – ASP.NET MVC

32
Web API
⦿ Des exemples …
⦿ Récupérer un produit ?
⦿ POST ? NON !
⦿ GET ? OUI !
⦿ GET http://monsiteweb/livre/3

2013-12-16

3T – ASP.NET MVC

33
Web API
⦿…
⦿ Créer un produit ?
⦿ GET ? NON !
⦿ POST ? OUI !
⦿ POST http://monsiteweb/livre/creer

⦿ Mais aussi : PUT, DELETE, PATCH, HEAD

2013-12-16

3T – ASP.NET MVC

34
Web API
⦿ Format des données et content negociation
⦿ Entête Accept
⦿ Application/json
⦿ Application/xml
⦿ …
{
"Id":5,
"Nom":"Produit 5"
}
<Produit xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/MvcApplication.Controllers">
<Id>5</Id>
<Nom>Produit 5</Nom>
</Produit>

2013-12-16

3T – ASP.NET MVC

35
Web API
⦿ ASP.NET MVC ou ASP.NET Web API ?

2013-12-16

3T – ASP.NET MVC

36
Web API
⦿ Un modèle similaire à ASP.NET MVC

2013-12-16

3T – ASP.NET MVC

37
Web API
⦿ Et à l’usage ?
public class ValuesController : ApiController
{
public IEnumerable<string> Get()
{
return new[] { "value1", "value2" };
}
}

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

2013-12-16

3T – ASP.NET MVC

38
DEMO
Batch Request

2013-12-16

3T – ASP.NET MVC

39
Démo – Batch request
⦿ Objectifs :
⦿ Créer une API qui traiter plusieurs requêtes en
simultanée

2013-12-16

3T – ASP.NET MVC

40
2013-12-16

3T – ASP.NET MVC

41
Pour aller plus loin
⦿ http://blog.soat.fr/author/sebastien-ferrand/

⦿ http://blogs.developpeur.org/leo/

2013-12-16

3T – ASP.NET MVC

42

Contenu connexe

Tendances

ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheMicrosoft
 
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
 
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 FrameworkMicrosoft
 
Javascript pour les développeurs C#
Javascript pour les développeurs C#Javascript pour les développeurs C#
Javascript pour les développeurs C#Microsoft
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)Saïd Radhouani
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4CERTyou Formation
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Nazih Heni
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .NetGregory Renard
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Microsoft
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC Cellenza
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA Cellenza
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeOuadie LAHDIOUI
 
Google : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSGoogle : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSPeak Ace
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 

Tendances (20)

ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marche
 
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"
 
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
 
Javascript pour les développeurs C#
Javascript pour les développeurs C#Javascript pour les développeurs C#
Javascript pour les développeurs C#
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)
 
M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4M20486 formation-developper-des-applications-web-asp-net-mvc-4
M20486 formation-developper-des-applications-web-asp-net-mvc-4
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .Net
 
Node.js
Node.jsNode.js
Node.js
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4Quoi de neuf dans ASP.NET MVC 4
Quoi de neuf dans ASP.NET MVC 4
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA 03 - [ASP.NET Core] Services RESTful et SPA
03 - [ASP.NET Core] Services RESTful et SPA
 
Introduction à Angular 2
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2
 
Front end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitéeFront end, une île qui mérite d'être visitée
Front end, une île qui mérite d'être visitée
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
 
Google : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JSGoogle : Prise en charge de l'Ajax et de l'Angular JS
Google : Prise en charge de l'Ajax et de l'Angular JS
 
Atelier initiation Windows Phone 7
Atelier initiation Windows Phone 7Atelier initiation Windows Phone 7
Atelier initiation Windows Phone 7
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 

En vedette

A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatSOAT
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesSOAT
 
DoYouSEO Camp mtl #2
DoYouSEO Camp mtl #2DoYouSEO Camp mtl #2
DoYouSEO Camp mtl #2DoYouSEO
 
Facilitez vous la vie - Ricardo Minhoto
Facilitez vous la vie - Ricardo MinhotoFacilitez vous la vie - Ricardo Minhoto
Facilitez vous la vie - Ricardo MinhotoSOAT
 
PLNCA Formations Numériques 2015
PLNCA Formations Numériques 2015PLNCA Formations Numériques 2015
PLNCA Formations Numériques 2015Sabine C
 
Mirage
MirageMirage
MirageBENFAH
 
Lanoye les bonnes feuilles
Lanoye   les bonnes feuillesLanoye   les bonnes feuilles
Lanoye les bonnes feuilleslesoirbe
 
Blue screen of death
Blue screen of deathBlue screen of death
Blue screen of deathAymen Drira
 
Accessibilité des sites web de tourisme français depuis l'Asie
Accessibilité des sites web de tourisme français depuis l'AsieAccessibilité des sites web de tourisme français depuis l'Asie
Accessibilité des sites web de tourisme français depuis l'AsieIZIASIA
 
Owf2013 developper-projet-fonctionnellement-riches
Owf2013 developper-projet-fonctionnellement-richesOwf2013 developper-projet-fonctionnellement-riches
Owf2013 developper-projet-fonctionnellement-richeshalleck45
 
Confepsylon raphael trouillet 90mai 2012
Confepsylon raphael trouillet 90mai 2012Confepsylon raphael trouillet 90mai 2012
Confepsylon raphael trouillet 90mai 2012Laboratoire Epsylon
 
Les chiffres du chomage
Les chiffres du chomage Les chiffres du chomage
Les chiffres du chomage lesoirbe
 
Intégration continue avec.Net
Intégration continue avec.NetIntégration continue avec.Net
Intégration continue avec.NetSOAT
 

En vedette (20)

A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
 
title
titletitle
title
 
Alex. bd introduction french w
Alex. bd introduction french wAlex. bd introduction french w
Alex. bd introduction french w
 
Joli tableau
Joli tableauJoli tableau
Joli tableau
 
Belles pivoines
Belles pivoinesBelles pivoines
Belles pivoines
 
DoYouSEO Camp mtl #2
DoYouSEO Camp mtl #2DoYouSEO Camp mtl #2
DoYouSEO Camp mtl #2
 
Facilitez vous la vie - Ricardo Minhoto
Facilitez vous la vie - Ricardo MinhotoFacilitez vous la vie - Ricardo Minhoto
Facilitez vous la vie - Ricardo Minhoto
 
PLNCA Formations Numériques 2015
PLNCA Formations Numériques 2015PLNCA Formations Numériques 2015
PLNCA Formations Numériques 2015
 
Mirage
MirageMirage
Mirage
 
Comput training
Comput trainingComput training
Comput training
 
title
titletitle
title
 
Lanoye les bonnes feuilles
Lanoye   les bonnes feuillesLanoye   les bonnes feuilles
Lanoye les bonnes feuilles
 
Blue screen of death
Blue screen of deathBlue screen of death
Blue screen of death
 
Accessibilité des sites web de tourisme français depuis l'Asie
Accessibilité des sites web de tourisme français depuis l'AsieAccessibilité des sites web de tourisme français depuis l'Asie
Accessibilité des sites web de tourisme français depuis l'Asie
 
Wake Up Multi
Wake Up MultiWake Up Multi
Wake Up Multi
 
Owf2013 developper-projet-fonctionnellement-riches
Owf2013 developper-projet-fonctionnellement-richesOwf2013 developper-projet-fonctionnellement-riches
Owf2013 developper-projet-fonctionnellement-riches
 
Confepsylon raphael trouillet 90mai 2012
Confepsylon raphael trouillet 90mai 2012Confepsylon raphael trouillet 90mai 2012
Confepsylon raphael trouillet 90mai 2012
 
Les chiffres du chomage
Les chiffres du chomage Les chiffres du chomage
Les chiffres du chomage
 
Intégration continue avec.Net
Intégration continue avec.NetIntégration continue avec.Net
Intégration continue avec.Net
 

Similaire à Soirée 3T Soat - Asp.net MVC

Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec aspNovencia Groupe
 
Le service workers
Le service workersLe service workers
Le service workersneuros
 
Nouveautés disponibles dans asp
Nouveautés disponibles dans aspNouveautés disponibles dans asp
Nouveautés disponibles dans aspNovencia Groupe
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
Conception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du webConception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du webSOAT
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
SQLSaturday Paris 2014 - Construire et déployer une application métier Office...
SQLSaturday Paris 2014 - Construire et déployer une application métier Office...SQLSaturday Paris 2014 - Construire et déployer une application métier Office...
SQLSaturday Paris 2014 - Construire et déployer une application métier Office...GUSS
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation
SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation
SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation GUSS
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web componentsFrancois ANDRE
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureMicrosoft
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQLBruno Bonnin
 

Similaire à Soirée 3T Soat - Asp.net MVC (20)

Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec asp
 
Le service workers
Le service workersLe service workers
Le service workers
 
Nouveautés disponibles dans asp
Nouveautés disponibles dans aspNouveautés disponibles dans asp
Nouveautés disponibles dans asp
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
Conception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du webConception de code javascript cote client dans la continuité du renouveau du web
Conception de code javascript cote client dans la continuité du renouveau du web
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Le service workers
Le service workersLe service workers
Le service workers
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker
 
SQLSaturday Paris 2014 - Construire et déployer une application métier Office...
SQLSaturday Paris 2014 - Construire et déployer une application métier Office...SQLSaturday Paris 2014 - Construire et déployer une application métier Office...
SQLSaturday Paris 2014 - Construire et déployer une application métier Office...
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation
SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation
SQLSaturday Paris 2014 - SharePoint – de la méfiance jusqu’à l’acceptation
 
Introduction aux web components
Introduction aux web componentsIntroduction aux web components
Introduction aux web components
 
spring-boot-fr.pdf
spring-boot-fr.pdfspring-boot-fr.pdf
spring-boot-fr.pdf
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
 
Stream processing et SQL
Stream processing et SQLStream processing et SQL
Stream processing et SQL
 

Plus de SOAT

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018SOAT
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libéréeSOAT
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !SOAT
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseSOAT
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-DurandSOAT
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-DurandSOAT
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-DurandSOAT
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotSOAT
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014SOAT
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...SOAT
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014SOAT
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soatSOAT
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...SOAT
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014SOAT
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#SOAT
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu BriendSOAT
 
Je suis agile tout seul - Ricardo Minhoto
Je suis agile tout seul - Ricardo MinhotoJe suis agile tout seul - Ricardo Minhoto
Je suis agile tout seul - Ricardo MinhotoSOAT
 
Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613SOAT
 
Transition Agile technique à grande échelle
Transition Agile technique à grande échelleTransition Agile technique à grande échelle
Transition Agile technique à grande échelleSOAT
 

Plus de SOAT (20)

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libérée
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entreprise
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
 
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
L'impact du Responsive Web Design sur vos équipes projet - Mathieu Parisot - ...
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu Briend
 
Je suis agile tout seul - Ricardo Minhoto
Je suis agile tout seul - Ricardo MinhotoJe suis agile tout seul - Ricardo Minhoto
Je suis agile tout seul - Ricardo Minhoto
 
Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613Play : Premiers pas par l'exemple le 120613
Play : Premiers pas par l'exemple le 120613
 
Transition Agile technique à grande échelle
Transition Agile technique à grande échelleTransition Agile technique à grande échelle
Transition Agile technique à grande échelle
 

Soirée 3T Soat - Asp.net MVC

  • 2. Agenda ⦿ Le routage ⦿ Les moteurs de vues ⦿ Web API 2013-12-16 3T – ASP.NET MVC 2
  • 4. Le routage ⦿ Pour mémoire … (Ces images sont issues de la MSDN) 2013-12-16 3T – ASP.NET MVC 4
  • 5. Le routage ⦿ Et pour ASP.NET MVC ? Deux impératifs : - un paramètre controller - un paramètre action 2013-12-16 3T – ASP.NET MVC 5
  • 6. Le routage ⦿ La clé ? L’Url Routing Module 2013-12-16 3T – ASP.NET MVC 6
  • 7. Le routage ⦿ Une route, c’est quoi ? 2013-12-16 3T – ASP.NET MVC 7
  • 8. Le routage ⦿ Une route, c’est quoi ? 2013-12-16 3T – ASP.NET MVC 8
  • 9. Le routage ⦿ Des exemples de routes … routes.MapRoute( name: "Ma-Premiere-Route", url: "ma-premiere-route" ); routes.MapRoute( name: "Ma-Premiere-Route", url: "ma-premiere-route/{monParametre}" ); 2013-12-16 3T – ASP.NET MVC 9
  • 10. Le routage ⦿ … encore des exemples de routes … routes.MapRoute( name: "Ma-Premiere-Route", url: "{controller}/{action}" ); routes.MapRoute( "Ma-Premiere-Route", "{controller}/{action}", new { controller = "Home", action = "Index"} ); routes.MapRoute( "Ma-Premiere-Route", “ma-page", new { controller = "Home", action = "Index"} ); 2013-12-16 3T – ASP.NET MVC 10
  • 11. Le routage ⦿ … et avec des contraintes routes.MapRoute( name: "Historique", url: "{annee}/{mois}/{jour}", defaults: new { controller = "Home", action = "Historique" }, constraints: new { annee = @"d{4}", mois = @"d{2}", jour = @"d{2}" } ); 2013-12-16 3T – ASP.NET MVC 11
  • 12. Le routage ⦿ Pour résumer Arrivée de la requête Récupère une implémentation de IRouteHandler Récupère une implémentation de IHttpHandler Prise en charge par UrlRoutingModule Pour chaque route, évalue également les contraintes Exécute l’implémentation de IHttpHandler Parcourt la table de routage Cherche une route dont l’url correspond à celle de la requête Retourne la réponse 2013-12-16 3T – ASP.NET MVC 12
  • 15. ASP.NET MVC Les moteurs de vues 2013-12-16 3T – ASP.NET MVC 15
  • 16. Les moteurs de vues ⦿ Une action veut retourner une vue … ⦿ Et après ? 2013-12-16 3T – ASP.NET MVC 16
  • 17. Les moteurs de vues Contrôleur ViewResult ViewEngines ViewEngines IView IView Return View() FindView IView (ou pas) Render Rend la main après avoir écrit dans la réponse Rend la main 2013-12-16 3T – ASP.NET MVC 17
  • 18. Les moteurs de vues 2013-12-16 3T – ASP.NET MVC 18
  • 19. Les moteurs de vues : Razor ⦿ Moteur de templating ⦿ Tout est dans le @ ⦿ Syntaxe légère ⦿ Une panoplie de Helper extensible ⦿ (mais aussi disponible pour les autres moteurs !) ⦿ Il n’est pas lié qu’à ASP.NET MVC  2013-12-16 3T – ASP.NET MVC 19
  • 20. Les moteurs de vues : Razor ⦿ La composition vue d’un fichier _Layout.cshtml 2013-12-16 3T – ASP.NET MVC 20
  • 21. Les moteurs de vues : Razor ⦿ HTML Helpers ⦿ + Data Annotations ⦿ = Vue 2013-12-16 3T – ASP.NET MVC 21
  • 22. Les moteurs de vues : Razor ⦿ Une classe est générée pour chaque vue 2013-12-16 3T – ASP.NET MVC 22
  • 23. Les moteurs de vues : Razor ⦿ Une classe est générée pour chaque vue ⦿ 2013-12-16 C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Files... 3T – ASP.NET MVC 23
  • 25. Démo - ModelMetadataProvider ⦿ Objectifs : ⦿ Générer des formulaires dynamiquement ⦿ Pouvoir extraire des metadata d’une base de données ⦿ Avoir une cohabitation avec des modèles plus classiques qui utilisent les data annotations 2013-12-16 3T – ASP.NET MVC 25
  • 26. DEMO Razor sans ASP.NET MVC 2013-12-16 3T – ASP.NET MVC 26
  • 27. Démo – Razor sans ASP.NET MVC ⦿ Objectifs : ⦿ Utiliser Razor pour générer du contenu … ⦿ … dans une application console  2013-12-16 3T – ASP.NET MVC 27
  • 29. ASP.NET MVC Web API 2013-12-16 3T – ASP.NET MVC 29
  • 30. Web API ⦿ REST ? 2013-12-16 3T – ASP.NET MVC 30
  • 31. Web API ⦿ REST ? 3 règles principales ⦿ URI : Identifiant de ressources ⦿ Verbe HTTP : Identifiant d’opération ⦿ Réponse HTTP : Représentation d’une ressource 2013-12-16 3T – ASP.NET MVC 31
  • 32. Web API 2013-12-16 3T – ASP.NET MVC 32
  • 33. Web API ⦿ Des exemples … ⦿ Récupérer un produit ? ⦿ POST ? NON ! ⦿ GET ? OUI ! ⦿ GET http://monsiteweb/livre/3 2013-12-16 3T – ASP.NET MVC 33
  • 34. Web API ⦿… ⦿ Créer un produit ? ⦿ GET ? NON ! ⦿ POST ? OUI ! ⦿ POST http://monsiteweb/livre/creer ⦿ Mais aussi : PUT, DELETE, PATCH, HEAD 2013-12-16 3T – ASP.NET MVC 34
  • 35. Web API ⦿ Format des données et content negociation ⦿ Entête Accept ⦿ Application/json ⦿ Application/xml ⦿ … { "Id":5, "Nom":"Produit 5" } <Produit xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MvcApplication.Controllers"> <Id>5</Id> <Nom>Produit 5</Nom> </Produit> 2013-12-16 3T – ASP.NET MVC 35
  • 36. Web API ⦿ ASP.NET MVC ou ASP.NET Web API ? 2013-12-16 3T – ASP.NET MVC 36
  • 37. Web API ⦿ Un modèle similaire à ASP.NET MVC 2013-12-16 3T – ASP.NET MVC 37
  • 38. Web API ⦿ Et à l’usage ? public class ValuesController : ApiController { public IEnumerable<string> Get() { return new[] { "value1", "value2" }; } } config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); 2013-12-16 3T – ASP.NET MVC 38
  • 40. Démo – Batch request ⦿ Objectifs : ⦿ Créer une API qui traiter plusieurs requêtes en simultanée 2013-12-16 3T – ASP.NET MVC 40
  • 42. Pour aller plus loin ⦿ http://blog.soat.fr/author/sebastien-ferrand/ ⦿ http://blogs.developpeur.org/leo/ 2013-12-16 3T – ASP.NET MVC 42