Transcript ASP .NET

La plateforme
Microsoft .NET
- Ce cours : \\santiago\Cours et TPs 2005-2006\Cedrik
Poirey\MS.NET
- Installation Visual Studio .NET : \\santiago\installs\all
- Compte MSN Cedrik : [email protected]
Sommaire







Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
.NET ???
Historique
2000
XML
Web Services
1995
1990
Internet
GUI
1981
PC
MS-DOS
BASIC
IE, IIS
Visual Studio
Windows
Visual BASIC
Visual
Studio
.NET
.NET ???
Visual Studio.NET,
.NET Framework
.NET Enterprise
Servers
.NET Services
Expérience
Utilisateur
.NET Devices,
.NET ???
La plate forme .NET
PC &
périphériques
Web services
& .NET
MyServices
Storage
Notification
Serveurs
Enterprise Servers
Windows 2000 Server
Authentication
VisualStudio.NET
.NET Framework
Experiences
utilisateur
.NET ???
.NET Clients



Windows-powered
Supporte XML et les services Web
Fonctionne en autonome ou en
mode connecté
Sommaire







Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
Vue d’ensemble
Web
Services
Power &
Simplicity
Rich
Clients
Components
Security
Transactions
XML
Abilities
Standard
Protocols
XML
Mobile
Devices
Web
Browsers
Any
Database
Relational Access
FRAMEWORK
Objectifs

Intégration de l’existant




Multiples langages de programmation (vingtaine)
Interopérabilité COM
Compatibilité « side by side » (2 versions d’un même composant)
Développement d’applications simplifié


Modèle de programmation unifié
Elever le niveau d’abstraction (=>modèle objet)





classe, interface, héritage, propriété, event, constructor, exception…
Elimination complète de la plomberie COM
Bibliothèque de classe riche et extensible
Intégration native des standards Web
Environnement d’exécution robuste et sécurisé



FRAMEWORK
Code managé: (GC, Type Safe, Self-configuring, dynamically
tuning)
Runtime Security (unification du mode de traitement des erreurs)
Déploiement et administration simplifiés


Assemblies (versioning, securité, evolution des DLLs)
Installation Zero-Impact (Xcopy, pas d’enregistrement)
FRAMEWORK
Unifier les Modèles de Programmation
API cohérente quelque soit le langage ou le type d’application
.NET Framework
RAD,
Composition,
Delegation
VB Forms
Héritage,
Contrôle,
performance
MFC/ATL
Windows API
Stateless,
Mixe de code dans
Des pages HTML
ASP
FRAMEWORK
Intégration native de XML
Concepts
Applicatifs
.NET Framework fournit une mise en
correspondance bidirectionnelle
Web
Framework
Données
XML
Objets
Schéma
XSD
Classes
Services
WSDL
Méthodes
Invocation
SOAP
Appels
Composition
ASP.NET
Web Forms Web Services
Windows
Forms
ADO.NET and XML
Base Class Library
Common Language Runtime
FRAMEWORK
FRAMEWORK
Common Language Runtime

Common Language:



Runtime




Ouvert à différentes syntaxes (CLS)
FrameWork Objet pour le développeur
Une exécution managée et contrôlée
Managed Code, Managed Memory
Services ( XML, DATA, WEB …)
Basé sur :


Win32, XML, SOAP
Inter opère avec DCOM/COM, COM+1.0
FRAMEWORK
.NET Syntaxes
VB
C++
C#
J#
…
Common Language Specification

La plate-forme .Net est indépendante du langage


Tous les langages accèdent aux services fournis par la CLR
Commun Langage Spécification (CLS)



Spécification d’écriture des compilateurs « syntaxiques »
Chaque langage utilise et étend le framework .Net
Les langages .Net sont interopérables.
FRAMEWORK
Base Class Library
System.Web
Services
Description
UI
HtmlControls
Discovery
WebControls
System.WinForms
Design
Protocols
ComponentModel
System.Drawing
Caching
Security
Drawing2D
Printing
Configuration
SessionState
Imaging
Text
System.Data
System.Xml
ADO
SQL
XSLT
Design
SQLTypes
XPath
Serialization
System
Collections
IO
Security
Runtime
InteropServices
Configuration
Net
ServiceProcess
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
The big picture
VB
C++
C#
J#
FRAMEWORK
…
Common Language Specification
Windows Forms
ADO.NET
(Données & XML)
Soumis à L’ECMA
Base Class Library
Common Language Runtime
Visual Studio.NET
ASP.NET
Web Forms &
Web Services
Sommaire



Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime







Webcast
Un peu de code
GC
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
CLR/Conception & compilation
Que contiennent les métadonnées ?

Description de l'unité de déploiement (assembly)





Description des types



