Vous êtes sur la page 1sur 27

Naoufel KHAYATI Cours « Développement d’Applications

d’Entreprises » (ASP.NET MVC 5)

41

CHAPITRE 2
Introduction à

Naoufel KHAYATI
naoufel.khayati@eniso.u-sousse.tn

AU. 2019 - 2020

41

PLAN
42

 Patron MVC : Généralités


 Architecture
 MVC vs. 3 tiers

 Routage ASP.NET MVC

 Structure d’une solution ASP .NET MVC

42

ENISo – IA2 – 2019 / 2020 1


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

43

Généralités

43

Architecture MVC
44

 Un patron de conception (Design Pattern) architectural.

 Offre un cadre normalisé pour structurer une application.

 Bien séparer les données, la présentation et les traitements.


 Architecture claire.
 Maintenance simplifiée
 La modification des traitements ne change en rien la présentation.

 Il en résulte trois parties :


 Modèle
 Vue
 Contrôleur

44

ENISo – IA2 – 2019 / 2020 2


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Architecture MVC – Modèle


45

 Représente l’axe de l'application : traitements des données,


interactions avec la base de données, etc.

 Il décrit les données manipulées par l'application et est responsable


de leur gestion.
 La base de données est l'un de ses composants.

 Il comporte des méthodes standards pour récupérer des données et


les mettre à jour (insertion, suppression, modification).

 Les résultats renvoyés par le modèle ne s'occupent pas de


présentation.

45

Architecture MVC – Vue


46

 N'effectue pas de traitement, elle se contente :

 d'afficher les résultats des traitements effectués par le


modèle

 d'interagir avec l'utilisateur en recevant toute action de


sa part (clic de souris, sélection d'un bouton radio, entrée
de texte, etc.).

 Ces différents événements sont envoyés au contrôleur.

46

ENISo – IA2 – 2019 / 2020 3


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Architecture MVC – Contrôleur


47

 Un ensemble d’actions, n'effectue aucun traitement,


ne modifie aucune donnée.

 Analyse la requête du client et se contente


d'appeler le modèle adéquat et de renvoyer la vue
correspondante à la demande.

 Prend en charge la gestion des événements pour


mettre à jour la vue ou le modèle et les
synchroniser.

47

Architecture MVC – Contrôleur


48

 Si une action nécessite un changement des données, le contrôleur

 demande la modification des données au modèle,

 notifie la vue que les données sont changées pour qu'elle se mette à
jour.
 Par exemple, l'entrée d'une nouvelle donnée : Le contrôleur demande au
modèle de faire l’ajout puis demande sa prise en compte par la vue.

 Certains événements de l'utilisateur ne concernent pas les données


mais la vue. Dans ce cas, le contrôleur demande à la vue de se
modifier.

 Sélectionner un étudiant pour visualiser ses informations : Ne modifie pas


la base mais nécessite simplement que la vue s'adapte.

48

ENISo – IA2 – 2019 / 2020 4


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Architecture MVC
49

49

MVC vs. 3 tiers


50

 L'architecture trois tiers est un modèle en couches

 Chaque couche communique seulement avec ses couches adjacentes


(supérieures et inférieures)
 Le flux de contrôle traverse le système de haut en bas (P / M / AD)
 Les couches supérieures sont toujours sources d'interaction (clients) alors que
les couches inférieures ne font que répondre à des requêtes (serveurs).

 Dans le modèle MVC :

 La vue peut consulter directement (en lecture) le modèle sans passer par
le contrôleur.
 La vue doit nécessairement passer par le contrôleur pour effectuer une
modification (écriture).
 Le flux de contrôle est inversé par rapport au modèle en couches.

50

ENISo – IA2 – 2019 / 2020 5


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

51

Routage
ASP.NET MVC

51

Routage
52

 Dans une application ASP.Net Web Forms, les requêtes


du navigateur sont mappées vers des pages.

 Application "centrée sur le contenu" (content-centric)

 Il y a donc une correspondance entre une URL et une page.

 Si on demande la page UnePage.aspx au serveur, alors il doit


forcément exister une page sur le disque qui soit nommée
UnePage.aspx.

 Si la page n'existe pas alors on obtient l’erreur 404 – Page Not


Found !

52

ENISo – IA2 – 2019 / 2020 6


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage
53

 Au contraire, dans une application MVC, les requêtes


