Vous êtes sur la page 1sur 122

La plateforme

Microsoft .NET

- Ce cours :
\\santiago\Cours et TPs 2005-2006\Cedrik Poirey\MS.NET

- Installation Visual Studio .NET : \\santiago\installs\all

- Compte MSN Cedrik : mrow_monaco@hotmail.com


Sommaire
 Qu’est ce que .NET
 Vue d’ensemble du Framework .NET
 Le Common Language Runtime
 C# et VB.NET
 Visual Studio .NET
 ASP.NET
 ADO.NET et XML
.NET ???

Historique 2000
XML
Web Services

1995
1990 Internet
GUI
1981
PC Visual
IE, IIS Studio
Visual Studio
Windows .NET
Visual BASIC
MS-DOS
BASIC
.NET ???

Visual Studio.NET, .NET Enterprise


.NET Framework Servers

Expérience
.NET Services Utilisateur
.NET Devices,
.NET ???

La plate forme .NET


PC &
périphériques

VisualStudio.NET
.NET Framework
Experiences
utilisateur

Web services Authentication


Storage
& .NET
MyServices Notification

Server 2000
2001 Server
Center 2000

Server 2000
Server 2000

SQL Server

Information
ISA Server
Application

Commerce

Integration
Exchange
BizTalk

Mobile
2000
2000
2000

Host

Serveurs
Enterprise Servers
Windows 2000 Server
.NET ???

.NET Clients

 Windows-powered
 Supporte XML et les services Web
 Fonctionne en autonome ou en
mode connecté
Sommaire
 Qu’est ce que .NET
 Vue d’ensemble du Framework .NET
 Le Common Language Runtime
 C# et VB.NET
 Visual Studio .NET
 ASP.NET
 ADO.NET et XML
FRAMEWORK
Vue d’ensemble

Web Rich
Services Clients

Power & Mobile


Simplicity Devices
Components
Security
Standard Transactions Web
Protocols XML Browsers
Abilities

XML Any
Database
Relational Access
FRAMEWORK
Objectifs
 Intégration de l’existant
 Multiples langages de programmation (vingtaine)
 Interopérabilité COM
 Compatibilité « side by side » (2 versions d’un même composant)
 Développement d’applications simplifié
 Modèle de programmation unifié
 Elever le niveau d’abstraction (=>modèle objet)
 classe, interface, héritage, propriété, event, constructor, exception…
 Elimination complète de la plomberie COM
 Bibliothèque de classe riche et extensible
 Intégration native des standards Web
 Environnement d’exécution robuste et sécurisé
 Code managé: (GC, Type Safe, Self-configuring, dynamically
tuning)
 Runtime Security (unification du mode de traitement des erreurs)
 Déploiement et administration simplifiés
 Assemblies (versioning, securité, evolution des DLLs)
 Installation Zero-Impact (Xcopy, pas d’enregistrement)
FRAMEWORK

Unifier les Modèles de Programmation


API cohérente quelque soit le langage ou le type d’application

.NET Framework
RAD, Héritage, Stateless,
Composition, Contrôle, Mixe de code dans
Delegation performance Des pages HTML

VB Forms MFC/ATL ASP

Windows API
FRAMEWORK

Intégration native de XML


.NET Framework fournit une mise en
Concepts
correspondance bidirectionnelle
Applicatifs Web Framework

Données XML Objets

Schéma XSD Classes

Services WSDL Méthodes

Invocation SOAP Appels


FRAMEWORK
Composition

ASP.NET Windows
Web Forms Web Services Forms

ADO.NET and XML

Base Class Library

Common Language Runtime


FRAMEWORK

Common Language Runtime

 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, COM+1.0
FRAMEWORK

.NET Syntaxes

VB C++ C# J# …

Common Language Specification

 La plate-forme .Net est indépendante du langage


 Tous les langages accèdent aux services fournis par la CLR
 Commun Langage Spécification (CLS)
 Spécification d’écriture des compilateurs « syntaxiques »
 Chaque langage utilise et étend le framework .Net
 Les langages .Net sont interopérables.
FRAMEWORK
Base Class Library
System.Web System.WinForms
Services UI Design ComponentModel
Description HtmlControls
Discovery WebControls
Protocols System.Drawing
Caching Security Drawing2D Printing
Configuration SessionState Imaging Text

System.Data System.Xml
ADO SQL XSLT Serialization
Design SQLTypes XPath

System

Collections IO Security Runtime


Configuration Net ServiceProcess InteropServices

Diagnostics Reflection Text Remoting

Globalization Resources Threading Serialization


FRAMEWORK
The big picture

VB C++ C# J# …

Common Language Specification

