Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2015 - 12@13 - ASP.NET MVC 5...tout en démo

2015 - 12@13 - ASP.NET MVC 5...tout en démo

Au programme :
- Asp.Net Identity : L'authentification avec Facebook, ...
- Le Scaffolding (CRUD) : Génération automatique du contrôleur et des vues
- Le routage par attributs : La génération du html plus simplement
- Razor 3: Le templating du html plus simplement
- Web API 2: Et pourquoi ne pas brancher le site avec une Apps ?

Avatar for Yassine KANDRI RODY

Yassine KANDRI RODY

May 05, 2015
Tweet

More Decks by Yassine KANDRI RODY

Other Decks in Programming

Transcript

  1. © SOFTEAM Cadextan 2015 FAITES DE VOTRE PROJET UN SUCCÈS

    © SOFTEAM Cadextan 2015 SOFTEAM Cadextan PRÉSENTATION DE ASP .NET MVC5 Animée par Yassine KANDRI RODY Communauté : Startech .Net LE CODE SOURCE DE LA PRÉSENTATION EST SUR : HTTPS://GITHUB.COM/YKANDRIRODY/STARTECHMOVIES
  2. © SOFTEAM Cadextan 2015 PLAN • Historique • Introduction •

    Authentification • Scaffolding • Routage • Razor • Web API Présentation de ASP .Net MVC5 2
  3. © SOFTEAM Cadextan 2015 BYE BYE WEBFORMS, WELCOME MVC •

    ASP .Net Webforms :  ViewState  Moteur ASPX  Contrôles server : runat=server • ASP .Net MVC :  Pattern adapté au web  Séparation intégrateur / développeur  Vues : 100% HTML + JS + CSS  Contrôleurs : 100% C#  Testabilité Présentation de ASP .Net MVC5 4
  4. © SOFTEAM Cadextan 2015 PRESENTATION GENERALE DE MVC • Modèle

    – Vue – Contrôleur  Modèle : modèle de données  Vue : présentation des données et interface utilisateur  Contrôleur : gestion des demandes de l’utilisateur • Apparu en 1978 • En 1979, Trygve Reenskaug (dans le projet Smalltalk):  « Le but principal est de combler l’écart entre la représentation humaine du modèle et le modèle digital dans l’ordinateur » Présentation de ASP .Net MVC5 5 Contrôleur Modèle Vue MODIFICATIONS LECTURES MANIPULATION DES DONNÉES
  5. © SOFTEAM Cadextan 2015 HISTORIQUE - MVC 1.0 • Sorti

    le 13 Mars 2009 • Nouvel espace de nom : System.Web.Mvc  Classes de base pour les contrôleurs  Classes pour les vues  Classes désignant les actions : créer des liaisons de données entre la vue et le modèle • Nouvel espace de nom : System.Web.Mvc.Ajax  Les premiers mécanismes Ajax dans les pages ASP .NET MVC • Corriger les inconvénients des applications ASP.Net « Classiques » :  Meilleure structure de l’application MVC vs Orienté composant  Pas de ViewState  Page Controller  Front Controller : Traiter les requêtes par l'intermédiaire du routage et d'un contrôleur Présentation de ASP .Net MVC5 6
  6. © SOFTEAM Cadextan 2015 HISTORIQUE - MVC 2 • Sorti

    le 10 Mars 2010 • Nouveaux espaces de noms :  System.Web.Mvc.Async  System.Web.Mvc.Html • Support des Areas : organisation et découpage du projet • Helpers fortement typés  <%= Html.TextBox("firstName", Model.FirstName)%>   <%= Html.TextBoxFor(client => client.FirstName) %> • Support des annotations et validation côté client  [Required(ErrorMessage = "Le nom est requis")] • Actions asynchrones Présentation de ASP .Net MVC5 7
  7. © SOFTEAM Cadextan 2015 HISTORIQUE - MVC 3 • Sorti

    le 13 Janvier 2011 • Integrated Scaffolding system extensible via NuGet • HTML 5 templates • Razor View Engine • Dependency Injection • Global Action Filters • Meilleur support JavaScript  unobtrusive JavaScript  jQuery Validation  JSON binding Présentation de ASP .Net MVC5 8
  8. © SOFTEAM Cadextan 2015 HISTORIQUE - MVC 4 • Sorti

    le 15 Aout 2012 • ASP.NET Razor 2 • ASP.NET Web API • Nouveaux templates par défaut  Rafraichis : Bootstrap  Mobile • Nouvelles fonctionnalités de support du mobile • Meilleure prise en charge des méthodes asynchrones • Bundling et Minification • External Logins  Facebook  OAuth  OpenID Présentation de ASP .Net MVC5 9
  9. © SOFTEAM Cadextan 2015 MVC 5 • One ASP.NET •

    Identification  Asp.Net Identity  Authentication Filters • Filter overrides • Attribute routing • ASP.NET Razor 3 • Web API 2 Présentation de ASP .Net MVC5 11
  10. © SOFTEAM Cadextan 2015 COMPOSANTS OPEN SOURCE • jQuery 1.10

    : Framework Javascript • Bootstrap 3.0 : Responsive Web Design • SignalR 2.0 : Interaction Navigateur / code • OWIN (Open Web interface) : Abstraction application / serveur • Modernizr 2.6 : Moderniser les anciens navigateurs • Respond 1.2 : Support du Responsive Web Design pour IE8- Présentation de ASP .Net MVC5 12
  11. © SOFTEAM Cadextan 2015 DEMO : CREATION DU SITE •

    Créer un site web avec ASP .Net MVC 5 Présentation de ASP .Net MVC5 13
  12. © SOFTEAM Cadextan 2015 ASP.NET IDENTITY ET OAUTH 2.0 •

    Support d’OWIN (Open Web Interface), indépendance de IIS :  Katana : Implémentation  Kayak : Serveur  Gate / Nancy : Framework HTTP • Support de l’authentification en SPA • Support du SSO :  Facebook  Google  OpenID  OAuth et OAuth 2.0 • Gestion de « Authorization Server Role » :  Azure Active Directory  ADFS dans Windows Server 2012 R2 Présentation de ASP .Net MVC5 15
  13. © SOFTEAM Cadextan 2015 AUTHENTICATION FILTERS : IAUTHENTICATIONFILTER  Fonction

    : Intervenir avant l’étape d’autorisation  En complément des 4 autres types de filtres:  IActionFilter, IAuthorizationFilter, IExceptionFilter, IResultFilter • Exemple : public class NewAuthenticationFilter: ActionFilterAttribute, IAuthenticationFilter { public void OnAuthentication(AuthenticationContext filterContext) { Debug.WriteLine("OnAuthentication"); } public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext) { Debug.WriteLine("OnAuthenticationChallenge"); } } • Utilisation : [NewAuthenticationFilter] public ActionResult Index() { return View(); } Présentation de ASP .Net MVC5 16
  14. © SOFTEAM Cadextan 2015 FILTER OVERRIDES : IOVERRIDEFILTER  Fonction

    : Exclure une Action ou un Controller des filtres  Options :  [OverrideActionFilters]  [OverrideAuthentication]  [OverrideAuthorization]  [OverrideExceptionFilters]  [OverrideResultFilters] • Exemple : public class OverrideAuthorizeAttribute : AuthorizeAttribute, IOverrideFilter { public Type FiltersToOverride { get { return typeof(IAuthorizationFilter); } } } [Authorize(Users="Admin")] public class HomeController : Controller { [OverrideAuthorize(Users = "Yassine")] public ActionResult Index() { return View(); } } Présentation de ASP .Net MVC5 17
  15. © SOFTEAM Cadextan 2015 DEMO : SCAFFOLDING • Générer automatiquement

    CRUD :  Le controlleur  Les vues Présentation de ASP .Net MVC5 20
  16. © SOFTEAM Cadextan 2015 ATTRIBUTE ROUTING - ANNOTATIONS  Annotation

    des Actions et Controllers  Rapprochement des fonctionnalités et des routes : [RoutePrefix("orders")] public class OrdersController : ApiController { [Route("{id}")] public Order Get(int id) { } [Route("{id}/approve")] public Order Approve(int id) { } } • Activation : public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); } } Présentation de ASP .Net MVC5 22
  17. © SOFTEAM Cadextan 2015 ATTRIBUTE ROUTING • Resource hierarchy :

    public class MoviesController : ApiController { [Route("movies")] public IEnumerable<Movie> Get(){ } [Route("actors/{actorId}/movies")] public IEnumerable<Movie> GetByActor(int actorId){ } [Route("directors/{directorId}/movies")] public IEnumerable<Movie> GetByDirector(int directorId){ } } • Convenient syntax : [Route("people/{name?}")] // Optional parameter [Route("people/{name=Dan}")] // Default value [Route("people/{name:alpha}")] // Constraint: Alphabetic chars Présentation de ASP .Net MVC5 23
  18. © SOFTEAM Cadextan 2015 DEMO : ROUTAGE  http://lh:53368/Movies 

    http://lh:53368/films  http://lh:53368/Movies/Details/tt3757982  http://lh:53368/films/tt3757982 Présentation de ASP .Net MVC5 24
  19. © SOFTEAM Cadextan 2015 ASP.NET RAZOR 3 • Avantages :

     Moins de code  Plus de tests  Intellisense • Principes :  Helpers HTML  Ecriture proche de C#  Accès au framework Présentation de ASP .Net MVC5 26
  20. © SOFTEAM Cadextan 2015 WEB API 2 • Support de

    : (action / verbe)  Select : GET  Insert : POST  Update : PUT  Delete : DELETE • Authentification externe • Cross-Origin Resource Sharing (CORS) • OData : utilization de  $select  $expand  $value Présentation de ASP .Net MVC5 29
  21. © SOFTEAM Cadextan 2015 WEB API 2 – ODATA EXEMPLES

    • DotNet : [Queryable] public IQueryable<Category> GetCategories() { return db.Categories; } • Request : GET http://localhost/odata/Categories?$expand=Products&$select=Name,Products/Name { "odata.metadata":"http://.../odata/$metadata#Categories&$select=Name,Products/Name", "value":[ { "Products":[ {"Name":"Hat"},{"Name":"Scarf"},{"Name":"Socks"} ], "Name":"Apparel" }, { "Products":[ {"Name":"Yo-yo"},{"Name":"Puzzle"} ], "Name":"Toys" }] } Présentation de ASP .Net MVC5 30
  22. © SOFTEAM Cadextan 2015 QUELQUES LIENS … • http://www.asp.net/mvc/tutorials/mvc-5 •

    http://visualstudiomagazine.com/articles/2013/08/28/asp_net-authentication-filters.aspx • http://kevin-junghans.blogspot.in/2013/10/adding-email-confirmation-to-aspnet.html • http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc-5.aspx • http://frenchcoding.com/2013/10/23/une-breve-introduction-au-standard-owin-et-au-projet-katana/ • http://weblogs.asp.net/shijuvarghese/archive/2014/01/25/demo-spa-app-for-asp-net-web-api-2-and-angularjs.aspx • http://www.asp.net/mvc/tutorials/mvc-5/introduction/examining-the-edit-methods-and-edit-view • http://weblogs.asp.net/imranbaloch/archive/2013/09/25/new-filter-overrides-in-asp-net-mvc-5-and-asp-net-web- api-2.aspx • http://www.davidhayden.me/blog/filter-overrides-in-asp-net-mvc-5 • http://attributerouting.net/ • http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx • http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api • http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/using-$select,-$expand,-and-$value • http://blogs.msdn.com/b/pranab/archive/2013/06/20/unit-testing-javascript-jquery-in-asp-net-mvc-project-using- qunit.aspx • http://blogs.msdn.com/b/stuartleeks/archive/2013/11/15/understanding-view-rendering-performance-in-asp-net- mvc.aspx Ma présentation 32
  23. © SOFTEAM Cadextan 2015 STARTECH DOTNET • Animation du blog

    de l’intranet et de softeam.fr • Présentations et formations autour de .Net • Concours du meilleur développeur de France • Techdays • … • Vous souhaitez nous contacter ?  [email protected] • Vous souhaitez nous rejoindre ?  [email protected] Présentation de ASP .Net MVC5 33