Identité : nom, version, culture, [clé publique]
Quels sont les types exportés ?
Quels sont les assemblys dont elle dépend ?
Quelles sont les autorisations de sécurité requises pour l'exécution ?
Nom, visibilité, classe de base, interfaces implémentées
Membres (méthodes, champs, propriétés, événements,
types imbriqués)
Attributs personnalisés



Définis par l'utilisateur (auteur ?)
Définis par le compilateur (const)
Définis par le framework (DllImport, Obsolete)
CLR/Conception & compilation
Métadonnées : création et
utilisation
Sérialisation
Code
source
Exportateur TLB
Réflexion
Concepteurs
Compilateur
Compilateurs
Explorateur
de types
Générateur
de schéma
Débogueur
Métadonnées
(et code)
Générateur
de profils
Générateur proxy
Codage XML
(SDL ou SUDS)
CLR/Conception & compilation
Les compilateurs utilisent les
métadonnées


Pour l'importation de types de données interlangages
Émettent des métadonnées dans le code de sortie




Décrivent les types définis et utilisés
Enregistrent les assemblys externes référencés
Enregistrent les informations de version
Les attributs personnalisés peuvent être utilisés




Obsolète
Conformité CLS
Compilés pour le déboguage
Marqueurs spécifiques au langage
CLR/Conception & compilation
D'autres outils utilisent les
métadonnées






Explorateurs de types et d'objets
Classes de réflexion
Concepteurs
Importateur et exportateur TLB
Outils de documentation
Débogueurs et générateurs de profils
CLR/Exécution
Flux de contrôle du runtime
Assembly
Support
d'exécution
Gestionnaires
de code
Système
de sécurité
Chargeur
de classes
Compilateur du code
IL en code natif
Code
natif
managé
Processeur
Première
référence
au type
Premier
appel de
méthode
C# & IL



Utilisation du désassembleur ILDASM pour retrouver le code
IL d’un assembly (exe ou dll).
-> Il existe des projets plus ou moins évolués de
désassembleur IL -> C#
-> Et donc des obfuscateurs .NET
CLR/GC
Garbage Collector

Managed Heap (tas managé)

Créer au démarrage du process


( + heap dédié aux larges object, > 20000 bytes)
Réservation d’une zone contiguë

Gestion d’un pointeur sur le prochain : « NextObjPtr »
Managed
Heap
NextObjPtr
Objet C
Objet B
Objet A
Le managed heap connaît a tout
moment le type d’un objet
~Aussi rapide qu’une allocation « Stack »
• Incrémenter le pointeur de heap
• Copie du buffer et appel constructeur
En fin de heap :
• Allocation/réservation (win32)
• Garbage Collection
• Travail par génération pour limiter le travail
CLR/GC
Garbage Collector

Optimisation par Gestion de Générations

Postulats :





Rechercher a « regrouper » les objets




Plus les objets sont récents, plus courte est leur vie.
Plus un objet est vieux, plus sa vie est longue.
Les objets les plus récents tendent a avoir plus d’échanges et sont
sollicités plus fréquemment, « en même » temps.
Compacter une portion de heap est plus rapide que de tout
compacter
Bénéficier le plus possible du cache processeur
Limiter les accès « lointains »
Test sur P 200 Mhz : 1 milliseconde pour un GC de génération 0
(full GC)
Objectif, « No more time than an ordinary page fault »
CLR/GC
Garbage Collector
Generation 1
Allocation d’objets
Déréférencement
Mark
Compact
Nouvelle allocation d’objets
Generation 0
Garbage Collector




La génération 2 est l’étape ultime du cycle de collecte des
objets .NET
Un cycle de collecte ne se déclenche que lorsque la
génération 0 est pleine, et ne s’intéresse qu’aux
générations qui permettront de satisfaire les besoins
immédiats en allocation mémoire
Aucun moyen programmatique d’inhiber le GC
On peut forcer le déclenchement du GC :
System.GC.Collect() ou System.GC.Collect(n)
(pour les tâches qui crée des objets et qui ne doivent pas
être interrompue)
Sommaire







Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
Langages/Sommaire
C# et VB.NET


VB .NET – Les nouveautés
C# .NET – Bref aperçu
Langages/Nouveautés VB
Le langage VB .NET






Langage réellement objet
Support de l’héritage
Support du multi-threading
Création de services NT
Extension : .vb
Compilateur : vbc.exe
Langages/Nouveautés VB
La syntaxe VB .NET (1)

Propriété



Constructeurs




Possibilité de fournir plusieurs signatures à une même méthode
Héritage



Déclaration d’un constructeur
Utilisation d’une classe implémentant un constructeur
Mot-clé : New
Overloading


Déclaration de propriété («read-only» ou «write-only» possible)
Mot-clé : Property
Héritage d’une autre classe (multi langage)
Mot-clés : Inherits ; Mybase
Overriding