sont mappées à des actions de contrôleur.
 Application "centrée sur la logique" (logic centric).

 Une URL
 N'est pas égale à une Page
 Correspond à une action du contrôleur
 Il n'y a donc aucune correspondance entre l'URL et les fichiers de
l’application.

 Ceci est possible grâce aux routes


 Une route permet de transformer une URL en une action d’un
contrôleur.

53

Routage
54

 La fonctionnalité du Framework ASP.NET responsable


s’appelle le routage.

 Le routage est utilisé pour router les requêtes vers les actions des
contrôleurs.

 Utilise une table de routage pour gérer les requêtes entrantes.

 La table de routes est créée lorsque l’application démarre pour


la première fois.

 Pour ASP.NET MVC 5, cette table est configurée à partir du fichier


Global.asax et plus précisément dans la méthode RegisterRoutes()
de la classe RouteConfig.

54

ENISo – IA2 – 2019 / 2020 7


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage
55

 Global.asax.cs (ASP.NET MVC 5)

55

Routage
56

 Lorsqu'une application MVC démarre pour la


première fois, la méthode Application_Start()
est appelée.

 Cette méthode appelle alors la méthode


RegisterRoutes() qui crée la table de routage.

 La table de routage par défaut consiste en une


seule et unique route.

56

ENISo – IA2 – 2019 / 2020 8


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage
57

 RegisterRoutes() fait appel à la méthode IgnoreRoute(),


qui permet d’ignorer les requêtes qui ont la forme précisée.

 Le routage ignore les appels aux ressources (Web et Scripts


« HTTP Handlers » ) dont l’extension est .axd, et peu
importe s'il y a quelque chose à la suite, afin qu’elles ne
soient pas traitées par les contrôleurs.

 Un HTTP Handler est une classe qui est exécutée en amont de tout
traitement par le site web, avant d’afficher une page.

 Un HTTP Handler peut servir à obtenir des ressources


particulières, comme des fichiers CSS ou JavaScript, etc.

57

Routage
58

 RegisterRoutes() fait appel par la suite, à la


méthode MapRoute() qui permet de

 mapper l'itinéraire d'URL spécifié,

 définir des valeurs d'itinéraire par défaut,

 définir éventuellement des contraintes.

58

ENISo – IA2 – 2019 / 2020 9


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage
59

 La route par défaut découpe toutes les requêtes


entrantes en trois segments (un segment est séparé
d’un autre par un slash).

 Le premier segment est mappé sur le nom du contrôleur,


 le second sur le nom de l'action
 et le 3ème est mappé sur un paramètre passé à l'action et
nommé id.

 Par exemple, l'URL : /Eniso/Filiere/3 est parsée en


trois paramètres comme ceci :

 controller = Eniso, action = Filiere, id = 3

59

Routage
60

 La route définie par défaut inclut des valeurs par défaut pour les
trois paramètres.
 Le contrôleur par défaut est Home,
 l'action par défaut est Index
 et la valeur par défaut pour id est une chaine vide.

 Dès qu’on lance l’exécution de l’application MVC, l'URL est parsée


comme ceci :
 Controller = Home, Action = Index, Id = « »
 La requête est routée vers l'action Index() de la classe HomeController.

 http://localhost:21278
 http://localhost:21278/Home 3 URL identiques
 http://localhost:21278/Home/Index

60

ENISo – IA2 – 2019 / 2020 10


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage – Routes personnalisées


61

61

Routage – Routes personnalisées


62

 Cas de plusieurs routes

 Au lancement, le navigateur charge l’URL de la route 2.


 http://localhost:2964 ou http://localhost:2964/Home ou
http://localhost:2964/Home/Index

 L’URL http://localhost:2964/Add/ donnera 0


 L’URL http://localhost:2964/Add/8 donnera 8
 L’URL http://localhost:2964/Add/8/11 donnera 19

62

ENISo – IA2 – 2019 / 2020 11


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage – Routes personnalisées


63

 Cas de plusieurs routes

 Si on inverse l’ordre des deux routes, sur la requête


/Add/8/11, ASP.NET MVC va tenter, selon la route 1,
d’instancier le contrôleur Add qui n’existe pas.
 Ceci provoque une erreur qui empêche la route suivante d’être
analysée.

 L'ordre des routes est important.


 D’une manière générale, il faut toujours commencer par la route la
plus spécifique pour finir par la route la plus générale.