Visual Studio.NET
ASP.NET
Web Forms & Windows Forms
Web Services
ADO.NET
Soumis
(Données &àXML)
L’ECMA
Base Class Library

Common Language Runtime


Sommaire
 Qu’est ce que .NET
 Vue d’ensemble du Framework .NET
 Le Common Language Runtime
 Webcast
 Un peu de code
 GC
 C# et VB.NET
 Visual Studio .NET
 ASP.NET
 ADO.NET et XML
CLR/Conception & compilation

Que contiennent les métadonnées ?

 Description de l'unité de déploiement (assembly)


 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)
CLR/Conception & compilation

Métadonnées : création et
utilisation
Sérialisation Code Réflexion
source
Exportateur TLB Concepteurs
Compilateur
Compilateurs Débogueur

Explorateur Métadonnées Générateur


de types (et code) de profils

Générateur Générateur proxy


de schéma Codage XML
(SDL ou SUDS)
CLR/Conception & compilation

Les compilateurs utilisent les


métadonnées

 Pour l'importation de types de données interlangages


 Émettent des métadonnées dans le code de sortie
 Décrivent les types définis et utilisés
 Enregistrent les assemblys externes référencés
 Enregistrent les informations de version
 Les attributs personnalisés peuvent être utilisés
 Obsolète
 Conformité CLS
 Compilés pour le déboguage
 Marqueurs spécifiques au langage
CLR/Conception & compilation

D'autres outils utilisent les


métadonnées

 Explorateurs de types et d'objets


 Classes de réflexion
 Concepteurs
 Importateur et exportateur TLB
 Outils de documentation
 Débogueurs et générateurs de profils
CLR/Exécution
Flux de contrôle du runtime

Chargeur
Assembly
de classes
Première
référence
Compilateur du code
au type
IL en code natif
Support
d'exécution
Premier
Code appel de
Gestionnaires natif méthode
de code managé

Système
de sécurité Processeur
C# & IL
 Utilisation du désassembleur ILDASM pour retrouver le
code IL d’un assembly (exe ou dll).

 -> Il existe des projets plus ou moins évolués de


désassembleur IL -> C#

 -> Et donc des obfuscateurs .NET


CLR/GC

Garbage Collector
 Managed Heap (tas managé)
 Créer au démarrage du process
 ( + heap dédié aux larges object, > 20000 bytes)
 Réservation d’une zone contiguë
 Gestion d’un pointeur sur le prochain : « NextObjPtr »

Managed
Heap
~Aussi rapide qu’une allocation « Stack »
NextObjPtr • Incrémenter le pointeur de heap
• Copie du buffer et appel constructeur
Objet C
Objet B
Objet A En fin de heap :
• Allocation/réservation (win32)
Le managed heap connaît a tout • Garbage Collection
moment le type d’un objet • Travail par génération pour limiter le travail
CLR/GC

Garbage Collector
 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 »
CLR/GC

Garbage Collector

Generation 1 Generation 0
Allocation d’objets

Déréférencement

Mark

Compact

Nouvelle allocation d’objets


Garbage Collector
 La génération 2 est l’étape ultime du cycle de collecte des
objets .NET

 Un cycle de collecte ne se déclenche que lorsque la


génération 0 est pleine, et ne s’intéresse qu’aux
générations qui permettront de satisfaire les besoins
immédiats en allocation mémoire

 Aucun moyen programmatique d’inhiber le GC

 On peut forcer le déclenchement du GC :


System.GC.Collect() ou System.GC.Collect(n)
(pour les tâches qui crée des objets et qui ne doivent pas
être interrompue)
Sommaire
 Qu’est ce que .NET
 Vue d’ensemble du Framework .NET
 Le Common Language Runtime
 C# et VB.NET
 Visual Studio .NET
 ASP.NET
 ADO.NET et XML
Langages/Sommaire

C# et VB.NET
 VB .NET – Les nouveautés
 C# .NET – Bref aperçu
Langages/Nouveautés VB

Le langage VB .NET

 Langage réellement objet


 Support de l’héritage
 Support du multi-threading
 Création de services NT
 Extension : .vb
 Compilateur : vbc.exe
Langages/Nouveautés VB

La syntaxe VB .NET (1)


 Propriété
 Déclaration de propriété («read-only» ou «write-only» possible)
 Mot-clé : Property
 Constructeurs
 Déclaration d’un constructeur
 Utilisation d’une classe implémentant un constructeur
 Mot-clé : New
 Overloading
 Possibilité de fournir plusieurs signatures à une même méthode
 Héritage
 Héritage d’une autre classe (multi langage)
 Mot-clés : Inherits ; Mybase
 Overriding
 Modification du comportement d’une méthode d’une classe dont on hérite
 Mot-clé : Overrides ; Overridable
