Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Développement Asp.Net et Asp.Net MVC Pierre Couzy
• ASP.Net a grossi • Depuis ASP.Net 2 (qui est encore la version sous-
jacente du framework), on a vu • RIA Services • Ajax (Client, Serveur, Toolkit, Web services, ..) • Ado.Net Data Services • MVC • Dynamic Data • Silverlight • jQuery
• .. et j’en passe.
Agenda
• Remettre un peu d’ordre • Aligner nos frameworks de développement web sur une
version majeure de .Net • Fournir dans un seul outil les add-ons divers qui existent
aujourd'hui. • Rassurer sur l’avenir de WebForms • Structurer les offres ASP.Net de façon cohérente
• Prendre en compte 4 ans de feedback • Améliorations de l’existant • Support de nouvelles techniques de développement
• Ajax, MVC, RIA, RAD • Petits et gros gains de productivité
• Intellisense, déploiement, monitoring, contrôles, ..
Que cherche à faire ASP.Net 4 ?
ASP.Net « Core »
Web Forms Ajax MVC Dynamic
Data
Vos applis
Structure d’ASP.Net
• Nouveautés Web.Config
• Plus petit, plus configurable
• Gestion du cache
• Extensible, réutilisable
• Compression des sessions
• Auto-démarrage des applis Web
• Multi-targeting
Améliorations du cœur d’ASP.Net
• Aujourd’hui :
Demain :
Web.Config
• Gestion des configurations :
• Web.Config demeure inchangé,
• Des extensions permettent de spécifier des transformations appliquées au déploiement
• Web.Debug.config, Web.Release.config, …
• Transformations disponibles
• Delete,
• Replace,
• Insert,
• etc.
Web.Config
• Vu le nombre d’applications non web qui utilisent le cache d’Asp.net, nous avons décidé de le découpler d’Asp.Net.
• Nouvelles classes utilisables dès la V4, dans
System.Runtime.Caching.dll
• Le fonctionnement est très proche de celui du cache d’Asp.Net mais des points d’extensibilité ont été introduits
• Vous pouvez bien sûr continuer de travailler avec le cache standard d’Asp.Net
Réécriture du cache ASP.Net
• ASP.Net 2 a brièvement eu (en beta) un cache sur disque. Il est de retour, avec des amis
Gestion du cache : les fournisseurs
Cache
CacheProvider
Disque
Windows Azure
Cache réparti
(Velocity)
Mémoire
• Déclarés dans le web.config
• Utilisables dans les pages et contrôles
• Ou dans Global.asax
Fournisseurs de cache
DiskCacheProvider System.Web.Caching.OutputCacheProvider
Méthodes Add / Get / Set / Contains / Remove..
• Optimisation pour les sessions déportées
• Serveur de sessions
• Sessions en base de données
• Rappel : ASP.Net permet d’ écrire ses propres fournisseurs de stockage de session, l’équipe Velocity en fournit d’ailleurs un.
Compression des sessions
• A partir d’IIS 7.5
• Le site se lance en deux phases :
• Démarrage du site mais sans ouvrir de listener http
• Exécution du code d’initialisation (chargement des caches, etc)
• Démarrage des listeners Http
Auto-démarrage des applis Web
• RedirectPermanent
• <%: expression%> qui fait un HtmlEncode
• Améliorations de sécurité & robustesse
• Encodage personnalisable des flux sortants
• Validation des requêtes entrantes
• Contrôle sur la longueur max des URLs
• URL et Querystring
• Monitoring des performances d’une appli spécifique dans un AppPool
• Multi-targeting
Et aussi …
• Utilisation du nouveau moteur de routage
• Retouches sur le ViewState
• Conventions de nommage pour ClientId
• Simplification et améliorations des contrôles
• Des logos en flamme
• QueryExtender : ajout de filtres
Quoi de neuf dans WebForms ?
• Que préférez-vous :
• http://www.bla.com/produits.aspx?categoryid=12
• http://www.bla.com/produits/bicyclettes
• Exploiter les paramètres par code
Le moteur de routage
• Utilisation déclarative des routes
• Pour générer les URLs
• Pour exploiter les paramètres
Le moteur de routage
• Le ViewState a beaucoup maigri depuis Asp.Net 1
• Meilleure sérialisation, utilisation de ControlState, etc.
• Il reste une limitation : si votre conteneur vous interdit d’utiliser le ViewState, vous n’y avez pas droit.
• Désactiver le ViewState de façon sélective peut vite devenir un cauchemar
• ASP.Net 4 introduit l’attribut ViewStateMode
Retouches sur le ViewState
• Valeurs possibles de ViewStateMode
• Enabled : ce contrôle a un ViewState
• Disabled : ce contrôle n’a pas de ViewState
• Inherit (défaut): ce contrôle reprend le comportement de son conteneur
• Préséance entre les attributs EnableViewState et ViewStateMode :
• ViewStateMode n’est pas pris en considération si EnableViewState vaut False, pour le contrôle ou un de ses conteneurs
ViewStateMode
• Les contrôles ASP.Net ont un nom côté serveur, et un autre côté client.
• La propriété ClientIDMode permet de spécifier la convention de nommage du contrôle côté client
• AutoID : comme par le passé
• Static : identique au nom serveur
• Predictable : contient la clé de votre datasource (précisée par l’attribut ClientIDRowSuffix)
• Inherit
ClientId
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <asp:Label ID="lblTest" ClientIDMode="Static" runat="server“ Text="Test"> </asp:Label> </asp:Content>
<span id="lblTest">Test</span>
• Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net 4 change le rendu de bon nombre de contrôles • Disparition de l’attribut enabled sauf pour les contrôles
de saisie, remplacé par un attribut de classe • Suppression des DIV autour des champs cachés • Suppression du Border=0 pour certains tableaux et
images • etc.
• Ce comportement peut modifier l’aspect de vos pages, il est donc désactivable
Changements dans le rendu
• ListView : plus besoin de déclarer un LayoutTemplate
• CheckBoxList, RadioButtonList
• Rendu possible en Listes HTML pour habillage par CSS (RepeatLayout=OrderedList)
• Le contrôle Menu
• Rendu par <ul><li> au lieu de tableaux
• Navigation au clavier
Nouveautés dans les contrôles
• 35 styles de graphiques
• Support 2D/3D
• Utilise le Data Binding
Contrôle de graphe
• Le contrôle QueryExtender fonctionne sur des sources LINQ (LinqToSql, Entity Framework, LinqToObjects).
• Il étend la requête avant son exécution pour prendre en compte des critères supplémentaires
QueryExtender
• Extensions possibles :
• SearchExpression
• RangeExpression
• PropertyExpression
• OrderByExpression (et ThenByExpression)
• CustomExpression
• ControlFilterExpression, DynamicFilterExpression
• Pour Dynamic Data
QueryExtender
• Ajax Control Toolkit : nouveaux contrôles
• Templates côté client
• jQuery
• Microsoft Ajax CDN
• …
Nouveautés Ajax
• Projet CodePlex comportant des contrôles et des extendeurs Ajax.
• Utilisables dans VS 2008 et VS 2010
• Nouveautés : SeaDragon AsyncFileUpload
Ajax Control Toolkit
• Un moteur de rendu client
• Basé sur des templates pour une plus grande souplesse
• Garde un markup très lisible dans la page
• Utilisation de Javascript par le développeur possible, mais pas obligatoire
• Bonne intégration avec les autres composants Javascript/Ajax
Templates client
• Récupérer une version client des données d’un Web Service (wcf/adods/asmx/rest)
• du rendu par templates : class="sys-template"
• Binding simple : {{ expression }}
• Binding bi-directionnel : {binding champ }
• Du suivi de modifications
• DataContext client
• De la propagation serveur des modifications
• De la manipulation Ado.Net Data Services
• AdoNetDataContext
Que peut faire ce moteur de rendu ?
• Librairie open source (MIT) intégrée telle quelle à VS2010 et supportée par Microsoft
• Sélecteur très puissant : • $(':text') => toutes les textbox • $('#GridView1 tr:first') => Première ligne de la
GridView1
• Chaînage : • $(':text').val().focus(function() {$(this).css('color',
'red');});
• jQuery.each() : • Base du traitement par lots
jQuery
• Vous pouvez les combiner
jQuery ou MS Ajax ?
ASP.NET AJAX
AJAX Requests
Composants et Contrôles
Client Templates
AJAX Control Toolkit
jQuery
Sélecteurs
Animations
Plugins
Asp.Net MVC
ASP.NET Dynamic Data
ASP.NET WebForms
ASP.NET MVC
Présentation
Runtime ASP.NET
Core
Master Page
Control
Control
Pour mieux définir les responsabilités
Html Couche de présentation Logique métier Accès données
Structurer une appli WebForms demande de la discipline
Control
Control Page
Control
Control
Control
Control
Peu d’influence sur le rendu
.. Encore une fois, cette situation n’est pas systématique en WebForms.
Logic UI
Code difficile à tester
MVC = Modèle-Vue-Contrôleur
Contrôleur (Point d’entrée)
Modèle (Métier)
Vue (Présentation)
Fonctionnement
Requête
Vue
Contrôleur
Réponse
Contrôleur Gère les entrées (requêtes HTTP)
Vue Représentation IHM du modèle
• Faciliter la conception de sites testables
• Donner le contrôle complet du rendu
• Travailler sur une sémantique REST
• Forcer la structuration des applications
• Proposer une bonne extensibilité
Buts de conception de MVC
• Chaque brique peut être remplacée par votre propre implémentation
Extensibilité
Controller Builder
Controller Factory
Controller
View Engine
View
Controller
Action Invoker
Action Result
Action Filters
Model Binders
• Un autre modèle de développement Web • Ne remplace pas WebForms • Intéressant si vous voulez
• Imposer une bonne structure à vos applis • Avoir des sites adaptés aux tests unitaires • Contrôler avec précision le rendu HTML de vos
pages
• Asp.Net MVC est à Asp.Net ce qu’ATL est à MFC : • Plus petit • Plus élégant • Moins orienté RAD
Asp.Net MVC
• 7 ateliers pour tout découvrir de MVC
• En ligne sur le site MSDN
• http://msdn.microsoft.com/fr-fr/ASP.net
• Dans les coach Asp.Net
• Fait par David Rousset
Asp.Net MVC en français