Modification du comportement d’une méthode d’une classe dont
on hérite
Mot-clé : Overrides ; Overridable
Langages/Nouveautés VB
La syntaxe VB .NET (2)

Events




Permet la communication entre classes
Principe d’abonnement
Mot-clés : Event ; RaiseEvent ; AddHandler ; Handles
Exemple :
Le client s'abonne à l'événement NouveauCours
Client
Le client déclenche l'acquisition par Demarrer()
Le serveur notifie le client à chaque nouvelle quotation

Gestion d’erreur



Gestion par exception
On oublie les «On error GOTO»
Mot-clés : Try ; catch ; throw
Serveur
Quotation
Langages/Sommaire
C# et VB.NET


VB .NET – Les nouveautés
C# .NET – Bref aperçu
Langages/C#
C# - La syntaxe

Le meilleur du C++ et de VB

Développement RAD grâce à Visual Studio.Net


Langage utilisé à + de 80% pour développer le .Net
Framework
Soumis à l’ECMA
Langages/C#
C# et le framework


C#, comme tous les langages s'appuyant sur la plateforme
.Net, peut bénéficier de tous les services offerts par le .NET
Framework.
Il est impératif de regarder dans le détail les services
proposés par ce framework
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
Langages/C#
Langages/C#
C#.NET – La base en C#
Langages/C#
Sommaire







Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
VS .NET/Sommaire
Visual Studio .NET


Evolution de Visual Basic et Visual C++
IDE unifié pour les langages .NET (C#, VB, C++, J#)





Simplification des procédures de déboguage
Fonctionnalités multiples
Personnalisation complète de l’environnement
Navigateur multifonction intégré : web, ms-help, code source,
forms…
Nombreux assistants de génération de code
Quelques photos d’écrans…+ lien utile :
http://support.microsoft.com/default.aspx?scid=kb;FR;324775

VISUAL STUDIO 2005
PAUSE
Sommaire







Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Introduction
Objectifs (1)

Amélioration des performances


Prise en charge d'un outil de haute tenue


basé sur la «plateforme» CLR, multi langage
Simplicité


IDE WYSIWYG, déploiement automatique
Puissance et souplesse


code compilé, services de mises en cache
séparation interface/logique ; services du CLR (GC, ref.)
Gestion aisée


configuration hiérarchique basé sur du texte
déploiement par simple copie, pas de redémarrage du serveur
ASP .NET/Introduction
Objectifs (2)

Évolutivité et disponibilité


Personnalisation et extensibilité


processus supervisés et managés par le runtime de ASP.NET
(remplacement automatique si pb)
possibilité d'étendre ou de remplacer n'importe quel souscomposant du runtime de ASP.NET
Sécurité


l'authentification Windows intégrée
configuration par application
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Web Forms
Web Forms .NET ???

Modèle de programmation évolutif du CLR pour générer des
pages Web de manière dynamique.

Evolution logique de ASP

Améliorations :



possibilité de créer et d'employer des contrôles d'interface
utilisateur (réutilisation, reduction de la quantité de code)
organisation claire de la logique des pages pour éviter le code
«spaghetti»)
une prise en charge forte du design WYSIWYG des pages.
ASP .NET/Web Forms
Première page Web Forms

Fichier texte portant une extension de nom de fichier .aspx

Déployée au sein d'une arborescence racine virtuelle IIS

Compilée au 1er appel par le runtime d’ASP.NET en une
classe .NET (cette instance compilée est réutilisée par la
suite)

Création à partir d’un simple fichier HTML

Démo (demo1.aspx)
ASP .NET/Web Forms
Blocs de restitution <%%> ASP



Compatibilité assurée avec les pages ASP existantes
Moyen puissant de manipulation, mais pas «propre»
(gestion de l’état de la page entre les aller-retours au
serveur de manière personnalisée)
Démo (demo2.aspx)
ASP .NET/Web Forms
Contrôles serveur ASP.NET






En plus (remplacement) des blocs de codes <% %>
Balises personnalisées ou balises HTML intrinsèques
contenant une valeur d'attribut runat="server".
Au moment de l'exécution, ces contrôles serveur génèrent
automatiquement du contenu HTML.
Etat de la page géré automatiquement dans un champ de
formulaire <input type="hidden">
Prise en charge de contrôles personnalisés plus riche (voir
<asp:adrotator> ou <asp:calendar>)
Démo (control.aspx)
ASP .NET/Web Forms
Gestion des événements

Modèle objet exposé par chaque contrôle serveur





propriétés
méthodes
Évènements
Utilisation de ce modèle objet pour modifier proprement la
page
Démo… (evenement.aspx)
ASP .NET/Web Forms
Validation de formulaires

Moyen convivial, mais puissant, de détecter les erreurs
dans les formulaires d'entrée

