Soirée 3T Soat - Asp.net MVC

2,006 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,006
On SlideShare
0
From Embeds
0
Number of Embeds
52
Actions
Shares
0
Downloads
78
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×