Langages/Nouveautés VB

La syntaxe VB .NET (2)


 Events
 Permet la communication entre classes
 Principe d’abonnement
 Mot-clés : Event ; RaiseEvent ; AddHandler ; Handles
 Exemple :

Le client s'abonne à l'événement NouveauCours

Le client déclenche l'acquisition par Demarrer()


Client Serveur
Quotation

Le serveur notifie le client à chaque nouvelle quotation

 Gestion d’erreur
 Gestion par exception
 On oublie les «On error GOTO»
 Mot-clés : Try ; catch ; throw
Langages/Sommaire

C# et VB.NET
 VB .NET – Les nouveautés
 C# .NET – Bref aperçu
Langages/C#

C# - La syntaxe

 Le meilleur du C++ et de VB

 Développement RAD grâce à Visual Studio.Net

 Langage utilisé à + de 80% pour développer le .Net


Framework

 Soumis à l’ECMA
Langages/C#

C# et le framework

 C#, comme tous les langages s'appuyant sur la


plateforme .Net, peut bénéficier de tous les services offerts
par le .NET Framework.

 Il est impératif de regarder dans le détail les services


proposés par ce framework
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#

C#.NET – La base en C#
Langages/C#
Langages/C#

C#.NET – La base en C#
Langages/C#
Sommaire
 Qu’est ce que .NET
 Vue d’ensemble du Framework .NET
 Le Common Language Runtime
 C# et VB.NET
 Visual Studio .NET
 ASP.NET
 ADO.NET et XML
VS .NET/Sommaire

Visual Studio .NET


 Evolution de Visual Basic et Visual C++
 IDE unifié pour les langages .NET (C#, VB, C++, J#)
 Simplification des procédures de déboguage
 Fonctionnalités multiples
 Personnalisation complète de l’environnement
 Navigateur multifonction intégré : web, ms-help, code source,
forms…
 Nombreux assistants de génération de code

 Quelques photos d’écrans…+ lien utile :


http://support.microsoft.com/default.aspx?scid=kb;FR;324775
VISUAL STUDIO 2005
PAUSE
Sommaire
 Qu’est ce que .NET
 Vue d’ensemble du Framework .NET
 Le Common Language Runtime
 C# et VB.NET
 Visual Studio .NET
 ASP.NET
 ADO.NET et XML
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Introduction

Objectifs (1)
 Amélioration des performances
 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
ASP .NET/Introduction

Objectifs (2)

 É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
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Web Forms

Web Forms .NET ???

 Modèle de programmation évolutif du CLR pour générer des


pages Web de manière dynamique.

 Evolution logique de ASP

 Améliorations :
 possibilité de créer et d'employer des contrôles d'interface
utilisateur (réutilisation, reduction de la quantité de code)
 organisation claire de la logique des pages pour éviter le code
«spaghetti»)
 une prise en charge forte du design WYSIWYG des pages.
ASP .NET/Web Forms

Première page Web Forms

 Fichier texte portant une extension de nom de fichier .aspx

 Déployée au sein d'une arborescence racine virtuelle IIS

 Compilée au 1er appel par le runtime d’ASP.NET en une


classe .NET (cette instance compilée est réutilisée par la
suite)

 Création à partir d’un simple fichier HTML

 Démo (demo1.aspx)
ASP .NET/Web Forms

Blocs de restitution <%%> ASP


 Compatibilité assurée avec les pages ASP existantes

 Moyen puissant de manipulation, mais pas «propre»


(gestion de l’état de la page entre les aller-retours au
serveur de manière personnalisée)

 Démo (demo2.aspx)
ASP .NET/Web Forms

Contrôles serveur ASP.NET


 En plus (remplacement) des blocs de codes <% %>

 Balises personnalisées ou balises HTML intrinsèques contenant


une valeur d'attribut runat="server".

 Au moment de l'exécution, ces contrôles serveur génèrent


automatiquement du contenu HTML.

 Etat de la page géré automatiquement dans un champ de


formulaire <input type="hidden">

 Prise en charge de contrôles personnalisés plus riche (voir


<asp:adrotator> ou <asp:calendar>)

 Démo (control.aspx)
ASP .NET/Web Forms

Gestion des événements

 Modèle objet exposé par chaque contrôle serveur


 propriétés
 méthodes
 Évènements

 Utilisation de ce modèle objet pour modifier proprement la


page

 Démo… (evenement.aspx)
ASP .NET/Web Forms

Validation de formulaires
 Moyen convivial, mais puissant, de détecter les erreurs