Affichage de messages

Adaptation au client



Client supérieur : JavaScript et DHTML
Client inférieur : aller-retour sur le serveur
Démo (validator.aspx)
ASP .NET/Web Forms
Méthode code-behind

ASP.NET prend en charge deux méthodes de création des
pages dynamiques



code de la page est physiquement déclaré au sein du fichier
.aspx d'origine (exemples précédents)
méthode code-behind : permet au code de la page d'être
séparé plus proprement du contenu HTML dans un fichier
totalement distinct
Démo (intro13.aspx)
ASP .NET/Web Forms
Données et liaison de données




Contrôles serveurs DataGrid et DataList pour afficher
simplement des résultats de requêtes.
DataGrid + rapide à mettre en œuvre
DataList pour mieux controler la structure et la présentation
Alternative : le control Repeater qui permet de controler la
présentation au niveau du HTML

Démo VS.NET

Datagrid remplacé par GridView dans VS 2005
ASP .NET/Web Forms
Résumé








Web Forms ASP.NET fournit un moyen aisé, mais puissant, de
générer une interface utilisateur Web dynamique.
Les pages Web Forms ASP.NET peuvent cibler n'importe quel
navigateur client (aucun cookie ou bibliothèque de scripts n'est
requis).
Les pages Web Forms ASP.NET assurent la compatibilité de la
syntaxe avec les pages ASP existantes.
Les contrôles serveur ASP.NET permettent d'encapsuler
aisément des fonctionnalités courantes.
ASP.NET est fourni avec 45 contrôles serveur intégrés. Les
développeurs peuvent également utiliser des contrôles créés par
des tiers.
Les contrôles serveur ASP.NET peuvent projeter
automatiquement du code HTML de niveau supérieur et de
niveau inférieur.
Les modèles ASP.NET permettent de personnaliser aisément
l'apparence des contrôles serveur de liste.
Les contrôles de validation ASP.NET permettent d'effectuer
aisément une validation des données déclarative sur le client ou
le serveur.
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Services Web
Services Web .NET

Fichier texte .asmx semblable aux fichiers .aspx plus :




importation de l'espace de noms System.Web.Services
La classe est dérivée de la classe de base WebService
Chaque méthode devant être exposée doit avoir l’attribut
[WebMethod] en C#, <WebMethod()> en Visual Basic ou
WebMethodAttribute en JScript, devant sa signature
Ensemble d'outils et de code perfectionné pour l'utilisation
des services Web


WSDL.exe : outil de ligne de commande pour créer des classes
proxy à partir de WSDL
Assistants dans Visual Studio pour ajouter des références WEB

A propos de l’interop…(types communs, tableau, encoding)

Démo…
TP
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Applications Web
Définition


C’est la somme de tous les fichiers, pages, gestionnaires,
modules et codes exécutables pouvant être appelés ou
exécutés dans la portée d'un répertoire virtuel donné (et de
ses sous-répertoires) sur un serveur d'application Web.
S’exécute dans un domaine d'application .NET Framework
unique


Garantit l’isolation des classes et des variables statiques
Pool d'instances de HttpApplication géré par ASP .NET
durant la vie de l’application. Une instance assignée
automatiquement à chaque requète HTTP.
ASP .NET/Applications Web
Création

Dans un répertoire virtuel de serveur web.

Simple copie d’au moins un fichier .aspx dans le répertoire.

Automatique depuis VS .NET lors de la création d’un projet
de type « Site web »
ASP .NET/Applications Web
Durée de vie d'une application



Créée lors du lancement initial d'une demande au serveur
Création d’un pool d’instance de HttpApplication, et
déclenchement de l’événement Application_Start
Les instances de HttpApplication traitent les différentes
demandes jusqu’à la dernière instance, puis l’événement
Application_End est déclenché
ASP .NET/Applications Web
Utilisation du fichier Global.asax




Situé à la racine de l'arborescence du répertoire virtuel de
l’application Web
Permet au développeur de créer la logique liée à la gestion
des événements d'application de niveau supérieur
(Application_Start, Application_End, Session_Start,
Session_End )
Contient toutes les variables globales de l’application.
Attention ce n’est plus le cas avec VS 2005. Privilégiez la
création d’une classe « MySettings » qui contiendra ces
variables.
Démo
ASP .NET/Applications Web
Remarque sur les threads multiples


ASP.NET traite les demandes simultanément et plusieurs
threads peuvent accéder à l'objet Application ; attention
en cas d’utilisation d’objets avec une portée d’application !
Exemple dangereux :
<%
Application("counter") = CType(Application("counter") + 1, Int32)
%>

Code thread-safe :
<%
Application.Lock()
Application("counter") = CType(Application("counter") + 1, Int32)
Application.UnLock()
%>
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Cache
Services de cache



