SlideShare une entreprise Scribd logo
1  sur  16
A S P . N E T

M V C

From zero to hero
Software
Development

Done Right
1
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é.

2
Qui sommes nous ?

Georges Damien
Consultant .NET

Architecte logiciel

Spécialisation : web

3

Nicholas Suter

Spécialisation : homme à
tout faire
ASP.NET MVC : from zero to hero

Historique de MVC chez Microsoft
Comment ça marche ?
REST et http
Le routage
Razor
Pourquoi on y passe tous ?

4
Historique de MVC chez Microsoft

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 MVC
2010 :
ASP.NET MVC 2
Client-side validation,
Data Annotations
2011 :
ASP.NET MVC 3
Razor
2012 :
ASP.NET MVC 4
Web API
2013 :
ASP.NET MVC 5
Unification ASP.NET,
Identity et Web API 2

5
Comment ça marche ?

Modèle

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

C# + SQL
Server

http request

Navigateur
web

Contrôleur
http response
La gare de triage :
interroge le
modèle, choisit et
peuple la vue
C#

6

Ce avec quoi
intéragit
l’utilisateur

Vue
HTML + Razor
+ Javascript
REST et http
Architecture RESTfull : qui respecte le protocole http… et donc ses verbes

Verbe http

Equivalent
CRUD

Description

Supporté par Supporté par
ASP.NET
ASP.NET
MVC
Web API

GET

Select

Sert à
requêter le
modèle

Oui

Oui

POST

Insert

Créé un ou
Oui
des nouveaux
éléments

Oui

PUT

Update

Modifie un ou
des éléments

Oui

DELETE

Delete

Supprime un
élément

Oui

7
Le routage

La configuration du routage se fait dans
App_Start/RouteConfig.cs :
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 }
);
}

8
Le routage

{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
applications
Pour les applications plus conséquentes, on utilisera les
zones (Area).

9
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

10
Les zones

A utiliser quand le nombre de vues et de contrôleurs
deviennent trop élevés
Peuvent avoir un système de routage propre à chaque
zone
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "Admin"; }
}

11

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

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 verbeux
Plus testable
Supporte l’Intellisense

Les principes
Des helpers HTML
Des boucles, des conditionnelles, des switch…
L’accès au Framework

12
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>
}

13
Razor

ActionLink

Un lien vers une méthode d'action.

BeginForm

Déclaration d'un formulaire et lien vers la méthode

d'action qui restitue le formulaire.
CheckBox
DropDownList

Une liste déroulante.

Hidden

Informations du formulaire invisibles pour l’utilisateur.

ListBox

Une zone de liste.

Password

Une champ texte pour mot de passe.

RadioButton

Un bouton radio.

TextArea

Une zone de texte (ou champ texte multiligne).

TextBox

14

Une case à cocher.

Un champ texte.
Pourquoi on y passe tous ?

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 web
La séparation claire des responsabilités entre les
intégrateurs et les développeurs
Les 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)
15
Allez plus loin

Allez plus loin :
http://blog.cellenza.com
http://www.asp.net/mvc
Formations intra (sur mesure) et extra entreprise :
http://training.cellenza.com/
formation@cellenza.com
Nous contacter :
info@cellenza.com
Nous rejoindre :
recrutement@cellenza.com

16

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
 
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
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyonClement Bouillier
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)SOAT
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido SOAT
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)Saïd Radhouani
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .NetGregory Renard
 
Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm
 
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
 
Alphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm
 
Alphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm
 
Asp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurAsp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurMicrosoft
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCFRomain Coste
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeMicrosoft
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the futureOuadie LAHDIOUI
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm
 

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
 
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
 
20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon20140227 - injection de dépendances - mug lyon
20140227 - injection de dépendances - mug lyon
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 
Principes De Base De Asp .Net
Principes De Base De Asp .NetPrincipes De Base De Asp .Net
Principes De Base De Asp .Net
 
Atelier initiation Windows Phone 7
Atelier initiation Windows Phone 7Atelier initiation Windows Phone 7
Atelier initiation Windows Phone 7
 
Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé Alphorm.com Support de la formation NodeJS , avancé
Alphorm.com Support de la formation NodeJS , avancé
 
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
 
Introduction à Angular 2
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2
 
Alphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOS
 
Alphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentauxAlphorm.com Formation NodeJS, les fondamentaux
Alphorm.com Formation NodeJS, les fondamentaux
 
Asp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futurAsp.Net Web.API, SignalR et UX : le futur
Asp.Net Web.API, SignalR et UX : le futur
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCF
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
 
Hello AngularJS - Back to the future
Hello AngularJS - Back to the futureHello AngularJS - Back to the future
Hello AngularJS - Back to the future
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancé
 

En vedette

