développement asp.net et asp.net mvcdownload.microsoft.com/documents/france/msdays/2009/...•pour...

47
Développement Asp.Net et Asp.Net MVC Pierre Couzy

Upload: others

Post on 18-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

Développement Asp.Net et Asp.Net MVC Pierre Couzy

Page 2: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 3: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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 ?

Page 4: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

ASP.Net « Core »

Web Forms Ajax MVC Dynamic

Data

Vos applis

Structure d’ASP.Net

Page 5: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), 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

Page 6: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• Aujourd’hui :

Demain :

Web.Config

Page 7: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 8: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 9: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), 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

Page 10: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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..

Page 11: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 12: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 13: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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 …

Page 14: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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 ?

Page 15: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 16: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• Utilisation déclarative des routes

• Pour générer les URLs

• Pour exploiter les paramètres

Le moteur de routage

Page 17: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net
Page 18: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 19: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 20: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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>

Page 21: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 22: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 23: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 35 styles de graphiques

• Support 2D/3D

• Utilise le Data Binding

Contrôle de graphe

Page 24: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net
Page 25: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 26: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• Extensions possibles :

• SearchExpression

• RangeExpression

• PropertyExpression

• OrderByExpression (et ThenByExpression)

• CustomExpression

• ControlFilterExpression, DynamicFilterExpression

• Pour Dynamic Data

QueryExtender

Page 27: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net
Page 28: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• Ajax Control Toolkit : nouveaux contrôles

• Templates côté client

• jQuery

• Microsoft Ajax CDN

• …

Nouveautés Ajax

Page 29: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• Projet CodePlex comportant des contrôles et des extendeurs Ajax.

• Utilisables dans VS 2008 et VS 2010

• Nouveautés : SeaDragon AsyncFileUpload

Ajax Control Toolkit

Page 30: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 31: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net
Page 32: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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 ?

Page 33: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 34: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net
Page 35: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 36: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

Asp.Net MVC

ASP.NET Dynamic Data

ASP.NET WebForms

ASP.NET MVC

Présentation

Runtime ASP.NET

Core

Page 37: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

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

Page 38: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

Peu d’influence sur le rendu

.. Encore une fois, cette situation n’est pas systématique en WebForms.

Page 39: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

Logic UI

Code difficile à tester

Page 40: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

MVC = Modèle-Vue-Contrôleur

Contrôleur (Point d’entrée)

Modèle (Métier)

Vue (Présentation)

Page 41: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

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

Page 42: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net
Page 43: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 44: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 45: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 46: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net

• 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

Page 47: Développement Asp.Net et Asp.Net MVCdownload.microsoft.com/documents/France/MSDAYS/2009/...•Pour prendre en compte les standards (XHTML, mais aussi accessibilité, et CSS), ASP.Net