63

Routage – Contraintes de routes


64

 ASP.NET MVC permet de définir des contraintes sur des


éléments de route.

 La route d’une action « Somme » qui n’accepte que des


entiers, par exemple.

 Expressions Régulières (ER).

 Méthodes HTTP.

 Les contraintes sont définies grâce à la propriété


« constraints » et le type anonyme qui y est défini.

64

ENISo – IA2 – 2019 / 2020 12


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage – Contraintes de routes (ER)


65

65

Routage – Contraintes de routes (ER)


66

 Les ER en .NET

66

ENISo – IA2 – 2019 / 2020 13


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage – Contraintes de routes (ER)


67

 Les ER en .NET
 L’écriture avec les méta-caractères précédents est une tâche fastidieuse
qui peut donner des ER de taille très importante, donc illisibles.
 Des alias pour simplifier cette tâche :

67

Routage – Contraintes de routes (HTTP)


68

 On peut aussi imposer l’utilisation d’une méthode Http pour une route
donnée.
 On définit une instance de HttpMethodConstraint sur le type anonyme qui
définit la contrainte.

 Ne permettre l'accès aux URLs de Route1qu'à travers les requêtes GET


(ou POST).

68

ENISo – IA2 – 2019 / 2020 14


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Routage – Contraintes personnalisées


69

 D'une manière générale, si on souhaite appliquer une


contrainte personnalisée, il faut créer une classe qui :
 implémente l'interface IRouteConstraint
 Et, qui redéfinit sa méthode Match().

 Tout appel à l'action


RemoveAllUsers() à partir
d'un serveur distant sera refusé.

69

70

Structure d’une solution


ASP.NET MVC

70

ENISo – IA2 – 2019 / 2020 15


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

ASP .NET MVC


71

 Constitue une alternative pour la conception et le


développement de pages Web avec la technologie
ASP .NET.

 Ses applications sont structurées différemment par


rapport à une application ASP.NET classique.

 Son modèle de développement présente des


différences par rapport à celui des Web Forms
classiques.

71

ASP .NET MVC


72

 Il implémente un modèle nommé Front Controller qui


fournit un point d’entrée centralisé pour le traitement
des requêtes

 Contrôleurs et Routage.

 Offre un meilleur support pour le développement dirigé


par les tests (Test Driven Development).

 Lors de la création d’un projet de type ASP .NET MVC,


Microsoft propose de créer un projet de test (tests unitaires),
qui permettra de tester au fur et à mesure du
développement l’application ASP .NET MVC.

72

ENISo – IA2 – 2019 / 2020 16


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


73 Solution = {Projets}

 2 modes possibles pour une solution


Visual Studio : Debug et Release.
 Génération d’une version Debug pour le
débogage.
 Génération d’une version Release pour
la distribution finale de la solution.

73

Structure d’une Solution


74

 Tout projet Visual Studio comporte une configuration distincte pour


chaque version.

 Visual Studio crée automatiquement ces configurations et définit les


options et les paramètres par défaut appropriés.

 Par défaut, La configuration Debug

 Est compilée avec des informations de débogage


symboliques et sans aucune optimisation.

 L'optimisation complique le débogage, étant donné que la relation


entre le code source et les instructions générées est plus complexe.

74

ENISo – IA2 – 2019 / 2020 17


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


75

 Tout projet Visual Studio comporte une configuration distincte pour


chaque version.

 Visual Studio crée automatiquement ces configurations et définit les


options et les paramètres par défaut appropriés.

 Par défaut, La configuration Release


 Ne contient pas d'informations de débogage relatives aux symboles
et est entièrement optimisée.
 Les informations de débogage peuvent être générées dans des
fichiers PDB (Program Debug DataBase)

 Une propriété de Microsoft et seul l'éditeur de liens de Microsoft est apte


à créer ce type de fichier.
 Utiles, si on souhaite déboguer ultérieurement la version Release.
 Contenant des informations de débogage pour les modules exécutables
(.exe ou .dll).

75

Structure d’une Solution


76

Débogueur
 Un programme qui aide un développeur à analyser
et réparer les bugs d'un programme en lui
permettant de :

 Exécuter le programme pas-à-pas,


 Afficher la valeur des variables à tout moment,
 Mettre en place des points d'arrêt sur des conditions ou
sur des lignes du programme,
 Etc.

76