Oficina business model canvas por Daniel Wildt
Oficina business model canvas por Daniel WildtOficina business model canvas por Daniel Wildt
Oficina business model canvas por Daniel WildtFelipe Freitag Vargas
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetFrédéric Vandenbriele
 
Visual Thinking em reuniões - parte 1 - Propósito
Visual Thinking em reuniões - parte 1 - PropósitoVisual Thinking em reuniões - parte 1 - Propósito
Visual Thinking em reuniões - parte 1 - PropósitoFelipe Freitag Vargas
 
Les nouveautés de asp.net mvc 3
Les nouveautés de asp.net mvc 3Les nouveautés de asp.net mvc 3
Les nouveautés de asp.net mvc 3Jerome Hugon
 
Passive reporting 2
Passive reporting 2Passive reporting 2
Passive reporting 2englishbites
 
Les collections en JAVA
Les collections en JAVALes collections en JAVA
Les collections en JAVAAxel KAMALAK
 
Curso Quer Que Desenhe - Visual Thinking - maio/14
Curso Quer Que Desenhe - Visual Thinking - maio/14Curso Quer Que Desenhe - Visual Thinking - maio/14
Curso Quer Que Desenhe - Visual Thinking - maio/14Felipe Freitag Vargas
 
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
 
Veille et information partagée
Veille et information partagéeVeille et information partagée
Veille et information partagéeEmilie Marquois
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Microsoft
 
Debutermatlab
DebutermatlabDebutermatlab
Debutermatlabnejmzad
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab Hajer Dahech
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabMariem ZAOUALI
 
Introduction au traitement d'images
Introduction au traitement d'imagesIntroduction au traitement d'images
Introduction au traitement d'imagesAbdelouahed Abdou
 
Module 6 développement d'applications de bases de données avec asp.net
Module 6   développement d'applications de bases de données avec asp.netModule 6   développement d'applications de bases de données avec asp.net
Module 6 développement d'applications de bases de données avec asp.netMohammed Amine Mostefai
 
Module 7 intégration d'ajax et les services web dans les applications asp.net
Module 7   intégration d'ajax et les services web dans les applications asp.netModule 7   intégration d'ajax et les services web dans les applications asp.net
Module 7 intégration d'ajax et les services web dans les applications asp.netMohammed Amine Mostefai
 
Traitement d'image
Traitement d'imageTraitement d'image
Traitement d'imageAnissa Teyeb
 

En vedette (20)

Oficina business model canvas por Daniel Wildt
Oficina business model canvas por Daniel WildtOficina business model canvas por Daniel Wildt
Oficina business model canvas por Daniel Wildt
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
Visual Thinking em reuniões - parte 1 - Propósito
Visual Thinking em reuniões - parte 1 - PropósitoVisual Thinking em reuniões - parte 1 - Propósito
Visual Thinking em reuniões - parte 1 - Propósito
 
Les nouveautés de asp.net mvc 3
Les nouveautés de asp.net mvc 3Les nouveautés de asp.net mvc 3
Les nouveautés de asp.net mvc 3
 
Passive reporting 2
Passive reporting 2Passive reporting 2
Passive reporting 2
 
Les collections en JAVA
Les collections en JAVALes collections en JAVA
Les collections en JAVA
 
Curso Quer Que Desenhe - Visual Thinking - maio/14
Curso Quer Que Desenhe - Visual Thinking - maio/14Curso Quer Que Desenhe - Visual Thinking - maio/14
Curso Quer Que Desenhe - Visual Thinking - maio/14
 
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"
 
Veille et information partagée
Veille et information partagéeVeille et information partagée
Veille et information partagée
 
Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5Quoi de neuf dans ASP.NET 4.5
Quoi de neuf dans ASP.NET 4.5
 
Practice lesson 2
Practice lesson 2Practice lesson 2
Practice lesson 2
 
Debutermatlab
DebutermatlabDebutermatlab
Debutermatlab
 
Le Réseau et Java
Le Réseau et JavaLe Réseau et Java
Le Réseau et Java
 
Grammar rules
Grammar rulesGrammar rules
Grammar rules
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
Introduction au traitement d'images
Introduction au traitement d'imagesIntroduction au traitement d'images
Introduction au traitement d'images
 
Module 6 développement d'applications de bases de données avec asp.net
Module 6   développement d'applications de bases de données avec asp.netModule 6   développement d'applications de bases de données avec asp.net
Module 6 développement d'applications de bases de données avec asp.net
 
Module 7 intégration d'ajax et les services web dans les applications asp.net
Module 7   intégration d'ajax et les services web dans les applications asp.netModule 7   intégration d'ajax et les services web dans les applications asp.net
Module 7 intégration d'ajax et les services web dans les applications asp.net
 
Traitement d'image
Traitement d'imageTraitement d'image
Traitement d'image
 

Similaire à ASP.NET from Zero to Hero

