La plateforme Microsoft .NET

Transcription

La plateforme Microsoft .NET
La plateforme
Microsoft .NET
- Ce cours : \\santiago\
santiago\Cours et TPs 20052005-2006\
2006\Cedrik
Poirey\
Poirey\MS.NET
- Installation Visual Studio .NET : \\santiago\
santiago\installs\
installs\all
- Compte MSN Cedrik : mrow_monaco@
[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
1
.NET ???
Historique
2000
XML
Web Services
1995
1990
Internet
GUI
1981
PC
IE, IIS
Visual Studio
MS-DOS
BASIC
Windows
Visual BASIC
Visual
Studio
.NET
.NET ???
Visual Studio.NET,
.NET Framework
.NET Enterprise
Servers
.NET Services
Expérience
Utilisateur
.NET Devices,
2
.NET ???
La plate forme .NET
PC &
périphériques
ISA Server
2000
Mobile
Information
2001 Server
Host
Integration
Server 2000
SQL Server
2000
Exchange
2000
Commerce
Server 2000
Notification
BizTalk
Server 2000
Serveurs
Authentication
Storage
Application
Center 2000
Web services
& .NET
MyServices
VisualStudio.NET
.NET Framework
Experiences
utilisateur
Enterprise Servers
Windows 2000 Server
.NET ???
.NET Clients
WindowsWindows-powered
Supporte XML et les services Web
Fonctionne en autonome ou en
mode connecté
3
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
FRAMEWORK
Schématisation de .NET
Visual
Studio®
.NET
Votre application
et votre service Web
Autres
applications
utilisant
votre service
Clients
finaux
.NET
Framework
Opérations
Orchestration
Windows® CE,
Me, 2000, .NET
Protocoles Internet ouverts
SOAP, SCL, DISCO, HTTP
SMTP, XML, WAP, XSD
Vos services internes
.NET Enterprise
Servers
Building Block
Services
Services Web publics
4
FRAMEWORK
Framework, langages et outils
VB
C++®
C#®
…
JScript®
Common Language Specification
Windows Forms
Données et XML
Bibliothèque de classes de base
Common Language Runtime
Windows
Visual Studio .NET
ASP .NET
Services COM+
FRAMEWORK
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
5
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
(=>modèle objet)
objet)
Bibliothèque de classe riche et extensible
Intégration native des standards Web
Environnement d’exécution robuste et sécurisé
classe, interface, héritage, propriété, event, constructor, exception…
exception…
Elimination complète de la plomberie COM
Code managé: (GC, Type Safe,
Safe, SelfSelf-configuring, dynamically
tuning)
tuning)
Runtime Security (unification du mode de traitement des erreurs)
Déploiement et administration simplifiés
Assemblies (versioning,
versioning, securité,
securité, evolution des DLLs)
DLLs)
Installation ZeroZero-Impact (Xcopy,
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
Stateless,
Mixe de code dans
Des pages HTML
ASP
Windows API
6
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
FRAMEWORK
Composition
ASP.NET
Web Forms Web Services
Windows
Forms
ADO.NET and XML
Base Class Library
Common Language Runtime
7
FRAMEWORK
Common Language Runtime
Common Language:
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 plateplate-forme .Net est indépendante du langage
Commun Langage Spécification (CLS)
Tous les langages accèdent aux services fournis par la CLR
Spécification d’écriture des compilateurs « syntaxiques »
Chaque langage utilise et étend le framework .Net
Les langages .Net sont interopérables.
interopérables.
8
FRAMEWORK
Base Class Library
System.Web
System.WinForms
Services
Description
UI
HtmlControls
Discovery
WebControls
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
Configuration
Net
ServiceProcess
Runtime
InteropServices
Diagnostics
Reflection
Text
Remoting
Globalization
Resources
Threading
Serialization
FRAMEWORK
The big picture
VB
C++
C#
J#
…
Common Language Specification
Windows Forms
ADO.NET
Soumis
L’ECMA
(Données &àXML)
Base Class Library
Visual Studio.NET
ASP.NET
Web Forms &
Web Services
Common Language Runtime
9
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/Sommaire
Common Language Runtime
Objectifs
Conception & compilation
Déploiement
Exécution
A propos du Garbage Collector
Résumé
10
CLR/Objectifs
Simplification du développement
Moins d'écriture, davantage de réutilisation
Disparition de toute la "plomberie"
Framework étendu et homogène
Classes et interfaces
Métadonnées
Proxies transparents
Gestion de la mémoire
Un ensemble d'outils de support WYSIWYG
non négligeable
Concepteurs et assistants
Débogueurs
Générateurs de profils
Pour une productivité accrue.
CLR/Objectifs
Simplification et sécurisation
accrue du déploiement
Aucun enregistrement, installation à zéro impact
Versions côtecôte-à-côte des composants partagés
Déploiement avec XCOPY, téléchargement incrémentiel
Stockage des versions au moment de la compilation
Stratégie d'administration au moment de l'exécution
Stratégie de sécurité basée sur la preuve
Basée sur l'identité et l'utilisateur du code
Origine du code (emplacement)
Éditeur (clé publique)
Pour enfin mettre un terme à l'"enfer des DLL" !
11
CLR/Objectifs
Évolutivité
Des périphériques intelligents aux parcs Web
Gestion automatique de la mémoire
Pool de threads
Gestion asynchrone des communications
Autoconfiguration
Paramétrage dynamique
Accès distant aux objets
Événements
Version pour périphérique intelligent
Systèmes d'exploitation en temps réel (RTOS,
RealReal-Time Operating System)
System)
Mêmes outils utilisés pour le bureau
Pour un meilleur rapport performance/coût.
CLR/Objectifs
Fonctionnalité multi langage
Système de type commun
La CLS guide la conception du framework
Orienté objet
Prise en charge des langages procéduraux
Possibilité de prise en charge des langages fonctionnels
Ensemble de règles permettant une utilisation étendue
L'ensemble de la fonctionnalité .NET Framework
est disponible
Plus de 20 langages étudiés
La plupart sont des "consommateurs CLS"
Beaucoup étendent la CLS
Un large éventail d'outils pour vos travaux.
12
CLR/Objectifs
Les langages disponibles
Perl
Python
Cobol
Haskell
ML
Jscript
Ada
APL
Eiffel
Pascal
Fortran
Managed C++
Visual Basic
C#
SmallTalk
Oberon
Scheme
Mercury
Oz
Objective Caml
…
CLR/Objectifs
Unification des types
13
CLR/Objectifs
Vue d’ensemble
Base Class Library Support
Thread Support
COM Marshaler
Type Checker
Exception Manager
Security Engine
Debug Engine
IL to Native
Compilers
Code
Manager
Garbage
Collector
Class Loader
CLR/Sommaire
Common Language Runtime
Objectifs
Conception & compilation
Déploiement
Exécution
A propos du Garbage Collector
Résumé
14
CLR/Conception & compilation
Métadonnées
Informations indépendantes du langage,
et plus encore
Élément clé pour un modèle de programmation simplifié
Automatiquement générées par les compilateurs
Stockées avec le code dans le fichier exécutable
Stockées au format binaire
Requises pour l'exécution (obligatoires)
Convertibles en et à partir du schéma XML
et des bibliothèques de types COM
CLR/Conception & compilation
Que contiennent les métadonnées ?
Description de l'unité de déploiement (assembly
(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
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
(const))
Définis par le framework (DllImport,
DllImport, Obsolete)
Obsolete)
15
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
Générateur
de profils
(et code)
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
16
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/Sommaire
Common Language Runtime
Objectifs
Conception & compilation
Déploiement
Exécution
A propos du Garbage Collector
Résumé
17
CLR/Déploiement
Assembly
Unité de déploiement
Unité de versioning
Stockée par le compilateur
Stratégie par application et par ordinateur
Amélioration de la sécurité
Un seul ou plusieurs fichiers, indépendants du packaging
Autodescriptive par le biais des métadonnées (manifeste)
Des autorisations sont attribuées aux assemblys
Les méthodes peuvent demander la preuve qu'une autorisation a
été accordée à toute la chaîne d'appel
Les assemblys servent d'intermédiaires aux importations et
exportations
Les types référencés sont relatifs à l'assembly
l'assembly
CLR/Déploiement
Applications
Les applications sont des unités configurables
L'emplacement des assemblys est déterminé en fonction de :
Un assembly ou plus
Fichiers ou données spécifiques aux applications
Leur nom logique (nom, éditeur, version et culture)
L'application qui les charge
Les applications peuvent avoir des versions privées des
assemblys
La stratégie de version peut être définie
par application
18
CLR/Sommaire
Common Language Runtime
Objectifs
Conception & compilation
Déploiement
Exécution
A propos du Garbage Collector
Résumé
CLR/Exécution
Modèle d'exécution
VB
Code
natif
NGEN
VC
C#
…
IL
Common Language Runtime
Compilateur
JIT standard
Code
natif
19
CLR/Exécution
Code managé
Le code managé fournit :
Les métadonnées décrivant les données
L'emplacement des références aux objets
Les tables de gestion des exceptions
Donc, le runtime peut fournir :
La
La
La
Le
gestion des exceptions
sécurité
gestion automatique de la durée de vie
débogage et la génération 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é
Première
référence
au type
Premier
appel de
méthode
Processeur
20
CLR/Exécution
Compilation
du code IL en code natif
JIT "standard"
Génère du code natif optimisé
Inclut une vérification du code en langage intermédiaire (IL,
Intermediate Language)
Language)
Génération de code au moment de l'installation (NGEN)
Exécutée au moment de l'installation
Réduit le temps de démarrage
Vérifications de version du code natif et retour
au runtime JIT en cas d'erreur
CLR/Exécution
Données managées
Disposition fournie par le CLR pour gerer certaines parties de
la mémoire
Généralement automatique
Les métadonnées peuvent spécifier :
L'ordre
La compression
La disposition explicite
Durée de vie gérée par le CLR (GC)
Jeu de travail compacté
Données déplacées
Références aux objets mises à jour
Erreurs de page prises en charge
21
CLR/Exécution
Appel de code non managé
Non managé
Code
natif
Managé
Common Language Runtime
Compilateur
JIT standard
Code
natif
CLR/Exécution
Trois mécanismes
COM Interop
Identité des objets conservée (IUnknown
(IUnknown))
Interfaces COM sélectionnées automatiquement créées
PInvoke (Platform Invoke)
Invoke)
IJW (It
(It Just Works)
Works)
Appel des points d'entrée DLL statiques
Pas de marshaling
22
CLR/Sommaire
Common Language Runtime
Objectifs
Conception & compilation
Déploiement
Exécution
A propos du Garbage Collector
Résumé
CLR/Sommaire
Common Language Runtime
Objectifs
Conception & compilation
Déploiement
Exécution
A propos du Garbage Collector
Résumé
23
CLR/Résumé
Résumé
Simplification...
Code multilangage,
multilangage, sécurisé et mobile
Tout le code est compilé avant exécution
Pas votre machine virtuelle conventionnelle !
Interopérabilité totale avec le code non managé
Du développement, du déploiement
et de l'administration
Services COM, COM+ 1.0, Microsoft Win32®,
vos DLL
Évolutivité : des périphériques intelligents
aux parcs Web
Common Language Runtime
Questions ? Remarques ?
Principaux concepts :
Métadonnées
Multi langages (héritage)
Aucun enregistrement (déploiement par simple copie)
Composants side by side
Flux de contrôle du runtime à l’exécution
Interop totale
Un peu de code…
24
C# & IL
Utilisation du désassembleur ILDASM pour retrouver le code
IL d’un assembly (exe ou dll).
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
Réservation d’une zone contiguë
( + heap dédié aux larges object,
object, > 20000 bytes)
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
25
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
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
Generation 0
Allocation d’objets
Déréférencement
Mark
Compact
Nouvelle allocation d’objets
26
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()
System.GC.Collect() ou System.GC.Collect(n)
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
27
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 multimulti-threading
Création de services NT
Extension : .vb
.vb
Compilateur : vbc.exe
28
Langages/Nouveautés VB
La syntaxe VB .NET (1)
Propriété
Déclaration de propriété («read
(«read--only»
only» ou «write
«write--only»
only» possible)
MotMot-clé : Property
Constructeurs
Déclaration d’un constructeur
Utilisation d’une classe implémentant un constructeur
MotMot-clé : New
Overloading
Héritage
Possibilité de fournir plusieurs signatures à une même méthode
Héritage d’une autre classe (multi langage)
MotMot-clés : Inherits ; Mybase
Overriding
Modification du comportement d’une méthode d’une classe dont
on hérite
MotMot-clé
clé : Overrides ; Overridable
Langages/Nouveautés VB
La syntaxe VB .NET (2)
Events
Permet la communication entre classes
Principe d’abonnement
MotMot-clé
clés : Event ; RaiseEvent ; AddHandler ; Handles
Exemple :
Le client s'abonne à l'événement NouveauCours
Client
Le client déclenche l'acquisition par Demarrer()
Serveur
Quotation
Le serveur notifie le client à chaque nouvelle quotation
Gestion d’erreur
Gestion par exception
On oublie les «On error GOTO»
MotMot-clés : Try ; catch ; throw
29
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
30
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#
31
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
32
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
33
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
34
Langages/C#
C#.NET – La base en C#
Langages/C#
C#.NET – La base en C#
35
Langages/C#
Langages/C#
C#.NET – La base en C#
36
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
37
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, msms-help,
help, code source,
forms…
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
38
VISUAL STUDIO 2005
39
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
40
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.)
ref.)
Gestion aisée
configuration hiérarchique basé sur du texte
déploiement par simple copie, pas de redémarrage du serveur
41
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)
pb)
possibilité d'étendre ou de remplacer n'importe quel soussouscomposant 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
42
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
.aspx
Déployée au sein d'une arborescence racine virtuelle IIS
Compilée au 1er appel par le runtime d’ASP.NET
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)
43
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 alleraller-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"
".
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
">
type="hidden">
Prise en charge de contrôles personnalisés plus riche (voir
<asp:
asp:adrotator>
adrotator> ou <asp
<asp::calendar>)
calendar>)
Démo (control.aspx
(control.aspx))
44
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)
evenement.aspx)
ASP .NET/Web Forms
Contrôles serveur personnalisés
ASP.NET est fourni avec 45 contrôles serveur intégrés ;
immédiatement exploitables.
Possibilité pour les développeurs de rajouter leur propres
contrôles personnalisés
45
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 : alleraller-retour sur le serveur
Démo (validator.aspx
(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 codecode-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)
46
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.
47
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
.asmx semblable aux fichiers .aspx
.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]
WebMethod] en C#, <WebMethod()>
WebMethod()> en Visual Basic ou
WebMethodAttribute en JScript,
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)
l’interop…(types
encoding)
Démo…
48
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
49
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 soussous-répertoires)
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
.aspx dans le répertoire.
Automatique depuis VS .NET lors de la création d’un projet
de type « Site web »
50
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,
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_Start, Application_End,
Application_End, Session_Start,
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
51
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)
Application("counter")
CType(Application("counter
%>
Code threadthread-safe :
<%
Application.Lock()
Application.Lock()
Application("counter
") = CType(Application("
counter")
") + 1, Int32)
Application("counter")
CType(Application("counter
Application.UnLock()
Application.UnLock()
%>
ASP .NET/Applications Web
Résumé
Les applications ASP.NET Framework se composent de tous les
éléments situés sous un répertoire virtuel du serveur Web.
Pour créer une application ASP.NET Framework,
Framework, ajoutez des
fichiers à un répertoire virtuel du serveur Web.
La durée de vie d'une application ASP.NET Framework est
marquée par les événements Application_Start et
Application_End.
Application_End.
Les applications ASP.NET Framework peuvent définir dans le
fichier Global.asax des gestionnaires d'événements et des objets
dont la portée est limitée à l'application ou à la session.
L'accès à des objets ayant une portée d'application doit être
sécurisé pour l'accès multithread.
multithread.
52
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
mise
mise
en
en
en
cache
cache
cache
de sortie
par fragment
de données
53
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"
Duration="60" VaryByParam="none"%>
VaryByParam="none"%>
<%@ OutputCache Duration="60"
Duration="60" VaryByParam="state"
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.
OutputCache.
Exemple :
<%@ Register TagPrefix="
Acme"" TagName="Menu"
Menu.ascx"" %>
TagPrefix="Acme
TagName="Menu" Src="
Src="Menu.ascx
<html> <body>
<Acme:Menu
LeftMenu"" runat=
Acme:Menu Category="
Category="LeftMenu
runat=server/>
server/>
Hi, the time is now:
%>
now: <%=Now
<%=Now%>
<Acme:Menu
RightMenu"" runat=
Acme:Menu Category="
Category="RightMenu
runat=server/>
server/>
</body> </html>
<%@ OutputCache Duration="120"
Duration="120" VaryByParam="none"
VaryByParam="none" %>
<script language="VB"
language="VB" runat=
runat=server>
server>
…
</script>
<asp:
asp:TextBox id="MyMenu
id="MyMenu"" runat=
runat=server/>
server/>
54
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
Cache("mykey")
‘récupération des données
myValue = Cache("mykey
")
Cache("mykey")
If myValue <> Null Then
DisplayData(
DisplayData(myValue)
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
55
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
l'URL
http://myserver/myapplication/mydir/page.aspx
Base configuration settings for machine.
C:\
C:\WinNT\
WinNT\Microsoft.NET\
Microsoft.NET\Framework\
Framework\v.2.00\
v.2.00\config\
config\machine.config
Overridden by the configuration settings for the site (or the root
application). C:\
C:\inetpub\
inetpub\wwwroot\
wwwroot\web.config
Overridden by application configuration settings.
settings.
D:\
D:\MyApplication\
MyApplication\web.config
Overridden by subdirectory configuration settings.
settings.
D:\
D:\MyApplication\
MyApplication\MyDir\
MyDir\web.config
56
ASP .NET/configuration
Sections de configuration standard
<httpModules>
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>
httpHandlers>
Responsable du mappage des URL entrantes à des classes
IHttpHandler
<sessionState>
sessionState>
Responsable de la configuration du module HTTP d'état de
la session.
<globalization>
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>
processModel>
Responsable de la configuration des paramètres du modèle
de processus ASP.NET sur les serveurs Web IIS.
<browserCaps>
browserCaps>
Responsable du contrôle des paramètres du composant
Browser Capabilities.
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>
appSettings>
<add key="WSURL"
/WSTP/Service1.asmx"/>
key="WSURL" value="http://localhost
value="http://localhost/WSTP/Service1.asmx"/>
</appSettings
>
</appSettings>
<!-<!-- etc…
etc… -->
-->
</configuration>
Extraction :
String wsurl = ConfigurationSettings.AppSettings("WSURL")
ConfigurationSettings.AppSettings("WSURL") ;
Démo
57
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
d'URL unique au sein d'un site Web.
Chaque application ASP.NET Framework exposée dans un
espace de noms d'URL
d'URL est sauvegardée dans un répertoire du
système de fichiers situé sur un partage de fichiers local ou
distant.
58
ASP .NET/Déploiement
Assemblys
Unité de déploiement des classes dans le Common Language
Runtime.
Runtime.
1 projet Visual Studio.NET = 1 assembly .NET Framework =
1 DLL physique
Déploiement par simple copie (!)
dans le cache d’assembly
d’assembly global (pour du code partagé)
ou local (pour le code propre à une application ; sécurité et
facilité du versionning).
versionning). SousSous-repertoire /bin par défaut.
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
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,
physique,
mais une copie de la DLL d’assembly
d’assembly..
Possibilité de supprimer, remplacer, renommer à tout moment un
assembly.
assembly.
Detection automatique par le CLR des modifications prises en
compte sans redé
redémarrer le serveur
59
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é
.NET/Securité
Authentification et autorisation
Authentification
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
Autorisation
processus consistant à déterminer si une entité authentifiée peut
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
d’acceder dans le code à l’objet WindowsPrincipal
Vérification d’un rôle,…
60
ASP .NET/Securité
.NET/Securité
Configuration
Specification dans web.config du type d’authentification à
mettre en place
possibilité : None, Windows, Passport,
Passport, Forms
exemple : <authentication mode="Forms
"/>
mode="Forms"/>
Autorisation des utilisateurs et des rôles dans web.config
éléments "allow
", "deny
", "roles
"allow",
"deny"" avec attributs "users
"users",
"roles""
liste d’utilisateurs ou de rôles possibles
test sur la méthod HTTP avec l’attribut "verb
"verb""
Utilisateurs spéciaux :
? = utilisateur non authentifié
* = tous les utilisateurs
exemple :
<authorization>
authorization>
<allow verb="POST"
john,,mary">
verb="POST" users="
users="john
mary">
<allow verb="POST"
Admins">
">
verb="POST" roles="
roles="Admins
<deny verb="POST"
verb="POST" users="*">
users="*">
<allow verb="GET"
verb="GET" users="*">
users="*">
</authorization
>
</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
61
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>
system.web>
<globalization
fileEncoding="utf
fileEncoding="utf--8"
Paramètres de configuration
requestEncoding="utf
requestEncoding="utf--8"
responseEncoding="utf
responseEncoding="utf--8"
Dans fichier web.config :
culture="en
culture="en--US"
US"
Dans la directive @Page :
/>
</system.web
>
</system.web>
</configuration>
<%@Page Culture="fr
fr--FR"
Culture="fr--FR"
FR" UICulture="
UICulture="fr
FR" ResponseEncoding="utf
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
62
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
Trace="true"
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,
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.
63
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
64
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
Vue d’ensemble des performances
Amélioration de la plateforme Microsoft
les pages ne sont compilées qu'une seule fois
mises en cache pour les demandes ultérieures
cache des objets internes, tels que des variables de serveur,
afin d'accélérer l'accès au code utilisateur
bénéfice des performances du Common Language Runtime :
compilation justejuste-à-temps,
temps,
adaptation aux ordinateurs mono ou multiprocesseurs, etc.
Notions importantes
Débit : nombre de demandes qu'une application Web peut
servir par unité de temps (demandes/seconde)
Temps de réponse : durée entre le lancement d'une
demande et le premier octet retourné au client par le serveur
Temps d’exécution : durée de traitement d'une demande
Evolutivité : capacité de s’adapter aux ressources
65
ASP .NET/ Performance
Conseils (1)
Désactivez l'état de session s'il n'est pas utilisé
Mode ReadRead-Only possible
Évitez les allersallers-retours excessifs du serveur
Utilisation des validation d'entrées de formulaires côté client
Utilisez Page.IsPostback pour éviter toute tâche
supplémentaire lors d'un alleraller-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"
Language="VB" Strict="true
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
66
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
ASP.NET
Request
Request
*.html
Request
*.html
*.asmx
*.htm
*.asmx
*.htm
*.aspx
*.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
67
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é
68
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
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)
69
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
“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”
model”
DataSet
DataAdapters
DataBase
70
ADO .NET/Présentation
Exemple d’architecture
ADO .NET/Sommaire
ADO .NET
Présentation
Objets
Resumé
71
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
(System.Data.OleDb))
SQL Server (System.Data.SqlClient
(System.Data.SqlClient))
Oracle Server (System.Data.OracleClient
(System.Data.OracleClient))
Pour tout type de connexion
Exemple :
public sub Run()
Dim mySqlConnection as SqlConnection
mySqlConnection = new SqlConnection("server=worm;
")
SqlConnection("server=worm; database=Bank;user
database=Bank;user id=sa
id=sa")
try
mySqlConnection.Open()
mySqlConnection.Open()
Console.WriteLine("Connexion {0} ouverte",
ouverte", mySqlConnection.ConnectionString)
mySqlConnection.ConnectionString)
' Close the connection explicitly
mySqlConnection.Close()
mySqlConnection.Close()
Console.WriteLine("Connexion
Console.WriteLine("Connexion ferme. Il est important de fermer les connexions explicitement.")
explicitement.")
catch
Console.WriteLine("Impossible
Console.WriteLine("Impossible d'ouvrir la connexion {0}", mySqlConnection.ConnectionString)
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)
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;
")
SqlConnection("server=worm; database=Bank;user
database=Bank;user id=sa
id=sa")
mySqlCommand = new SqlCommand(“insert into CUSTOMERS (NAME) values (‘poil
’)”, myConnection)
(‘poil’)”,
myConnection)
try
myConnection.Open()
myConnection.Open()
mySqlCommand.ExecuteNonQuery()
mySqlCommand.ExecuteNonQuery()
Message = "Nouvel enregistrement dans la table Customers de Bank.«
Bank.«
myConnection.Close()
myConnection.Close()
catch myException as Exception
Message= "Impossible d'inserer
d'inserer l'enregistrement: " + myException.ToString()
myException.ToString()
end try
Console.Write(Message)
Console.Write(Message)
end sub
72
ADO .NET/Objets
DataReader
Objet similaire à un curseur de données
en lecture seule/avance seule
prend en charge les données à deux dimensions (flat) ainsi que les
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;
")
SqlConnection("server=worm; database=Bank;user
database=Bank;user id=sa
id=sa")
mySqlCommand = new SqlCommand(“select * from CUSTOMERS”, myConnection)
myConnection)
try
myConnection.Open()
myConnection.Open()
myReader = mySqlCommand.ExecuteReader()
mySqlCommand.ExecuteReader()
do while (myReader.Read
()))
(myReader.Read()
Console.Write(myReader("CustomerID").ToString
()))
Console.Write(myReader("CustomerID").ToString()
loop
myConnection.Close()
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
d’INSERT,, DELETE et UPDATE
pour répercuter sur la BD les modifications du DataSet (ou
methode SqlCommandBuilder()
SqlCommandBuilder() plus coûteuse)
73
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;
")
SqlConnection("server=worm; database=Bank;user
database=Bank;user id=sa
id=sa")
mySqlDataAdapter = new SqlDataAdapter("Select * from CUSTOMERS", myConnection)
myConnection)
' Build the insert Command
mySqlDataAdapter.InsertCommand = new SqlCommand(“insert into CUSTOMERS (NAME) values
(@NAME)”, myConnection)
myConnection)
workParam = mySqlDataAdapter.InsertCommand.Parameters.Add("@NAME",
mySqlDataAdapter.InsertCommand.Parameters.Add("@NAME", SqlDbType.VarChar,
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)
myConnection)
workParam = mySqlDataAdapter.DeleteCommand.Parameters.Add("@NAME",
mySqlDataAdapter.DeleteCommand.Parameters.Add("@NAME", SqlDbType.VarChar,
SqlDbType.VarChar, 50)
workParam.SourceColumn = “NAME"
workParam.SourceVersion = DataRowVersion.Current
‘No update command in this case
‘….
74
ADO .NET/Objets
DataSet & DataAdapter : exemples
‘…suite
Dim myDataSet as DataSet
myDataSet = new DataSet()
DataSet()
mySqlDataAdapter.Fill(myDataSet,
mySqlDataAdapter.Fill(myDataSet, "Region")
‘insert
Dim myDataRow2 as DataRow
myDataRow2 = myDataSet.Tables(“CUSTOMERS").NewRow()
myDataSet.Tables(“CUSTOMERS").NewRow()
myDataRow2(“
myDataRow2(“NAME“
NAME“) = “poil”
poil”
myDataSet.Tables("Region").Rows.Add(myDataRow2)
try
mySqlDataAdapter.Update(myDataSet,
mySqlDataAdapter.Update(myDataSet, "Region")
Console.Write("Mise
Console.Write("Mise jour réussie du DataSet !")
catch e as Exception
Console.Write(e.ToString())
Console.Write(e.ToString())
end try
end sub
ADO .NET/Sommaire
ADO .NET
Présentation
Objets
Resumé
75
ADO .NET/Résumé
Résumé
ADO.NET est la nouvelle évolution de ADO pour le .Net Framework.
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,
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
données
dans un DataSet avant de pouvoir insérer, mettre à jour ou
supprimer cellescelles-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.
données.
Annexe : liens utiles
Didacticiels ASP.NET, Windows Forms + divers HOWTO :
http://fr.gotdotnet.com/quickstart
http://fr.gotdotnet.com/quickstart//
Programmation PocketPC :
http://www.codeppc.com/ (eVB & eVC)
eVC)
http://www.codeppc.net/ (SDE)
Site français d’utilisateur :
http://www.dotnetguru.org
Groupes Google (http://groups.google.com
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
http://support.microsoft.com/default.aspx?scid=fh;fr;pwebcst&expand=n
one&ln=fr&cid=C_7937
76

Documents pareils