ENISo – IA2 – 2019 / 2020 18


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


77

Versions

77

Structure d’une Solution


78

Debug vs. Release

 Mode Debug : Le programme ne peut pas être


transporté de machine en machine. Il ne fonctionnera
que sur celle sur laquelle il a été créé.

 Mode Release : La version Release est optimisée et


est prête à l'emploi.

78

ENISo – IA2 – 2019 / 2020 19


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


79

Debug vs. Release


 La version Release peut boguer alors que la version Debug est
bonne.  variables non initialisées, défaillances mémoire, etc.

 La version Debug ajoute des octets autour des variables instanciées. Ceci
masque en général des problèmes de défaillances mémoire.

 La version Release optimise les traitements et les allocations : elle peut


changer l'ordre de certains traitements ou transformer plusieurs variables
en une seule, ou toute autre optimisation utile.

 la différence, c'est l'allocation mémoire qui est plus souple en debug mais ça
fait des programmes plus volumineux et qui tournent plus lentement.

79

Structure d’une Solution Projet


80

80

ENISo – IA2 – 2019 / 2020 20


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution Propriétés


81

 Un fichier automatiquement créé pour tout projet.


 Enumère les principales caractéristiques de l’assemblage.

81

Structure d’une Solution Références


82

 La liste des DLL utilisées par le


projet web.

 Ces DLL sont des bibliothèques


de classes prédéfinies.

 la liste des DLL par défaut dans


les références du projet.

82

ENISo – IA2 – 2019 / 2020 21


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution Web.config


83

 Le fichier de configuration du projet ASP.NET MVC.

83

Structure d’une Solution


84

 Web.config du mode Debug

84

ENISo – IA2 – 2019 / 2020 22


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


85

 Web.config du mode Release

85

Structure d’une Solution


86

 App_Data
 Dossier représentant le dépôt physique
des données (BD ou autres).

 Content
 Dossier recommandé pour les thèmes
(fichiers CSS, images, etc).

 Scripts
 Dossier recommandé pour les scripts (JS)
utilisés par l’application.
 Par défaut, il contient la bibliothèque
jQuery.

86

ENISo – IA2 – 2019 / 2020 23


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


87

 Global.asax

 Configuré pour rejeter automatiquement


toute demande directe par l’URL.

 Peut Contenir plusieurs méthodes de


gestion d’évènements (Application_Start,
Application_End, Application_Error,
Session_Start, Session_End, etc.)

 Exécuté au lancement de l’application


pour configurer la table de routage.

87

Structure d’une Solution


88

 Global.asax

88

ENISo – IA2 – 2019 / 2020 24


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


89

 Le répertoire App_Start contient la logique de


configuration.
 La classe RouteConfig.cs
 Configure la table de routage

89

Structure d’une Solution


90

 Le répertoire App_Start contient la logique de


configuration.
 La classe BundleConfig.cs
 Configureles bundles (paquets) qui regroupent
un ensemble de JS.

90

ENISo – IA2 – 2019 / 2020 25


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Structure d’une Solution


91

 Le répertoire Controllers contient les contrôleurs qui


servent à gérer les actions.

 Le répertoire Models contient les classes qui


présentent toutes les logiques : applicative, métier,
d’accès au données, etc.

91

Structure d’une Solution


92

 Le répertoire Views contient toutes


les vues de l’application, qui
permettront le rendu des pages à
base de HTML et de CSS.

 Contient un sous-répertoire par


contrôleur (ici Home).

 Chaque sous-dossier contient une vue par


action.
 Le dossier Shared contient des éléments
communs à tous les contrôleurs (Page
maître, page d’erreurs, etc.)

92

ENISo – IA2 – 2019 / 2020 26


Naoufel KHAYATI Cours « Développement d’Applications
d’Entreprises » (ASP.NET MVC 5)

Pour Finir…
93

 ASP.NET MVC offre une organisation bien structurée


et facilement compréhensible de ses solutions.

 ASP.NET MVC se base sur un mécanisme de routage


pour acheminer les requêtes vers les actions des
contrôleurs.
 Les routes peuvent avoir plusieurs attributs (name, url,
defaults et constraints).
 Les contraintes peuvent être personnalisées.

93

94

A SUIVRE…

TO BE CONTINUED…

94

ENISo – IA2 – 2019 / 2020 27

Vous aimerez peut-être aussi