Web dev open door
Web dev   open doorWeb dev   open door
Web dev open doorLeTesteur
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
Client riche et nouvelles technologies
Client riche et nouvelles technologiesClient riche et nouvelles technologies
Client riche et nouvelles technologiesSébastien Letélié
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Cédric Leblond
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615JUG Toulouse
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)Rui Carvalho
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
Adoef formation-ado-net-entity-framework
Adoef formation-ado-net-entity-frameworkAdoef formation-ado-net-entity-framework
Adoef formation-ado-net-entity-frameworkCERTyou Formation
 
M20480 formation-programmer-en-html5-avec-javascript-et-css3
M20480 formation-programmer-en-html5-avec-javascript-et-css3M20480 formation-programmer-en-html5-avec-javascript-et-css3
M20480 formation-programmer-en-html5-avec-javascript-et-css3CERTyou Formation
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 
#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
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 telosys
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Laurent Guérin
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
 

Similaire à ASP.NET from Zero to Hero (20)

Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
Client riche et nouvelles technologies
Client riche et nouvelles technologiesClient riche et nouvelles technologies
Client riche et nouvelles technologies
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
Adoef formation-ado-net-entity-framework
Adoef formation-ado-net-entity-frameworkAdoef formation-ado-net-entity-framework
Adoef formation-ado-net-entity-framework
 
M20480 formation-programmer-en-html5-avec-javascript-et-css3
M20480 formation-programmer-en-html5-avec-javascript-et-css3M20480 formation-programmer-en-html5-avec-javascript-et-css3
M20480 formation-programmer-en-html5-avec-javascript-et-css3
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 
#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
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
Mpdf 9
Mpdf 9Mpdf 9
Mpdf 9
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 

Plus de Cellenza

Global AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interfaceGlobal AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interfaceCellenza
 
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3Cellenza
 
Soirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & XamarinSoirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & XamarinCellenza
 
Soirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live ShareSoirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live ShareCellenza
 
Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19Cellenza
 
Soirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - IntroductionSoirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - IntroductionCellenza
 
Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ? Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ? Cellenza
 
Gouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de GouvernanceGouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de GouvernanceCellenza
 
Gouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture AzureGouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture AzureCellenza
 
Gouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommageGouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommageCellenza
 
Continuous monitoring : Dev to Ops
Continuous monitoring : Dev to OpsContinuous monitoring : Dev to Ops
Continuous monitoring : Dev to OpsCellenza
 
MobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 CrossplateformMobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 CrossplateformCellenza
 
MobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon MicrosoftMobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon MicrosoftCellenza
 
MobileDay - Parcours 1 Hybride (Cordova)
MobileDay - Parcours 1 Hybride  (Cordova)MobileDay - Parcours 1 Hybride  (Cordova)
MobileDay - Parcours 1 Hybride (Cordova)Cellenza
 
MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)Cellenza
 
MobileDay - Session 2 REX IDEX
MobileDay - Session 2 REX IDEXMobileDay - Session 2 REX IDEX
MobileDay - Session 2 REX IDEXCellenza
 
Biztalk summit - IOT
Biztalk summit - IOTBiztalk summit - IOT
Biztalk summit - IOTCellenza
 
DevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryDevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryCellenza
 
DevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A CodeDevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A CodeCellenza
 
Mutualisation des développements avec VS2012
Mutualisation des développements avec VS2012Mutualisation des développements avec VS2012
Mutualisation des développements avec VS2012Cellenza
 

Plus de Cellenza (20)

Global AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interfaceGlobal AI Night - Azure ML visual interface
Global AI Night - Azure ML visual interface
 
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
Soirée de lancement Visual Studio - .Net Core 3 et ASP.Net Core 3
 
Soirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & XamarinSoirée de lancement Visual Studio - VS for Mac & Xamarin
Soirée de lancement Visual Studio - VS for Mac & Xamarin
 
Soirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live ShareSoirée de lancement Visual Studio - Live Share
Soirée de lancement Visual Studio - Live Share
 
Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19Soirée de lancement Visual Studio - Le développement sous VS19
Soirée de lancement Visual Studio - Le développement sous VS19
 
Soirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - IntroductionSoirée de lancement Visual Studio - Introduction
Soirée de lancement Visual Studio - Introduction
 
Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ? Qu'est ce qu'une api en 2019 ?
Qu'est ce qu'une api en 2019 ?
 
Gouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de GouvernanceGouvernance Azure - Mettre en place sa politique de Gouvernance
Gouvernance Azure - Mettre en place sa politique de Gouvernance
 
Gouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture AzureGouvernance Azure - Comprendre la facture Azure
Gouvernance Azure - Comprendre la facture Azure
 
Gouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommageGouvernance Azure - La charte de nommage
Gouvernance Azure - La charte de nommage
 
