ASP.NET from Zero to Hero

16
1 A S P . N E T M V C F r o m z e r o t o h e r o Softwar e Developmen t Done Righ t

Transcript of ASP.NET from Zero to Hero

Page 1: ASP.NET from Zero to Hero

1

A S P . N E T M V C

F r o m z e r o t o h e r o

Software Developmen

t

Done

Right

Page 2: ASP.NET from Zero to Hero

2

Présentation

Cellenza est un cabinet de conseil IT dédié au technologies Microsoft et aux méthodes Agiles.

Notre mission consiste à jouer le rôle de bras droit et de tiers de confiance pour nos clients afin de les accompagner dans l’adoption des meilleures pratiques techniques et méthodologiques.

Afin de les aider à concevoir, développer et faire évoluer vos applications et SI, nous fédérons au sein de notre cabinet des consultants et coachs Agiles de grande qualité.

Page 3: ASP.NET from Zero to Hero

3

Nicholas Suter

Architecte logiciel

Spécialisation : homme à tout faire

Qui sommes nous ?

Georges Damien

Consultant .NET

Spécialisation : web

Page 4: ASP.NET from Zero to Hero

4

Historique de MVC chez Microsoft

Comment ça marche ?

REST et http

Le routage

Razor

Pourquoi on y passe tous ?

ASP.NET MVC : from zero to hero

Page 5: ASP.NET from Zero to Hero

5

Le pattern émerge dans les années 70 dans des projets Smalltalk… et est formalisé en 1988. C’est une des premières tentatives de formalisation du développement d’IHM.2009 : ASP.NET MVC2010 : ASP.NET MVC 2 Client-side validation,

Data Annotations2011 : ASP.NET MVC 3 Razor2012 : ASP.NET MVC 4 Web API2013 : ASP.NET MVC 5 Unification ASP.NET,

Identity et Web API 2

Historique de MVC chez Microsoft

Page 6: ASP.NET from Zero to Hero

6

Comment ça marche ?

Vue

Modèle

Ce avec quoi intéragit l’utilisateur

HTML + Razor + Javascript

La logique métier et la persistance des données

C# + SQL Server

La gare de triage : interroge le modèle, choisit et peuple la vue

C#

ContrôleurNavigateur

web

http request

http response

Action

Data

DataVue peuplée

Page 7: ASP.NET from Zero to Hero

7

REST et http

Architecture RESTfull : qui respecte le protocole http… et donc ses verbes

Verbe http Equivalent CRUD

Description

Supporté par ASP.NET MVC

Supporté par ASP.NET Web API

GET Select Sert à requêter le modèle

Oui Oui

POST Insert Créé un ou des nouveaux éléments

Oui Oui

PUT Update Modifie un ou des éléments

Oui

DELETE Delete Supprime un élément

Oui

Page 8: ASP.NET from Zero to Hero

8

La configuration du routage se fait dans App_Start/RouteConfig.cs :

Le routage

public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }

Page 9: ASP.NET from Zero to Hero

9

{controler} = la classe contrôleur{action} = nom de la méthode de la classe contrôleur{id} = identifiant de l’objet à manipuler (optionnel)

Le routage par défaut est suffisant pour de petites applicationsPour les applications plus conséquentes, on utilisera les zones (Area).

Le routage

Page 10: ASP.NET from Zero to Hero

10

Le routage

1. Réception de la requête http : GET: /Account/Login

2. Exécution de Controllers/AccountControler.Login()

3. Peuplement de la vue Views/Account/Login.cshtml

4. Envoi de réponse http avec la vue peuplée

Page 11: ASP.NET from Zero to Hero

11

Les zones

A utiliser quand le nombre de vues et de contrôleurs deviennent trop élevésPeuvent avoir un système de routage propre à chaque zone

public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin"; } }

public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default", "Admin/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }

Page 12: ASP.NET from Zero to Hero

12

C’est quoi ? Le moteur de rendu introduit avec ASP.NET MVC 3 pour remplacer le vieux moteur ASP.NET Webforms

En quoi c’est mieux ?Moins verbeuxPlus testableSupporte l’Intellisense

Les principesDes helpers HTMLDes boucles, des conditionnelles, des switch…L’accès au Framework

Razor

Page 13: ASP.NET from Zero to Hero

13

Razor

@using Microsoft.AspNet.Identity@if (Request.IsAuthenticated){ using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" })) { @Html.AntiForgeryToken()

<ul class="nav navbar-nav navbar-right"> <li> @Html.ActionLink("Hello " + User.Identity.GetUserName() + "!", "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" }) </li> <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li> </ul> }}else{ <ul class="nav navbar-nav navbar-right"> <li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li> <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li> </ul>}

Page 15: ASP.NET from Zero to Hero

15

Vous aimez vraiment Webforms ? Mais genre… vraiment ? Le ViewState, le cycle de vie de la page, le moteur ASPX, les contrôles, etc.Le pattern est propre et adapté au webLa séparation claire des responsabilités entre les intégrateurs et les développeursLes vues sont du pur HTML (+ JS + CSS), les contrôleurs et le modèle sont du pur C#La testabilité du système (on y reviendra, mais pas forcément aujourd’hui)

Pourquoi on y passe tous ?

Page 16: ASP.NET from Zero to Hero

16

Allez plus loin : http://blog.cellenza.com http://www.asp.net/mvc

Formations intra (sur mesure) et extra entreprise : http://training.cellenza.com/ [email protected]

Nous contacter :[email protected]

Nous rejoindre :[email protected]

Allez plus loin