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 – AS...
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.MapRo...
Le routage
⦿ … encore des exemples de routes …
routes.MapRoute(
name: "Ma-Premiere-Route",
url: "{controller}/{action}"
);...
Le routage
⦿ … et avec des contraintes
routes.MapRoute(
name: "Historique",
url: "{annee}/{mois}/{jour}",
defaults: new { ...
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...
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)

R...
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 extensib...
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....
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 b...
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

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 H...
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...
Web API
⦿…
⦿ Créer un produit ?
⦿ GET ? NON !
⦿ POST ? OUI !
⦿ POST http://monsiteweb/livre/creer

⦿ Mais aussi : PUT, DEL...
Web API
⦿ Format des données et content negociation
⦿ Entête Accept
⦿ Application/json
⦿ Application/xml
⦿ …
{
"Id":5,
"No...
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[] {...
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 ...
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 ...
Prochain SlideShare
Chargement dans…5
×

Soirée 3T Soat - Asp.net MVC

1 891 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 891
Sur SlideShare
0
Issues des intégrations
0
Intégrations
56
Actions
Partages
0
Téléchargements
74
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Soirée 3T Soat - Asp.net MVC

  1. 1. 2013-12-16 3T – ASP.NET MVC 1
  2. 2. Agenda ⦿ Le routage ⦿ Les moteurs de vues ⦿ Web API 2013-12-16 3T – ASP.NET MVC 2
  3. 3. ASP.NET MVC Le routage 2013-12-16 3T – ASP.NET MVC 3
  4. 4. Le routage ⦿ Pour mémoire … (Ces images sont issues de la MSDN) 2013-12-16 3T – ASP.NET MVC 4
  5. 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. 6. Le routage ⦿ La clé ? L’Url Routing Module 2013-12-16 3T – ASP.NET MVC 6
  7. 7. Le routage ⦿ Une route, c’est quoi ? 2013-12-16 3T – ASP.NET MVC 7
  8. 8. Le routage ⦿ Une route, c’est quoi ? 2013-12-16 3T – ASP.NET MVC 8
  9. 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. 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. 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. 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
  13. 13. DEMO 2013-12-16 3T – ASP.NET MVC 13
  14. 14. 2013-12-16 3T – ASP.NET MVC 14
  15. 15. ASP.NET MVC Les moteurs de vues 2013-12-16 3T – ASP.NET MVC 15
  16. 16. Les moteurs de vues ⦿ Une action veut retourner une vue … ⦿ Et après ? 2013-12-16 3T – ASP.NET MVC 16
  17. 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. 18. Les moteurs de vues 2013-12-16 3T – ASP.NET MVC 18
  19. 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. 20. Les moteurs de vues : Razor ⦿ La composition vue d’un fichier _Layout.cshtml 2013-12-16 3T – ASP.NET MVC 20
  21. 21. Les moteurs de vues : Razor ⦿ HTML Helpers ⦿ + Data Annotations ⦿ = Vue 2013-12-16 3T – ASP.NET MVC 21
  22. 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. 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
  24. 24. DEMO ModelMetadataProvider 2013-12-16 3T – ASP.NET MVC 24
  25. 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. 26. DEMO Razor sans ASP.NET MVC 2013-12-16 3T – ASP.NET MVC 26
  27. 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
  28. 28. 2013-12-16 3T – ASP.NET MVC 28
  29. 29. ASP.NET MVC Web API 2013-12-16 3T – ASP.NET MVC 29
  30. 30. Web API ⦿ REST ? 2013-12-16 3T – ASP.NET MVC 30
  31. 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. 32. Web API 2013-12-16 3T – ASP.NET MVC 32
  33. 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. 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. 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. 36. Web API ⦿ ASP.NET MVC ou ASP.NET Web API ? 2013-12-16 3T – ASP.NET MVC 36
  37. 37. Web API ⦿ Un modèle similaire à ASP.NET MVC 2013-12-16 3T – ASP.NET MVC 37
  38. 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
  39. 39. DEMO Batch Request 2013-12-16 3T – ASP.NET MVC 39
  40. 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
  41. 41. 2013-12-16 3T – ASP.NET MVC 41
  42. 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

×