Pour de meilleures performances…
Conservation des pages ou des données entre les
demandes HTTP et les réutiliser sans avoir à les recréer.
3 types de mise en cache à disposition :



mise en cache de sortie
mise en cache par fragment
mise en cache de données
ASP .NET/Cache
Mise en cache de sortie



Pour mettre la totalité d’une page en cache.
Pour qu'une réponse puisse être mise dans le cache de sortie,
elle doit posséder une stratégie d'expiration/validation valide
et être visible dans le cache public.
Exemple :
<%@ OutputCache Duration="60" VaryByParam="none"%>
<%@ OutputCache Duration="60" VaryByParam="state" %>
ASP .NET/Cache
Mise en cache par fragment



Mise en cache des parties du contenu d'une page.
Les parties à mettre en cache doivent être désignée au
moyen d’un contrôle utilisateur avant de les marquer pour la
mise en cache à l'aide de la directive @ OutputCache.
Exemple :
<%@ Register TagPrefix="Acme" TagName="Menu" Src="Menu.ascx" %>
<html> <body>
<Acme:Menu Category="LeftMenu" runat=server/>
Hi, the time is now: <%=Now%>
<Acme:Menu Category="RightMenu" runat=server/>
</body> </html>
<%@ OutputCache Duration="120" VaryByParam="none" %>
<script language="VB" runat=server>
…
</script>
<asp:TextBox id="MyMenu" runat=server/>
ASP .NET/Cache
Mise en cache de données




Permet de mettre en cache des objets arbitraires par
programme.
Prend en charge l'expiration et les dépendances.
Limité à une application et sa durée de vie équivaut à celle
de l'application.
Exemple :
‘mise en cache
Cache("mykey") = myValue
‘récupération des données
myValue = Cache("mykey")
If myValue <> Null Then
DisplayData(myValue)
End If
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/configuration
Vue d’ensemble




Système de configuration riche et souple qui permet aux
développeurs d'associer aisément des paramètres à une
application installable et aux administrateurs de personnaliser
ces valeurs après le déploiement.
La hiérarchie de répertoire d’une application contient les
fichiers de configuration de cette application (la configuration
est déployée par simple copie).
Fichiers de texte brut qui peuvent être lus et écrits par les
utilisateurs du serveur (protégés par IIS).
Les modifications apportées aux fichiers de configuration
ASP.NET sont automatiquement détectées par le système.
ASP .NET/configuration
Format du fichier de configuration


Fichiers machine.config et web.config basés sur XML.
Exemple : calcul des paramètres de configuration de l'URL
http://myserver/myapplication/mydir/page.aspx




Base configuration settings for machine.
C:\WinNT\Microsoft.NET\Framework\v.2.00\config\machine.config
Overridden by the configuration settings for the site (or the root
application). C:\inetpub\wwwroot\web.config
Overridden by application configuration settings.
D:\MyApplication\web.config
Overridden by subdirectory configuration settings.
D:\MyApplication\MyDir\web.config
ASP .NET/configuration
Sections de configuration standard
<httpModules>
Responsable de la configuration des modules HTTP au sein
d'une application. Parmi leurs utilisations courantes, citons
la sécurité et la connexion.
<httpHandlers>
Responsable du mappage des URL entrantes à des classes
IHttpHandler
<sessionState>
Responsable de la configuration du module HTTP d'état de la
session.
<globalization>
Responsable de la configuration des paramètres de
globalisation d'une application.
<compilation>
<trace>
Responsable de tous les paramètres de compilation utilisés
par ASP.NET.
Responsable de la configuration du service de suivi ASP.NET.
<processModel>
Responsable de la configuration des paramètres du modèle
de processus ASP.NET sur les serveurs Web IIS.
<browserCaps>
Responsable du contrôle des paramètres du composant
Browser Capabilities.
ASP .NET/configuration
Utilisation des param. d'application

Stockage de paramètres d'application personnalisés :




chaînes de connexion de base de données
des chemins d'accès de fichiers
des URL de services Web XML distants
Exemple :
<configuration>
<appSettings>
<add key="WSURL" value="http://localhost/WSTP/Service1.asmx"/>
</appSettings>
<!-- etc… -->
</configuration>

Extraction :
String wsurl = ConfigurationSettings.AppSettings("WSURL") ;
Démo
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Déploiement
Arborescence


Plusieurs applications Web sur un même ASP .NET, identifiées
à l'aide d'un préfixe d'URL unique au sein d'un site Web.
Chaque application ASP.NET Framework exposée dans un
espace de noms d'URL est sauvegardée dans un répertoire du
système de fichiers situé sur un partage de fichiers local ou
distant.
ASP .NET/Déploiement
Démarrage d'une application


