Title: La plateforme Microsoft .NET
1La 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 mrow_monaco_at_hotmail.com
2Sommaire
- Quest ce que .NET
- Vue densemble du Framework .NET
- Le Common Language Runtime
- C et VB.NET
- Visual Studio .NET
- ASP.NET
- ADO.NET et XML
3Historique
.NET ???
1995
Internet
IE, IIS
Visual Studio
4.NET ???
5La plate forme .NET
.NET ???
PC périphériques
Experiences utilisateur
VisualStudio.NET .NET Framework
Authentication
Web services .NET MyServices
Storage
Notification
Mobile Information 2001 Server
Host Integration Server 2000
Application Center 2000
BizTalk Server 2000
Commerce Server 2000
Exchange 2000
SQL Server 2000
ISA Server 2000
Serveurs
Enterprise Servers
Windows 2000 Server
6.NET Clients
.NET ???
- Windows-powered
- Supporte XML et les services Web
- Fonctionne en autonome ou en mode connecté
7Sommaire
- Quest ce que .NET
- Vue densemble du Framework .NET
- Le Common Language Runtime
- C et VB.NET
- Visual Studio .NET
- ASP.NET
- ADO.NET et XML
8Schématisation de .NET
FRAMEWORK
Protocoles Internet ouverts SOAP, SCL, DISCO,
HTTP SMTP, XML, WAP, XSD
Visual Studio .NET
Vos services internes
Votre application et votre service Web
Orchestration
.NET Enterprise Servers
.NET Framework
Autres applications utilisant votre service
Opérations
Windows CE, Me, 2000, .NET
Building Block Services
Clientsfinaux
Services Web publics
9Framework, langages et outils
FRAMEWORK
VB
C
C
Visual Studio .NET
JScript
Common Language Specification
ASP .NET
Windows Forms
Données et XML
Bibliothèque de classes de base
Common Language Runtime
Windows
Services COM
10FRAMEWORK
Vue densemble
Components SecurityTransactions XML Abilities
11Objectifs
FRAMEWORK
- Intégration de lexistant
- Multiples langages de programmation (vingtaine)
- Interopérabilité COM
- Compatibilité side by side (2 versions dun
même composant) - Développement dapplications simplifié
- Modèle de programmation unifié
- Elever le niveau dabstraction (gtmodè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 dexécution robuste et sécurisé
- 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
denregistrement)
12Unifier les Modèles de Programmation
FRAMEWORK
API cohérente quelque soit le langage ou le type
dapplication
13Intégration native de XML
FRAMEWORK
.NET Framework fournit une mise en correspondance
bidirectionnelle
Concepts Applicatifs
Données
Schéma
Services
Invocation
14Composition
FRAMEWORK
ADO.NET and XML
Base Class Library
Common Language Runtime
15Common Language Runtime
FRAMEWORK
- Common Language
- Ouvert à différentes syntaxes (CLS)
- FrameWork Objet pour le développeur
- Runtime
- 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, COM1.0
16.NET Syntaxes
FRAMEWORK
- 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.
17Base Class Library
FRAMEWORK
18The big picture
FRAMEWORK
VB
C
C
Visual Studio.NET
J
Common Language Specification
ASP.NET Web Forms Web Services
Windows Forms
Soumis à LECMA
ADO.NET (Données XML)
Base Class Library
Common Language Runtime
19Sommaire
- Quest ce que .NET
- Vue densemble 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
20Common Language Runtime
CLR/Sommaire
- Objectifs
- Conception compilation
- Déploiement
- Exécution
- A propos du Garbage Collector
- Résumé
21Simplification du développement
CLR/Objectifs
- Moins d'écriture, davantage de réutilisation
- Framework étendu et homogène
- Classes et interfaces
- Disparition de toute la "plomberie"
- 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.
22Simplification et sécurisation accrue du
déploiement
CLR/Objectifs
- Aucun enregistrement, installation à zéro impact
- Déploiement avec XCOPY, téléchargement
incrémentiel - Versions côte-à-côte des composants partagés
- 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" !
23Évolutivité
CLR/Objectifs
- Des périphériques intelligents aux parcs Web
- Gestion automatique de la mémoire
- Autoconfiguration
- Paramétrage dynamique
- Pool de threads
- Gestion asynchrone des communications
- Accès distant aux objets
- Événements
- Version pour périphérique intelligent
- Systèmes d'exploitation en temps réel (RTOS,
Real-Time Operating System) - Mêmes outils utilisés pour le bureau
Pour un meilleur rapport performance/coût.
24Fonctionnalité multi langage
CLR/Objectifs
- Système de type commun
- Orienté objet
- Prise en charge des langages procéduraux
- Possibilité de prise en charge des langages
fonctionnels - La CLS guide la conception du framework
- 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.
25Les langages disponibles
CLR/Objectifs
- Managed C
- Visual Basic
- C
- SmallTalk
- Oberon
- Scheme
- Mercury
- Oz
- Objective Caml
- Perl
- Python
- Cobol
- Haskell
- ML
- Jscript
- Ada
- APL
- Eiffel
- Pascal
- Fortran
26Unification des types
CLR/Objectifs
27Vue densemble
CLR/Objectifs
Base Class Library Support
Class Loader
28Common Language Runtime
CLR/Sommaire
- Objectifs
- Conception compilation
- Déploiement
- Exécution
- A propos du Garbage Collector
- Résumé
29Métadonnées
CLR/Conception compilation
- 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
30Que contiennent les métadonnées ?
CLR/Conception compilation
- Description de l'unité de déploiement (assembly)
- 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 ? - Description des types
- 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)
31Métadonnées création et utilisation
CLR/Conception compilation
Sérialisation
Réflexion
Codesource
Concepteurs
Exportateur TLB
Compilateur
Débogueur
Compilateurs
Métadonnées (et code)
Générateurde profils
Explorateurde types
Générateurde schéma
Générateur proxy
Codage XML (SDL ou SUDS)
32Les compilateurs utilisent les métadonnées
CLR/Conception compilation
- 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
33D'autres outils utilisent les métadonnées
CLR/Conception compilation
- 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
34Common Language Runtime
CLR/Sommaire
- Objectifs
- Conception compilation
- Déploiement
- Exécution
- A propos du Garbage Collector
- Résumé
35Assembly
CLR/Déploiement
- Unité de déploiement
- Un seul ou plusieurs fichiers, indépendants du
packaging - Autodescriptive par le biais des métadonnées
(manifeste) - Unité de versioning
- Stockée par le compilateur
- Stratégie par application et par ordinateur
- Amélioration de la sécurité
- 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
36Applications
CLR/Déploiement
- Les applications sont des unités configurables
- Un assembly ou plus
- Fichiers ou données spécifiques aux applications
- L'emplacement des assemblys est déterminé en
fonction de - 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
37Common Language Runtime
CLR/Sommaire
- Objectifs
- Conception compilation
- Déploiement
- Exécution
- A propos du Garbage Collector
- Résumé
38Modèle d'exécution
CLR/Exécution
VB
VC
C
IL
Codenatif
NGEN
Common Language Runtime
Compilateur JIT standard
Codenatif
39Code managé
CLR/Exécution
- 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 gestion des exceptions
- La sécurité
- La gestion automatique de la durée de vie
- Le débogage et la génération de profils
40Flux de contrôle du runtime
CLR/Exécution
Assembly
Chargeurde classes
Première référence au type
Compilateur du code IL en code natif
Supportd'exécution
Codenatifmanagé
Premier appel de méthode
Gestionnairesde code
Systèmede sécurité
Processeur
41Compilationdu code IL en code natif
CLR/Exécution
- JIT "standard"
- Génère du code natif optimisé
- Inclut une vérification du code en langage
intermédiaire (IL, Intermediate 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
42Données managées
CLR/Exécution
- 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
43Appel de code non managé
CLR/Exécution
Non managé
Codenatif
Managé
Common Language Runtime
Compilateur JIT standard
Codenatif
44Trois mécanismes
CLR/Exécution
- COM Interop
- Identité des objets conservée (IUnknown)
- Interfaces COM sélectionnées automatiquement
créées - PInvoke (Platform Invoke)
- Appel des points d'entrée DLL statiques
- IJW (It Just Works)
- Pas de marshaling
45Common Language Runtime
CLR/Sommaire
- Objectifs
- Conception compilation
- Déploiement
- Exécution
- A propos du Garbage Collector
- Résumé
46Common Language Runtime
CLR/Sommaire
- Objectifs
- Conception compilation
- Déploiement
- Exécution
- A propos du Garbage Collector
- Résumé
47Résumé
CLR/Résumé
- Simplification...
- Du développement, du déploiement et de
l'administration - Code 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é
- Services COM, COM 1.0, Microsoft Win32, vos
DLL - Évolutivité des périphériques intelligents aux
parcs Web
48Common 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 à lexécution
- Interop totale
- Un peu de code
49C IL
- Utilisation du désassembleur ILDASM pour
retrouver le code IL dun assembly (exe ou dll). - -gt Il existe des projets plus ou moins évolués de
désassembleur IL -gt C - -gt Et donc des obfuscateurs .NET
50Garbage Collector
CLR/GC
- Managed Heap (tas managé)
- Créer au démarrage du process
- ( heap dédié aux larges object, gt 20000 bytes)
- Réservation dune zone contiguë
- Gestion dun pointeur sur le prochain
NextObjPtr
- Aussi rapide quune 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
Le managed heap connaît a tout moment le type
dun objet
51Garbage Collector
CLR/GC
- Optimisation par Gestion de Générations
- Postulats
- 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 - Rechercher a regrouper les objets
- 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
52Garbage Collector
CLR/GC
Allocation dobjets
Déréférencement
Mark
Compact
Nouvelle allocation dobjets
53Garbage 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 sintéresse
quaux générations qui permettront de satisfaire
les besoins immédiats en allocation mémoire - Aucun moyen programmatique dinhiber 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)
54Sommaire
- Quest ce que .NET
- Vue densemble du Framework .NET
- Le Common Language Runtime
- C et VB.NET
- Visual Studio .NET
- ASP.NET
- ADO.NET et XML
55C et VB.NET
Langages/Sommaire
- VB .NET Les nouveautés
- C .NET Bref aperçu
56Le langage VB .NET
Langages/Nouveautés VB
- Langage réellement objet
- Support de lhéritage
- Support du multi-threading
- Création de services NT
- Extension .vb
- Compilateur vbc.exe
57La syntaxe VB .NET (1)
Langages/Nouveautés VB
- Propriété
- Déclaration de propriété (read-only ou
write-only possible) - Mot-clé Property
- Constructeurs
- Déclaration dun constructeur
- Utilisation dune classe implémentant un
constructeur - Mot-clé New
- Overloading
- Possibilité de fournir plusieurs signatures à une
même méthode - Héritage
- Héritage dune autre classe (multi langage)
- Mot-clés Inherits Mybase
- Overriding
- Modification du comportement dune méthode dune
classe dont on hérite - Mot-clé Overrides Overridable
58La syntaxe VB .NET (2)
Langages/Nouveautés VB
- Events
- Permet la communication entre classes
- Principe dabonnement
- Mot-clés Event RaiseEvent AddHandler
Handles - Exemple
- Gestion derreur
- Gestion par exception
- On oublie les On error GOTO
- Mot-clés Try catch throw
Le client s'abonne à l'événement NouveauCours
Client
Le serveur notifie le client à chaque nouvelle
quotation
59C et VB.NET
Langages/Sommaire
- VB .NET Les nouveautés
- C .NET Bref aperçu
60C - La syntaxe
Langages/C
- 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 à lECMA
61C et le framework
Langages/C
- 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
62C.NET La base en C
Langages/C
63C.NET La base en C
Langages/C
64C.NET La base en C
Langages/C
65C.NET La base en C
Langages/C
66C.NET La base en C
Langages/C
67C.NET La base en C
Langages/C
68C.NET La base en C
Langages/C
69C.NET La base en C
Langages/C
70C.NET La base en C
Langages/C
71Langages/C
72C.NET La base en C
Langages/C
73Langages/C
74Sommaire
- Quest ce que .NET
- Vue densemble du Framework .NET
- Le Common Language Runtime
- C et VB.NET
- Visual Studio .NET
- ASP.NET
- ADO.NET et XML
75Visual Studio .NET
VS .NET/Sommaire
- 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 lenvironnement
- 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?scidkb
FR324775
76(No Transcript)
77(No Transcript)
78VISUAL STUDIO 2005
79PAUSE
80Sommaire
- Quest ce que .NET
- Vue densemble du Framework .NET
- Le Common Language Runtime
- C et VB.NET
- Visual Studio .NET
- ASP.NET
- ADO.NET et XML
81ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
82Objectifs (1)
ASP .NET/Introduction
- Amélioration des performances
- code compilé, services de mises en cache
- Prise en charge d'un outil de haute tenue
- IDE WYSIWYG, déploiement automatique
- Puissance et souplesse
- basé sur la plateforme CLR, multi langage
- Simplicité
- 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
83Objectifs (2)
ASP .NET/Introduction
- Évolutivité et disponibilité
- processus supervisés et managés par le runtime de
ASP.NET (remplacement automatique si pb) - Personnalisation et extensibilité
- possibilité d'étendre ou de remplacer n'importe
quel sous-composant du runtime de ASP.NET - Sécurité
- l'authentification Windows intégrée
- configuration par application
84ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
85Web Forms .NET ???
ASP .NET/Web Forms
- 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.
86Première page Web Forms
ASP .NET/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 dASP.NET en
une classe .NET (cette instance compilée est
réutilisée par la suite) - Création à partir dun simple fichier HTML
- Démo (demo1.aspx)
87Blocs de restitution ltgt ASP
ASP .NET/Web Forms
- 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)
88Contrôles serveur ASP.NET
ASP .NET/Web Forms
- En plus (remplacement) des blocs de codes lt gt
- 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 ltinput type"hidden"gt -
- Prise en charge de contrôles personnalisés plus
riche (voir ltaspadrotatorgt ou ltaspcalendargt) - Démo (control.aspx)
89Gestion des événements
ASP .NET/Web Forms
- 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)
90Contrôles serveur personnalisés
ASP .NET/Web Forms
- 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
91Validation de formulaires
ASP .NET/Web Forms
- 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)
92Méthode code-behind
ASP .NET/Web Forms
- 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)
93Données et liaison de données
ASP .NET/Web Forms
- 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
94Résumé
ASP .NET/Web Forms
- 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.
95ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
96Services Web .NET
ASP .NET/Services Web
- 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
lattribut WebMethod en C, ltWebMethod()gt 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 linterop(types communs, tableau,
encoding) - Démo
97TP
98ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
99Définition
ASP .NET/Applications Web
- Cest 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. - Sexécute dans un domaine d'application .NET
Framework unique - Garantit lisolation des classes et des variables
statiques - Pool d'instances de HttpApplication géré par ASP
.NET durant la vie de lapplication. Une instance
assignée automatiquement à chaque requète HTTP.
100Création
ASP .NET/Applications Web
- Dans un répertoire virtuel de serveur web.
- Simple copie dau moins un fichier .aspx dans le
répertoire. - Automatique depuis VS .NET lors de la création
dun projet de type Site web
101Durée de vie d'une application
ASP .NET/Applications Web
- Créée lors du lancement initial d'une demande au
serveur - Création dun pool dinstance 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é
102Utilisation du fichier Global.asax
ASP .NET/Applications Web
- Situé à la racine de l'arborescence du répertoire
virtuel de lapplication 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
lapplication. Attention ce nest plus le cas
avec VS 2005. Privilégiez la création dune
classe MySettings qui contiendra ces
variables. - Démo
103Remarque sur les threads multiples
ASP .NET/Applications Web
- ASP.NET traite les demandes simultanément et
plusieurs threads peuvent accéder à l'objet
Application attention en cas dutilisation
dobjets avec une portée dapplication ! - Exemple dangereux
- lt
- Application("counter") CType(Application("counte
r") 1, Int32) - gt
- Code thread-safe
- lt
- Application.Lock()
- Application("counter") CType(Application("counte
r") 1, Int32) - Application.UnLock()
- gt
104Résumé
ASP .NET/Applications Web
- 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,
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. - 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.
105ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
106Services de cache
ASP .NET/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
107Mise en cache de sortie
ASP .NET/Cache
- Pour mettre la totalité dune 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
- lt_at_ OutputCache Duration"60" VaryByParam"none"
gt - lt_at_ OutputCache Duration"60" VaryByParam"state"
gt
108Mise en cache par fragment
ASP .NET/Cache
- Mise en cache des parties du contenu d'une page.
- Les parties à mettre en cache doivent être
désignée au moyen dun contrôle utilisateur avant
de les marquer pour la mise en cache à l'aide de
la directive _at_ OutputCache. - Exemple
- lt_at_ Register TagPrefix"Acme" TagName"Menu"
Src"Menu.ascx" gt - lthtmlgt ltbodygt
- ltAcmeMenu Category"LeftMenu" runatserver/gt
- Hi, the time is now ltNowgt
- ltAcmeMenu Category"RightMenu" runatserver/gt
- lt/bodygt lt/htmlgt
- lt_at_ OutputCache Duration"120" VaryByParam"none"
gt - ltscript language"VB" runatservergt
-
- lt/scriptgt
- ltaspTextBox id"MyMenu" runatserver/gt
-
109Mise en cache de données
ASP .NET/Cache
- 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 ltgt Null Then
- DisplayData(myValue)
- End If
110ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
111Vue densemble
ASP .NET/configuration
- 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 dune 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.
112Format du fichier de configuration
ASP .NET/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\mac
hine.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
113Sections de configuration standard
ASP .NET/configuration
lthttpModulesgt Responsable de la configuration des modules HTTP au sein d'une application. Parmi leurs utilisations courantes, citons la sécurité et la connexion.
lthttpHandlersgt Responsable du mappage des URL entrantes à des classes IHttpHandler
ltsessionStategt Responsable de la configuration du module HTTP d'état de la session.
ltglobalizationgt Responsable de la configuration des paramètres de globalisation d'une application.
ltcompilationgt Responsable de tous les paramètres de compilation utilisés par ASP.NET.
lttracegt Responsable de la configuration du service de suivi ASP.NET.
ltprocessModelgt Responsable de la configuration des paramètres du modèle de processus ASP.NET sur les serveurs Web IIS.
ltbrowserCapsgt Responsable du contrôle des paramètres du composant Browser Capabilities.
114Utilisation des param. d'application
ASP .NET/configuration
- 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
- ltconfigurationgt
- ltappSettingsgt
- ltadd key"WSURL" value"http//localhost/WSTP/Se
rvice1.asmx"/gt - lt/appSettingsgt
- lt!-- etc --gt
- lt/configurationgt
- Extraction
- String wsurl ConfigurationSettings.AppSettings("
WSURL") - Démo
115ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
116Arborescence
ASP .NET/Déploiement
- 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.
117Assemblys
ASP .NET/Déploiement
- Unité de déploiement des classes dans le Common
Language Runtime. - 1 projet Visual Studio.NET 1 assembly .NET
Framework 1 DLL physique - Déploiement par simple copie (!)
- dans le cache dassembly global (pour du code
partagé) - ou local (pour le code propre à une application
sécurité et facilité du versionning).
Sous-repertoire /bin par défaut.
118Démarrage d'une application
ASP .NET/Déploiement
- 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
dassembly. - Possibilité de supprimer, remplacer, renommer à
tout moment un assembly. - Detection automatique par le CLR des
modifications ? prises en compte sans redémarrer
le serveur
119ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
120Authentification et autorisation
ASP .NET/Securité
- 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 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é dacceder dans le code à lobjet
WindowsPrincipal - Vérification dun rôle,
121Configuration
ASP .NET/Securité
- Specification dans web.config du type
dauthentification à mettre en place - possibilité None, Windows, Passport, Forms
- exemple ltauthentication mode"Forms"/gt
- Autorisation des utilisateurs et des rôles dans
web.config - éléments "allow", "deny" avec attributs "users",
"roles" - liste dutilisateurs ou de rôles possibles
- test sur la méthod HTTP avec lattribut "verb"
- Utilisateurs spéciaux
- ? utilisateur non authentifié
- tous les utilisateurs
- exemple ltauthorizationgt
- ltallow verb"POST" users"john,mary"gt
- ltallow verb"POST" roles"Admins"gt
- ltdeny verb"POST" users""gt
- ltallow verb"GET" users""gt
- lt/authorizationgt
122ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
123Vue densemble
ASP .NET/Localisation
- 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 lextérieur). - Prise en charge de la localisation
- propriétés CurrentCulture de la classe
CultureInfo - Routines de mises en formes pour laffichage de
nombres, devises, dates, - Démo
- Paramètres de configuration
- Dans fichier web.config
- Dans la directive _at_Page
ltconfigurationgt ltsystem.webgt
ltglobalization fileEncoding"utf-8"
requestEncoding"utf-8" responseEncoding"utf-8"
culture"en-US" /gt lt/system.webgt lt/con
figurationgt
lt_at_Page Culture"fr-FR" UICulture"fr-FR"
ResponseEncoding"utf-8"gt
124ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
125Traçage au niveau de la page
ASP .NET/Traçage
- 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é.
126Traçage au niveau de lappli.
ASP .NET/Traçage
- 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.
127ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
128Déboguage
ASP .NET/ Déboguage
- Puissants outils de déboguage intégré à Visual
Studio .NET - Démo
129ASP .NET
ASP .NET/Sommaire
- Introduction
- Web Forms .NET
- Services Web .NET
- Application Web .NET
- Service de cache
- Configuration
- Déploiement
- Sécurité
- Localisation
- Traçage
- Déboguage
- Performance
130Vue densemble des performances
ASP .NET/ Performance
- 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 juste-à-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 dexécution durée de traitement d'une
demande - Evolutivité capacité de sadapter aux
ressources
131Conseils (1)
ASP .NET/ Performance
- Désactivez l'état de session s'il n'est pas
utilisé - Mode Read-Only possible
- Évitez les allers-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 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 !
132Conseils (2)
ASP .NET/ Performance
- Ne vous basez pas sur des exceptions dans votre
code - Utilisez la liaison anticipée dans du code Visual
Basic - lt_at_ Page Language"VB" Strict"true" gt
- Utilisez SqlDataReader pour un curseur de données
en avant et en lecture seule - Meilleurs résultats que le DataSet
- N'oubliez pas de désactiver le mode débogage
Try result 100 / num Catch (e As Exception)
result 0 End
If Not (num 0) Then result 100 / num Else
result 0 End If
133Outil proposé
ASP .NET/ Performance
- WAS Web Application Stress
- Simulation de N clients HTTP
- temps de réponse
- débits
- compteurs de performances relatives à
lapplication - détecteur de goulet détranglement
134ASP.NET Request .asmx .aspx
Request .html .htm
Http Request Handling
HTTP Request
INETINFO.EXE IIS worker process
ASPNET_WP.EXE ASP.NET worker process
IIS
ISAPI Extension Manager
ASPNET_ISAPI.DLL ASP.NET ISAPI extension
ASP.NET
.htm
.aspx
ASP.DLL
Static HTML Files
CLR
COM runtime (DLLHost.EXE)
Win2k Server
135Sommaire
- Quest ce que .NET
- Vue densemble du Framework .NET
- Le Common Language Runtime
- Les objets COM
- C et VB.NET
- Visual Studio .NET
- ASP.NET
- ADO.NET et XML
136ADO .NET
ADO .NET/Sommaire
- Présentation
- Objets
- Resumé
137Définition
ADO .NET/Présentation
- 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 dXML natif au framework
- reste accessible facilement aux développeurs ADO
138Architecture dADO .NET
ADO .NET/Présentation
- 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)
139ADO Architecture 2 Modes
ADO .NET/Présentation
- Mode déconnecté
- Dataset qui cache les données sans maintien de la
connexion
- Mode Connecté
- Managed Provider
- Accès physique à la base
140Mode déconnecté
ADO .NET/Présentation
- 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 dune
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
DataBase
DataAdapters
DataSet
141Exemple darchitecture
ADO .NET/Présentation
142ADO .NET
ADO .NET/Sommaire
- Présentation
- Objets
- Resumé
143Connexions
ADO .NET/Objets
- Objets utilisés pour se connecter à une base de
donnée - 2 possibilités
- Fournisseur de donnée spécifique
- SQL Server (System.Data.SqlClient)
- Oracle Server (System.Data.OracleClient)
- Fournisseur de donnée OLE DB .NET
(System.Data.OleDb) - Pour tout type de connexion
- Exemple
public sub Run() Dim mySqlConnection as
SqlConnection mySqlConnection new
SqlConnection("serverworm databaseBankuser
idsa") try mySqlConnection.Open()
Console.WriteLine("Connexion 0 ouverte",
mySqlConnection.ConnectionString) ' Close
the connection explicitly
mySqlConnection.Close() Console.WriteLine("C
onnexion ferme. Il est important de fermer les
connexions explicitement.") catch
Console.WriteLine("Impossible d'ouvrir la
connexion 0", mySqlConnection.ConnectionString)
end try end sub
144Command
ADO .NET/Objets
- Information envoyée à une base de donnée
- Objet présenté par les classes spécifiques dun
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("serverworm
databaseBankuser idsa") mySqlCommand new
SqlCommand(insert into CUSTOMERS (NAME) values
(poil), myConnection) try
myConnection.Open() mySqlCommand.ExecuteNonQ
uery() 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
145DataReader
ADO .NET/Objets
- Objet similaire à un curseur de données
- 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("serverworm databaseBankuser
idsa") 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
146DataSet DataAdapter définitions
ADO .NET/Objets
- DataSet
- similaire à ADO Recordset (mais puissant et
toujours en mode déconnecté) - cache de donnée avec structure similaire à une BD
- Pas dinteraction 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 dINSERT,
DELETE et UPDATE pour répercuter sur la BD les
modifications du DataSet (ou methode
SqlCommandBuilder() plus coûteuse)
147DataSet DataAdapter schéma
ADO .NET/Objets
148DataSet DataAdapter exemples
ADO .NET/Objets
Public Sub Run() Dim Message as String
Dim myConnection as SqlConnection Dim
mySqlDataAdapter as SqlDataAdapter Dim
workParam as SqlParameter mySqlConnection
new SqlConnection("serverworm
databaseBank