dans les formulaires d'entrée

 Affichage de messages

 Adaptation au client
 Client supérieur : JavaScript et DHTML
 Client inférieur : aller-retour sur le serveur

 Démo (validator.aspx)
ASP .NET/Web Forms

Méthode code-behind

 ASP.NET prend en charge deux méthodes de création des


pages dynamiques
 code de la page est physiquement déclaré au sein du fichier
.aspx d'origine (exemples précédents)
 méthode code-behind : permet au code de la page d'être
séparé plus proprement du contenu HTML dans un fichier
totalement distinct

 Démo (intro13.aspx)
ASP .NET/Web Forms

Données et liaison de données


 Contrôles serveurs DataGrid et DataList pour afficher
simplement des résultats de requêtes.

 DataGrid + rapide à mettre en œuvre


 DataList pour mieux controler la structure et la
présentation
 Alternative : le control Repeater qui permet de controler la
présentation au niveau du HTML

 Démo VS.NET

 Datagrid remplacé par GridView dans VS 2005


ASP .NET/Web Forms

Résumé
 Web Forms ASP.NET fournit un moyen aisé, mais puissant, de
générer une interface utilisateur Web dynamique.
 Les pages Web Forms ASP.NET peuvent cibler n'importe quel
navigateur client (aucun cookie ou bibliothèque de scripts n'est
requis).
 Les pages Web Forms ASP.NET assurent la compatibilité de la
syntaxe avec les pages ASP existantes.
 Les contrôles serveur ASP.NET permettent d'encapsuler aisément
des fonctionnalités courantes.
 ASP.NET est fourni avec 45 contrôles serveur intégrés. Les
développeurs peuvent également utiliser des contrôles créés par
des tiers.
 Les contrôles serveur ASP.NET peuvent projeter automatiquement
du code HTML de niveau supérieur et de niveau inférieur.
 Les modèles ASP.NET permettent de personnaliser aisément
l'apparence des contrôles serveur de liste.
 Les contrôles de validation ASP.NET permettent d'effectuer
aisément une validation des données déclarative sur le client ou le
serveur.
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Services Web

Services Web .NET


 Fichier texte .asmx semblable aux fichiers .aspx plus :
 importation de l'espace de noms System.Web.Services
 La classe est dérivée de la classe de base WebService
 Chaque méthode devant être exposée doit avoir l’attribut
[WebMethod] en C#, <WebMethod()> en Visual Basic ou
WebMethodAttribute en JScript, devant sa signature

 Ensemble d'outils et de code perfectionné pour l'utilisation


des services Web
 WSDL.exe : outil de ligne de commande pour créer des classes
proxy à partir de WSDL
 Assistants dans Visual Studio pour ajouter des références WEB

 A propos de l’interop…(types communs, tableau, encoding)

 Démo…
TP
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Applications Web

Définition

 C’est la somme de tous les fichiers, pages, gestionnaires,


modules et codes exécutables pouvant être appelés ou
exécutés dans la portée d'un répertoire virtuel donné (et de
ses sous-répertoires) sur un serveur d'application Web.

 S’exécute dans un domaine d'application .NET Framework


unique
 Garantit l’isolation des classes et des variables statiques

 Pool d'instances de HttpApplication géré par ASP .NET


durant la vie de l’application. Une instance assignée
automatiquement à chaque requète HTTP.
ASP .NET/Applications Web

Création

 Dans un répertoire virtuel de serveur web.

 Simple copie d’au moins un fichier .aspx dans le répertoire.

 Automatique depuis VS .NET lors de la création d’un projet


de type « Site web »
ASP .NET/Applications Web

Durée de vie d'une application


 Créée lors du lancement initial d'une demande au serveur

 Création d’un pool d’instance de HttpApplication, et


déclenchement de l’événement Application_Start

 Les instances de HttpApplication traitent les différentes


demandes jusqu’à la dernière instance, puis l’événement
Application_End est déclenché
ASP .NET/Applications Web

Utilisation du fichier Global.asax


 Situé à la racine de l'arborescence du répertoire virtuel de
l’application Web

 Permet au développeur de créer la logique liée à la gestion


des événements d'application de niveau supérieur
(Application_Start, Application_End, Session_Start,
Session_End )

 Contient toutes les variables globales de l’application.


Attention ce n’est plus le cas avec VS 2005. Privilégiez la
création d’une classe « MySettings » qui contiendra ces
variables.

 Démo
ASP .NET/Applications Web

Remarque sur les threads multiples


 ASP.NET traite les demandes simultanément et plusieurs
threads peuvent accéder à l'objet Application ; attention
en cas d’utilisation d’objets avec une portée d’application !

 Exemple dangereux :
<%
Application("counter") = CType(Application("counter") + 1, Int32)
%>

 Code thread-safe :