Création manuelle d'un domaine d'application lors du
démarrage d'une nouvelle application (à la 1ère demande
cliente).
Paramètres passés au CLR :



Les chemins d'accès des répertoires constituant le cache
d'assembly local
Les restrictions de sécurité de l'application
Chargement de classe :



Lors de la résolution de classe, ne charge jamais la DLL physique,
mais une copie de la DLL d’assembly.
Possibilité de supprimer, remplacer, renommer à tout moment un
assembly.
Detection automatique par le CLR des modifications  prises en
compte sans redémarrer le serveur
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Securité
Authentification et autorisation

Authentification



Autorisation



l'action de déterminer l'identité de l'entité à l'origine de la requête
généralement une paire nom/mot de passe
processus consistant à déterminer si une entité authentifiée peut
accéder à une ressource donnée.
ASP.NET agit conjointement avec IIS pour assurer des services
d'authentification et d'autorisation destinés aux applications.
Possibilité d’acceder dans le code à l’objet WindowsPrincipal

Vérification d’un rôle,…
ASP .NET/Securité
Configuration

Specification dans web.config du type d’authentification à
mettre en place



possibilité : None, Windows, Passport, Forms
exemple : <authentication mode="Forms"/>
Autorisation des utilisateurs et des rôles dans web.config




éléments "allow", "deny" avec attributs "users", "roles"
liste d’utilisateurs ou de rôles possibles
test sur la méthod HTTP avec l’attribut "verb"
Utilisateurs spéciaux :



? = utilisateur non authentifié
* = tous les utilisateurs
exemple :
<authorization>
<allow verb="POST" users="john,mary">
<allow verb="POST" roles="Admins">
<deny verb="POST" users="*">
<allow verb="GET" users="*">
</authorization>
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Localisation
Vue d’ensemble

Prise en charge du codage



en interne, ASP.NET utilise Unicode .
ASP.NET peut être configuré de plusieurs manières pour
utiliser un codage défini (lors de dialogue vers l’extérieur).
Prise en charge de la localisation



propriétés CurrentCulture de la classe CultureInfo
Routines de mises en formes pour l’affichage de nombres,
devises, dates,…
<configuration>
Démo
<system.web>
<globalization
fileEncoding="utf-8"
 Paramètres de configuration
requestEncoding="utf-8"
responseEncoding="utf-8"
 Dans fichier web.config :
culture="en-US"
 Dans la directive @Page :
/>
</system.web>
</configuration>
<%@Page Culture="fr-FR" UICulture="fr-FR" ResponseEncoding="utf-8"%>
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/Traçage
Traçage au niveau de la page



Pour activer le traçage au niveau de la page, utilisez un
attribut Trace="true" dans la directive Page de niveau
supérieur.
Le traçage au niveau de la page vous permet d'écrire des
instructions de débogage en tant que composants de la
sortie cliente d'une page. Les instructions de traçage sont
sorties à l'aide des méthodes Trace.Write et Trace.Warn,
en passant une catégorie et un message pour chaque
instruction.
Le débogage du code peut s'exécuter de manière
conditionnelle, selon que le traçage est activé ou non pour
la page. Utilisez la propriété Trace.IsEnabled de la page
pour déterminer si le traçage est activé.
ASP .NET/Traçage
Traçage au niveau de l’appli.



Vous pouvez activer le traçage au niveau de l'application à
l'aide d'une section « trace » du fichier de configuration
situé dans le répertoire racine de l'application.
Le traçage au niveau de l'application active la sortie du
journal de traçage pour chaque page d'une application (à
moins qu'une directive au niveau de la page désactive
explicitement le traçage).
Après le lancement d'une série de demandes, vous pouvez
accéder aux détails qui les concernent en demandant
« trace.axd » à partir de la racine de l'application.
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/ Déboguage
Déboguage

Puissants outils de déboguage intégré à Visual Studio .NET

Démo
ASP .NET/Sommaire
ASP .NET












Introduction
Web Forms .NET
Services Web .NET
Application Web .NET
Service de cache
Configuration
Déploiement
Sécurité
Localisation
Traçage
Déboguage
Performance
ASP .NET/ Performance
Conseils (1)

Désactivez l'état de session s'il n'est pas utilisé


Évitez les allers-retours excessifs du serveur




Mode Read-Only possible
Utilisation des validation d'entrées de formulaires côté client
Utilisez Page.IsPostback pour éviter toute tâche
supplémentaire lors d'un aller-retour
 Ex : lors du passage dans le page_load
Démo !
Utilisez les contrôles serveur avec parcimonie et de
manière appropriée
Évitez tout état d'affichage de contrôle serveur
excessif
Démo !
ASP .NET/ Performance
Conseils (2)

Ne vous basez pas sur des exceptions dans votre
code
Try
result = 100 / num
Catch (e As Exception)
result = 0
End