Continuous monitoring : Dev to Ops
Continuous monitoring : Dev to OpsContinuous monitoring : Dev to Ops
Continuous monitoring : Dev to Ops
 
MobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 CrossplateformMobileDay - Parcours 2 Crossplateform
MobileDay - Parcours 2 Crossplateform
 
MobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon MicrosoftMobileDay - Session 3 La Mobilité selon Microsoft
MobileDay - Session 3 La Mobilité selon Microsoft
 
MobileDay - Parcours 1 Hybride (Cordova)
MobileDay - Parcours 1 Hybride  (Cordova)MobileDay - Parcours 1 Hybride  (Cordova)
MobileDay - Parcours 1 Hybride (Cordova)
 
MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)MobileDay - Parcours 3 : Natif (Universal Apps)
MobileDay - Parcours 3 : Natif (Universal Apps)
 
MobileDay - Session 2 REX IDEX
MobileDay - Session 2 REX IDEXMobileDay - Session 2 REX IDEX
MobileDay - Session 2 REX IDEX
 
Biztalk summit - IOT
Biztalk summit - IOTBiztalk summit - IOT
Biztalk summit - IOT
 
DevOps Day - Continuous Delivery
DevOps Day - Continuous DeliveryDevOps Day - Continuous Delivery
DevOps Day - Continuous Delivery
 
DevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A CodeDevOps Day - Infrastructure As A Code
DevOps Day - Infrastructure As A Code
 
Mutualisation des développements avec VS2012
Mutualisation des développements avec VS2012Mutualisation des développements avec VS2012
Mutualisation des développements avec VS2012
 

ASP.NET from Zero to Hero

  • 1. A S P . N E T M V C From zero to hero Software Development Done Right 1
  • 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é. 2
  • 3. Qui sommes nous ? Georges Damien Consultant .NET Architecte logiciel Spécialisation : web 3 Nicholas Suter Spécialisation : homme à tout faire
  • 4. ASP.NET MVC : from zero to hero Historique de MVC chez Microsoft Comment ça marche ? REST et http Le routage Razor Pourquoi on y passe tous ? 4
  • 5. Historique de MVC chez Microsoft 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 MVC 2010 : ASP.NET MVC 2 Client-side validation, Data Annotations 2011 : ASP.NET MVC 3 Razor 2012 : ASP.NET MVC 4 Web API 2013 : ASP.NET MVC 5 Unification ASP.NET, Identity et Web API 2 5
  • 6. Comment ça marche ? Modèle La logique métier et la persistance des données C# + SQL Server http request Navigateur web Contrôleur http response La gare de triage : interroge le modèle, choisit et peuple la vue C# 6 Ce avec quoi intéragit l’utilisateur Vue HTML + Razor + Javascript
  • 7. REST et http Architecture RESTfull : qui respecte le protocole http… et donc ses verbes Verbe http Equivalent CRUD Description Supporté par Supporté par ASP.NET ASP.NET MVC Web API GET Select Sert à requêter le modèle Oui Oui POST Insert Créé un ou Oui des nouveaux éléments Oui PUT Update Modifie un ou des éléments Oui DELETE Delete Supprime un élément Oui 7
  • 8. Le routage La configuration du routage se fait dans App_Start/RouteConfig.cs : 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 } ); } 8
  • 9. Le routage {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 applications Pour les applications plus conséquentes, on utilisera les zones (Area). 9
  • 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 10
  • 11. Les zones A utiliser quand le nombre de vues et de contrôleurs deviennent trop élevés Peuvent avoir un système de routage propre à chaque zone public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin"; } } 11 public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default", "Admin/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional } ); } }
  • 12. Razor 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 verbeux Plus testable Supporte l’Intellisense Les principes Des helpers HTML Des boucles, des conditionnelles, des switch… L’accès au Framework 12
  • 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> } 13
  • 14. Razor ActionLink Un lien vers une méthode d'action. BeginForm Déclaration d'un formulaire et lien vers la méthode d'action qui restitue le formulaire. CheckBox DropDownList Une liste déroulante. Hidden Informations du formulaire invisibles pour l’utilisateur. ListBox Une zone de liste. Password Une champ texte pour mot de passe. RadioButton Un bouton radio. TextArea Une zone de texte (ou champ texte multiligne). TextBox 14 Une case à cocher. Un champ texte.
  • 15. Pourquoi on y passe tous ? 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 web La séparation claire des responsabilités entre les intégrateurs et les développeurs Les 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) 15
  • 16. Allez plus loin Allez plus loin : http://blog.cellenza.com http://www.asp.net/mvc Formations intra (sur mesure) et extra entreprise : http://training.cellenza.com/ formation@cellenza.com Nous contacter : info@cellenza.com Nous rejoindre : recrutement@cellenza.com 16