<%
Application.Lock()
Application("counter") = CType(Application("counter") + 1, Int32)
Application.UnLock()
%>
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Cache

Services de cache

 Pour de meilleures performances…

 Conservation des pages ou des données entre les


demandes HTTP et les réutiliser sans avoir à les recréer.

 3 types de mise en cache à disposition :


 mise en cache de sortie
 mise en cache par fragment
 mise en cache de données
ASP .NET/Cache

Mise en cache de sortie

 Pour mettre la totalité d’une page en cache.

 Pour qu'une réponse puisse être mise dans le cache de sortie,


elle doit posséder une stratégie d'expiration/validation valide
et être visible dans le cache public.

 Exemple :

<%@ OutputCache Duration="60" VaryByParam="none"%>


<%@ OutputCache Duration="60" VaryByParam="state" %>
ASP .NET/Cache

Mise en cache par fragment


 Mise en cache des parties du contenu d'une page.

 Les parties à mettre en cache doivent être désignée au


moyen d’un contrôle utilisateur avant de les marquer pour la
mise en cache à l'aide de la directive @ OutputCache.

 Exemple :
<%@ Register TagPrefix="Acme" TagName="Menu" Src="Menu.ascx" %>
<html> <body>
<Acme:Menu Category="LeftMenu" runat=server/>
Hi, the time is now: <%=Now%>
<Acme:Menu Category="RightMenu" runat=server/>
</body> </html>

<%@ OutputCache Duration="120" VaryByParam="none" %>


<script language="VB" runat=server>

</script>
<asp:TextBox id="MyMenu" runat=server/>
ASP .NET/Cache

Mise en cache de données


 Permet de mettre en cache des objets arbitraires par
programme.

 Prend en charge l'expiration et les dépendances.

 Limité à une application et sa durée de vie équivaut à celle


de l'application.

 Exemple :

‘mise en cache
Cache("mykey") = myValue

‘récupération des données


myValue = Cache("mykey")
If myValue <> Null Then
DisplayData(myValue)
End If
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/configuration

Vue d’ensemble

 Système de configuration riche et souple qui permet aux


développeurs d'associer aisément des paramètres à une
application installable et aux administrateurs de personnaliser
ces valeurs après le déploiement.

 La hiérarchie de répertoire d’une application contient les


fichiers de configuration de cette application (la configuration
est déployée par simple copie).

 Fichiers de texte brut qui peuvent être lus et écrits par les
utilisateurs du serveur (protégés par IIS).

 Les modifications apportées aux fichiers de configuration


ASP.NET sont automatiquement détectées par le système.
ASP .NET/configuration

Format du fichier de configuration

 Fichiers machine.config et web.config basés sur XML.

 Exemple : calcul des paramètres de configuration de l'URL


http://myserver/myapplication/mydir/page.aspx

 Base configuration settings for machine.


C:\WinNT\Microsoft.NET\Framework\v.2.00\config\machine.config
 Overridden by the configuration settings for the site (or the root
application). C:\inetpub\wwwroot\web.config
 Overridden by application configuration settings.
D:\MyApplication\web.config
 Overridden by subdirectory configuration settings.
D:\MyApplication\MyDir\web.config
ASP .NET/configuration

Sections de configuration standard


Responsable de la configuration des modules HTTP au sein
<httpModules> d'une application. Parmi leurs utilisations courantes, citons
la sécurité et la connexion.
Responsable du mappage des URL entrantes à des classes
<httpHandlers> IHttpHandler

Responsable de la configuration du module HTTP d'état de


<sessionState> la session.

Responsable de la configuration des paramètres de


<globalization> globalisation d'une application.

Responsable de tous les paramètres de compilation utilisés


<compilation> par ASP.NET.

Responsable de la configuration du service de suivi


<trace> ASP.NET.

Responsable de la configuration des paramètres du modèle


<processModel> de processus ASP.NET sur les serveurs Web IIS.

Responsable du contrôle des paramètres du composant


<browserCaps> Browser Capabilities.
ASP .NET/configuration

Utilisation des param. d'application

 Stockage de paramètres d'application personnalisés :


 chaînes de connexion de base de données
 des chemins d'accès de fichiers
 des URL de services Web XML distants

 Exemple :
<configuration>
<appSettings>
<add key="WSURL" value="http://localhost/WSTP/Service1.asmx"/>
</appSettings>
<!-- etc… -->
</configuration>

 Extraction :
String wsurl = ConfigurationSettings.AppSettings("WSURL") ;

Démo
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Déploiement

Arborescence

 Plusieurs applications Web sur un même ASP .NET, identifiées