Utilisez la liaison anticipée dans du code Visual Basic


<%@ Page Language="VB" Strict="true" %>
Utilisez SqlDataReader pour un curseur de données
en avant et en lecture seule


If Not (num = 0) Then
result = 100 / num
Else
result = 0
End If
Meilleurs résultats que le DataSet
N'oubliez pas de désactiver le mode débogage
ASP .NET/ Performance
Outil proposé

WAS = Web Application Stress

Simulation de N clients HTTP





temps de réponse
débits
compteurs de performances relatives à l’application
détecteur de goulet d’étranglement
…
ASP.NET
Request
Request
*.html
*.asmx
*.htm
*.aspx
Http Request
Handling
HTTP Request
IIS
named pipes
*.htm
*.aspx
ISAPI Extension
Manager
ASPNET_ISAPI.DLL
ASP.NET ISAPI extension
ASP.NET
Static HTML
Files
ASP.DLL
CLR
INETINFO.EXE
ASPNET_WP.EXE
IIS worker process
ASP.NET worker process
COM+ runtime (DLLHost.EXE)
Win2k Server
Sommaire








Qu’est ce que .NET
Vue d’ensemble du Framework .NET
Le Common Language Runtime
Les objets COM+
C# et VB.NET
Visual Studio .NET
ASP.NET
ADO.NET et XML
ADO .NET/Sommaire
ADO .NET



Présentation
Objets
Resumé
ADO .NET/Présentation
Définition


Ensemble de classes permettant un accès à différentes
sources de données
Evolution par rapport à ADO




composante essentielle du framework .NET
propose un support optimum au modèle déconnecté
support d’XML natif au framework
reste accessible facilement aux développeurs ADO
ADO .NET/Présentation
Architecture d’ADO .NET
System.Data


.SqlTypes : Ensemble de classes qui permet de faire la correspondance
avec les types de données rencontrées dans SQL Server

.SqlClient : Ensemble de classes qui permet un accès à une source de
données de type SQL Server

.Common : Ensemble de classes qui permet d ’implémenter son propre
fournisseur d ’accès aux données

.OleDb : Ensemble de classes qui permet un accès à différentes sources de
données

.OracleClient : Ensemble de classes qui permet un accès à une source de
données de type Oracle Server (distribué par Microsoft avec Visual Studio
.NET 2005)
ADO .NET/Présentation
ADO Architecture : 2 Modes

Mode Connecté


Managed Provider
Accès physique à la base

Mode déconnecté

Dataset qui cache les
données sans maintien
de la connexion
ADO .NET/Présentation
Mode déconnecté

Les données sont “cachées” dans les DataSets




Dans ce modèle on limite les allers retour vers le serveur
Un DataSet est un cache de data issu d’une database
Notion de “virtual data store“
Un DataSet contient une ou plusieurs “tables”



Les DataAdapters forment le pont entre DataSet et Database
Ils chargent les data depuis la Database dans le DataSet
Ils répercutent les modifications du DataSet vers la Database
selon un “batch update model”
DataSet
DataAdapters
DataBase
ADO .NET/Présentation
Exemple d’architecture
ADO .NET/Sommaire
ADO .NET



Présentation
Objets
Resumé
ADO .NET/Objets
Connexions


Objets utilisés pour se connecter à une base de donnée
2 possibilités :

Fournisseur de donnée spécifique



Fournisseur de donnée OLE DB .NET (System.Data.OleDb)


SQL Server (System.Data.SqlClient)
Oracle Server (System.Data.OracleClient)
Pour tout type de connexion
Exemple :
public sub Run()
Dim mySqlConnection as SqlConnection
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
try
mySqlConnection.Open()
Console.WriteLine("Connexion {0} ouverte", mySqlConnection.ConnectionString)
' Close the connection explicitly
mySqlConnection.Close()
Console.WriteLine("Connexion ferme. Il est important de fermer les connexions explicitement.")
catch
Console.WriteLine("Impossible d'ouvrir la connexion {0}", mySqlConnection.ConnectionString)
end try
end sub
ADO .NET/Objets
Command

Information envoyée à une base de donnée



Objet présenté par les classes spécifiques d’un fournisseur
(ex: SqlCommand)
Type : INSERT, SELECT, UPDATE, DELETE, Appel de procédures
stockées,…
Exemple :
public sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlCommand as SqlCommand
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
mySqlCommand = new SqlCommand(“insert into CUSTOMERS (NAME) values (‘poil’)”, myConnection)
try
myConnection.Open()
mySqlCommand.ExecuteNonQuery()
Message = "Nouvel enregistrement dans la table Customers de Bank.«
myConnection.Close()
catch myException as Exception
Message= "Impossible d'inserer l'enregistrement: " + myException.ToString()
end try
Console.Write(Message)
end sub
DataReader