à l'aide d'un préfixe d'URL unique au sein d'un site Web.

 Chaque application ASP.NET Framework exposée dans un


espace de noms d'URL est sauvegardée dans un répertoire du
système de fichiers situé sur un partage de fichiers local ou
distant.
ASP .NET/Déploiement

Démarrage d'une application


 Création manuelle d'un domaine d'application lors du
démarrage d'une nouvelle application (à la 1ère demande
cliente).

 Paramètres passés au CLR :


 Les chemins d'accès des répertoires constituant le cache
d'assembly local
 Les restrictions de sécurité de l'application

 Chargement de classe :
 Lors de la résolution de classe, ne charge jamais la DLL physique,
mais une copie de la DLL d’assembly.
 Possibilité de supprimer, remplacer, renommer à tout moment un
assembly.
 Detection automatique par le CLR des modifications  prises en
compte sans redémarrer le serveur
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Securité

Authentification et autorisation

 Authentification
 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é d’acceder dans le code à l’objet WindowsPrincipal


 Vérification d’un rôle,…
ASP .NET/Securité

Configuration
 Specification dans web.config du type d’authentification à
mettre en place
 possibilité : None, Windows, Passport, Forms
 exemple : <authentication mode="Forms"/>

 Autorisation des utilisateurs et des rôles dans web.config


 éléments "allow", "deny" avec attributs "users", "roles"
 liste d’utilisateurs ou de rôles possibles
 test sur la méthod HTTP avec l’attribut "verb"
 Utilisateurs spéciaux :
 ? = utilisateur non authentifié
 * = tous les utilisateurs
 exemple : <authorization>
<allow verb="POST" users="john,mary">
<allow verb="POST" roles="Admins">
<deny verb="POST" users="*">
<allow verb="GET" users="*">
</authorization>
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Localisation

Vue d’ensemble

 Prise en charge du codage


 en interne, ASP.NET utilise Unicode .
 ASP.NET peut être configuré de plusieurs manières pour
utiliser un codage défini (lors de dialogue vers l’extérieur).

 Prise en charge de la localisation


 propriétés CurrentCulture de la classe CultureInfo
 Routines de mises en formes pour l’affichage de nombres,
devises, dates,…
<configuration>
 Démo <system.web>
<globalization
fileEncoding="utf-8"
 Paramètres de configuration
requestEncoding="utf-8"
 Dans fichier web.config : responseEncoding="utf-8" culture="en-
 Dans la directive @Page : US"
/>
</system.web>
</configuration>
<%@Page Culture="fr-FR" UICulture="fr-FR" ResponseEncoding="utf-8"%>
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/Traçage

Traçage au niveau de la page

 Pour activer le traçage au niveau de la page, utilisez un


attribut Trace="true" dans la directive Page de niveau
supérieur.

 Le traçage au niveau de la page vous permet d'écrire des


instructions de débogage en tant que composants de la
sortie cliente d'une page. Les instructions de traçage sont
sorties à l'aide des méthodes Trace.Write et Trace.Warn,
en passant une catégorie et un message pour chaque
instruction.

 Le débogage du code peut s'exécuter de manière


conditionnelle, selon que le traçage est activé ou non pour
la page. Utilisez la propriété Trace.IsEnabled de la page
pour déterminer si le traçage est activé.
ASP .NET/Traçage

Traçage au niveau de l’appli.


 Vous pouvez activer le traçage au niveau de l'application à
l'aide d'une section « trace » du fichier de configuration
situé dans le répertoire racine de l'application.

 Le traçage au niveau de l'application active la sortie du


journal de traçage pour chaque page d'une application (à
moins qu'une directive au niveau de la page désactive
explicitement le traçage).

 Après le lancement d'une série de demandes, vous pouvez


accéder aux détails qui les concernent en demandant
« trace.axd » à partir de la racine de l'application.
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/ Déboguage

Déboguage

 Puissants outils de déboguage intégré à Visual Studio .NET

 Démo
ASP .NET/Sommaire

ASP .NET
 Introduction
 Web Forms .NET
 Services Web .NET
 Application Web .NET
 Service de cache
 Configuration
 Déploiement
 Sécurité
 Localisation
 Traçage
 Déboguage
 Performance
ASP .NET/ Performance

Conseils (1)

 Désactivez l'état de session s'il n'est pas utilisé


 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 !
ASP .NET/ Performance

Conseils (2)

 Ne vous basez pas sur des exceptions dans votre


code
Try If Not (num = 0) Then
result = 100 / num result = 100 / num
Catch (e As Exception) Else
result = 0 result = 0
End End If

 Utilisez la liaison anticipée dans du code Visual Basic


 <%@ Page Language="VB" Strict="true" %>

 Utilisez SqlDataReader pour un curseur de données