Objet similaire à un curseur de données



ADO .NET/Objets
en lecture seule/avance seule
prend en charge les données à deux dimensions (flat) ainsi que les
données hiérarchiques
Exemple :
public sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlCommand as SqlCommand
Dim myReader as SqlDataReader
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
mySqlCommand = new SqlCommand(“select * from CUSTOMERS”, myConnection)
try
myConnection.Open()
myReader = mySqlCommand.ExecuteReader()
do while (myReader.Read())
Console.Write(myReader("CustomerID").ToString())
loop
myConnection.Close()
catch myException as Exception
…
end try
end sub
ADO .NET/Objets
DataSet & DataAdapter : définitions

DataSet :





similaire à ADO Recordset (mais + puissant et toujours en mode
déconnecté)
cache de donnée avec structure similaire à une BD
Pas d’interaction directe avec la source de données
Nombreuses caractéristiques XML
DataAdapter :



«pont» entre le DataSet et la source de données
mise à jour de la BD à partir du DataSet (méthode update)
Définition explicite des commandes d’INSERT, DELETE et UPDATE
pour répercuter sur la BD les modifications du DataSet (ou
methode SqlCommandBuilder() plus coûteuse)
ADO .NET/Objets
DataSet & DataAdapter : schéma
ADO .NET/Objets
DataSet & DataAdapter : exemples
Public Sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlDataAdapter as SqlDataAdapter
Dim workParam as SqlParameter
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
mySqlDataAdapter = new SqlDataAdapter("Select * from CUSTOMERS", myConnection)
' Build the insert Command
mySqlDataAdapter.InsertCommand = new SqlCommand(“insert into CUSTOMERS (NAME) values
(@NAME)”, myConnection)
workParam = mySqlDataAdapter.InsertCommand.Parameters.Add("@NAME", SqlDbType.VarChar, 50)
workParam.SourceColumn = “NAME"
workParam.SourceVersion = DataRowVersion.Current
' Build the delete Command
mySqlDataAdapter.DeleteCommand = new SqlCommand(“delete drom CUSTOMERS where
NAME=@NAME”, myConnection)
workParam = mySqlDataAdapter.DeleteCommand.Parameters.Add("@NAME", SqlDbType.VarChar, 50)
workParam.SourceColumn = “NAME"
workParam.SourceVersion = DataRowVersion.Current
‘No update command in this case
‘….
ADO .NET/Objets
DataSet & DataAdapter : exemples
‘…suite
Dim myDataSet as DataSet
myDataSet = new DataSet()
mySqlDataAdapter.Fill(myDataSet, "Region")
‘insert
Dim myDataRow2 as DataRow
myDataRow2 = myDataSet.Tables(“CUSTOMERS").NewRow()
myDataRow2(“NAME“) = “poil”
myDataSet.Tables("Region").Rows.Add(myDataRow2)
try
mySqlDataAdapter.Update(myDataSet, "Region")
Console.Write("Mise jour réussie du DataSet !")
catch e as Exception
Console.Write(e.ToString())
end try
end sub
ADO .NET/Sommaire
ADO .NET



Présentation
Objets
Resumé
ADO .NET/Résumé
Résumé






ADO.NET est la nouvelle évolution de ADO pour le .Net Framework.
ADO.NET a été créé en mettant l'accent sur les caractéristiques
multicouches, sans état et XML au premier plan. Deux nouveaux
objets, les DataSet et DataAdapter, ont été introduits pour ces
scénarios.
ADO.NET peut être utilisé pour obtenir des données à partir d'un flux,
ou d'enregistrer des données dans un cache pour effectuer des
modifications.
La documentation contient de nombreuses autres informations sur
ADO.NET.
N'oubliez pas que vous pouvez exécuter une commande directement
sur la base de données pour effectuer des insertions, des mises à jour
et des suppressions. Il n'est pas nécessaire de placer les données
dans un DataSet avant de pouvoir insérer, mettre à jour ou
supprimer celles-ci.
De plus, un DataSet peut être utilisé pour se lier aux données, se
déplacer dans les données, et naviguer dans les relations de données.
Annexe : liens utiles





Didacticiels ASP.NET, Windows Forms + divers HOWTO :
http://fr.gotdotnet.com/quickstart/
Programmation PocketPC :
http://www.codeppc.com/ (eVB & eVC)
http://www.codeppc.net/ (SDE)
Site français d’utilisateur :
http://www.dotnetguru.org
Groupes Google (http://groups.google.com)
microsoft.public.dotnet.framework
Webcast FR (notamment la presentation du CLR)
http://support.microsoft.com/default.aspx?scid=fh;fr;pwebcst&expand=n
one&ln=fr&cid=C_7937