en avant et en lecture seule
 Meilleurs résultats que le DataSet

 N'oubliez pas de désactiver le mode débogage


ASP .NET/ Performance

Outil proposé

 WAS = Web Application Stress

 Simulation de N clients HTTP


 temps de réponse
 débits
 compteurs de performances relatives à l’application
 détecteur de goulet d’étranglement
 …
ASP.NE
Request
ASP.NE
Request
Http Request
TT
*.html
*.html
Request
*.htm
Request
*.htm
*.asmx
Handling
*.asmx
*.aspx
*.aspx

HTTP Request
IIS

*.htm named pipes


*.aspx
ISAPI Extension ASPNET_ISAPI.DLL
ASP.NET ISAPI extension
Manager

ASP.NET

Static HTML ASP.DLL


CLR
Files
INETINFO.EXE ASPNET_WP.EXE
IIS worker process ASP.NET worker process

COM+ runtime (DLLHost.EXE)

Win2k Server
Sommaire
 Qu’est ce que .NET
 Vue d’ensemble du Framework .NET
 Le Common Language Runtime
 Les objets COM+
 C# et VB.NET
 Visual Studio .NET
 ASP.NET
 ADO.NET et XML
ADO .NET/Sommaire

ADO .NET
 Présentation
 Objets
 Resumé
ADO .NET/Présentation

Définition

 Ensemble de classes permettant un accès à différentes


sources de données

 Evolution par rapport à ADO


 composante essentielle du framework .NET
 propose un support optimum au modèle déconnecté
 support d’XML natif au framework
 reste accessible facilement aux développeurs ADO
ADO .NET/Présentation

Architecture d’ADO .NET

System.Data

 .SqlTypes : Ensemble de classes qui permet de faire la correspondance


avec les types de données rencontrées dans SQL Server

 .SqlClient : Ensemble de classes qui permet un accès à une source de


données de type SQL Server

 .Common : Ensemble de classes qui permet d ’implémenter son propre


fournisseur d ’accès aux données

 .OleDb : Ensemble de classes qui permet un accès à différentes sources de


données

 .OracleClient : Ensemble de classes qui permet un accès à une source de


données de type Oracle Server (distribué par Microsoft avec Visual
Studio .NET 2005)
ADO .NET/Présentation

ADO Architecture : 2 Modes

 Mode déconnecté
 Mode Connecté  Dataset qui cache les données
 Managed Provider sans maintien de la connexion
 Accès physique à la base
ADO .NET/Présentation

Mode déconnecté

 Les données sont “cachées” dans les DataSets


 Dans ce modèle on limite les allers retour vers le serveur
 Un DataSet est un cache de data issu d’une database
 Notion de “virtual data store“

 Un DataSet contient une ou plusieurs “tables”


 Les DataAdapters forment le pont entre DataSet et Database
 Ils chargent les data depuis la Database dans le DataSet
 Ils répercutent les modifications du DataSet vers la Database
selon un “batch update model”

DataSet DataAdapters DataBase


ADO .NET/Présentation

Exemple d’architecture
ADO .NET/Sommaire

ADO .NET
 Présentation
 Objets
 Resumé
ADO .NET/Objets

Connexions
 Objets utilisés pour se connecter à une base de donnée
 2 possibilités :
 Fournisseur de donnée spécifique
 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("server=worm; database=Bank;user id=sa")
try
mySqlConnection.Open()
Console.WriteLine("Connexion {0} ouverte", mySqlConnection.ConnectionString)
' Close the connection explicitly
mySqlConnection.Close()
Console.WriteLine("Connexion ferme. Il est important de fermer les connexions explicitement.")
catch
Console.WriteLine("Impossible d'ouvrir la connexion {0}", mySqlConnection.ConnectionString)
end try
end sub
ADO .NET/Objets

Command
 Information envoyée à une base de donnée
 Objet présenté par les classes spécifiques d’un fournisseur (ex:
SqlCommand)
 Type : INSERT, SELECT, UPDATE, DELETE, Appel de
procédures stockées,…
 Exemple :
public sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlCommand as SqlCommand
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
mySqlCommand = new SqlCommand(“insert into CUSTOMERS (NAME) values (‘poil’)”, myConnection)
try
myConnection.Open()
mySqlCommand.ExecuteNonQuery()
Message = "Nouvel enregistrement dans la table Customers de Bank.« 
myConnection.Close()
catch myException as Exception
Message= "Impossible d'inserer l'enregistrement: " + myException.ToString()
end try
Console.Write(Message)
end sub
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
données hiérarchiques
 Exemple :
public sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlCommand as SqlCommand
Dim myReader as SqlDataReader
mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")
mySqlCommand = new SqlCommand(“select * from CUSTOMERS”, myConnection)
try
myConnection.Open()
myReader = mySqlCommand.ExecuteReader()
do while (myReader.Read())
Console.Write(myReader("CustomerID").ToString())
loop
myConnection.Close()
catch myException as Exception

end try
end sub
ADO .NET/Objets

DataSet & DataAdapter : définitions

 DataSet :
 similaire à ADO Recordset (mais + puissant et toujours en mode
déconnecté)
 cache de donnée avec structure similaire à une BD
 Pas d’interaction directe avec la source de données
 Nombreuses caractéristiques XML

 DataAdapter :
 «pont» entre le DataSet et la source de données
 mise à jour de la BD à partir du DataSet (méthode update)
 Définition explicite des commandes d’INSERT, DELETE et UPDATE
pour répercuter sur la BD les modifications du DataSet (ou
methode SqlCommandBuilder() plus coûteuse)
ADO .NET/Objets

DataSet & DataAdapter : schéma


ADO .NET/Objets

DataSet & DataAdapter : exemples


Public Sub Run()
Dim Message as String
Dim myConnection as SqlConnection
Dim mySqlDataAdapter as SqlDataAdapter
Dim workParam as SqlParameter

mySqlConnection = new SqlConnection("server=worm; database=Bank;user id=sa")


mySqlDataAdapter = new SqlDataAdapter("Select * from CUSTOMERS", myConnection)

' Build the insert Command


mySqlDataAdapter.InsertCommand = new SqlCommand(“insert into CUSTOMERS (NAME) values
(@NAME)”, myConnection)
workParam = mySqlDataAdapter.InsertCommand.Parameters.Add("@NAME", SqlDbType.VarChar, 50)
workParam.SourceColumn = “NAME"
workParam.SourceVersion = DataRowVersion.Current

' Build the delete Command


mySqlDataAdapter.DeleteCommand = new SqlCommand(“delete drom CUSTOMERS where
NAME=@NAME”, myConnection)
workParam = mySqlDataAdapter.DeleteCommand.Parameters.Add("@NAME", SqlDbType.VarChar, 50)
workParam.SourceColumn = “NAME"
workParam.SourceVersion = DataRowVersion.Current

‘No update command in this case


‘….
ADO .NET/Objets

DataSet & DataAdapter : exemples


‘…suite

Dim myDataSet as DataSet


myDataSet = new DataSet()

mySqlDataAdapter.Fill(myDataSet, "Region")

‘insert
Dim myDataRow2 as DataRow
myDataRow2 = myDataSet.Tables(“CUSTOMERS").NewRow()
myDataRow2(“NAME“) = “poil”
myDataSet.Tables("Region").Rows.Add(myDataRow2)

try
mySqlDataAdapter.Update(myDataSet, "Region")
Console.Write("Mise jour réussie du DataSet !")
catch e as Exception
Console.Write(e.ToString())
end try
end sub
ADO .NET/Sommaire

ADO .NET
 Présentation
 Objets
 Resumé
ADO .NET/Résumé

Résumé
 ADO.NET est la nouvelle évolution de ADO pour le .Net Framework.
 ADO.NET a été créé en mettant l'accent sur les caractéristiques
multicouches, sans état et XML au premier plan. Deux nouveaux
objets, les DataSet et DataAdapter, ont été introduits pour ces
scénarios.
 ADO.NET peut être utilisé pour obtenir des données à partir d'un flux,
ou d'enregistrer des données dans un cache pour effectuer des
modifications.
 La documentation contient de nombreuses autres informations sur
ADO.NET.
 N'oubliez pas que vous pouvez exécuter une commande directement
sur la base de données pour effectuer des insertions, des mises à jour
et des suppressions. Il n'est pas nécessaire de placer les données dans
un DataSet avant de pouvoir insérer, mettre à jour ou supprimer
celles-ci.
 De plus, un DataSet peut être utilisé pour se lier aux données, se
déplacer dans les données, et naviguer dans les relations de données.
Annexe : liens utiles

 Didacticiels ASP.NET, Windows Forms + divers HOWTO :


http://fr.gotdotnet.com/quickstart/

 Programmation PocketPC :
http://www.codeppc.com/ (eVB & eVC)
http://www.codeppc.net/ (SDE)

 Site français d’utilisateur :


http://www.dotnetguru.org

 Groupes Google (http://groups.google.com)


microsoft.public.dotnet.framework

 Webcast FR (notamment la presentation du CLR)


http://support.microsoft.com/default.aspx?scid=fh;fr;pwebcst&expand=n
one&ln=fr&cid=C_7937

Vous aimerez peut-être aussi