la plateforme microsoft - freefranck.dellapina.free.fr/mbds/cedrik poirey/poirey... · asp.net web...

76
1 La plateforme La plateforme Microsoft .NET Microsoft .NET - Ce cours : Ce cours : \\santiago santiago\Cours et TPs 2005 Cours et TPs 2005-2006 2006\Cedrik Cedrik Poirey Poirey\MS.NET MS.NET - Installation Installation Visual Visual Studio .NET : Studio .NET : \\santiago santiago\installs installs\all all - Compte MSN Cedrik : Compte MSN Cedrik : mrow_monaco mrow_monaco@hotmail.com hotmail.com Sommaire Sommaire Qu’est ce que .NET Qu’est ce que .NET Vue d’ensemble du Vue d’ensemble du Framework Framework .NET .NET Le Le Common Common Language Language Runtime Runtime C# et VB.NET C# et VB.NET Visual Visual Studio .NET Studio .NET ASP.NET ASP.NET ADO.NET et XML ADO.NET et XML

Upload: others

Post on 17-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

1

La plateforme La plateforme Microsoft .NETMicrosoft .NET

-- Ce cours : Ce cours : \\\\santiagosantiago\\Cours et TPs 2005Cours et TPs 2005--20062006\\Cedrik Cedrik PoireyPoirey\\MS.NETMS.NET

-- Installation Installation VisualVisual Studio .NET : Studio .NET : \\\\santiagosantiago\\installsinstalls\\allall

-- Compte MSN Cedrik : Compte MSN Cedrik : mrow_monacomrow_monaco@@hotmail.comhotmail.com

SommaireSommaire

�� Qu’est ce que .NETQu’est ce que .NET�� Vue d’ensemble du Vue d’ensemble du FrameworkFramework .NET.NET�� Le Le CommonCommon LanguageLanguage RuntimeRuntime�� C# et VB.NETC# et VB.NET�� VisualVisual Studio .NETStudio .NET�� ASP.NETASP.NET�� ADO.NET et XMLADO.NET et XML

Page 2: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

2

HistoriqueHistorique

.NET ???.NET ???

XMLXMLWeb ServicesWeb Services

20002000

VisualVisualStudioStudio.NET.NET

IE, IISIE, IISVisual StudioVisual Studio

19901990GUIGUI

19811981PCPC

19951995InternetInternet

MSMS--DOSDOSBASICBASIC

WindowsWindowsVisual BASICVisual BASIC

Visual Studio.NET,.NET Framework

.NET ServicesExpérienceUtilisateur

.NET Devices,

.NET Enterprise Servers

.NET ???.NET ???

Page 3: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

3

La plate forme .NETLa plate forme .NET

Experiences Experiences utilisateurutilisateur

Web services Web services & .NET & .NET MyServicesMyServices

PC &PC &périphériquespériphériques

ServeursServeurs

Application

Application

Center 2000

Center 2000

Enterprise ServersEnterprise Servers

BizTalk

BizTalk

Server 2000

Server 2000

Commerce

Commerce

Server 2000

Server 2000

Exchange

Exchange

2000

2000

SQL Server

SQL Server

2000

2000

ISA Server

ISA Server

2000

2000

Mobile

Mobile

Inform

ation

Inform

ation

2001 Server

2001 Server

Host

Host

Integration

Integration

Server 2000

Server 2000

VisualS

tudio.NE

TV

isualStudio.N

ET

.NE

T F

ramew

ork.N

ET

Fram

ework

Authentication

Notification

Storage

Windows 2000 ServerWindows 2000 Server

.NET ???.NET ???

.NET Clients.NET Clients

�� WindowsWindows--poweredpowered�� SupporteSupporte XML et les services WebXML et les services Web�� FonctionneFonctionne en en autonomeautonome ouou en en

mode mode connectéconnecté

.NET ???.NET ???

Page 4: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

4

SommaireSommaire

�� Qu’est ce que .NETQu’est ce que .NET�� Vue d’ensemble du Vue d’ensemble du FrameworkFramework .NET.NET�� Le Le CommonCommon LanguageLanguage RuntimeRuntime�� C# et VB.NETC# et VB.NET�� VisualVisual Studio .NETStudio .NET�� ASP.NETASP.NET�� ADO.NET et XMLADO.NET et XML

ProtocolesProtocoles Internet Internet ouvertsouverts

SOAP, SCL, DISCO, HTTPSOAP, SCL, DISCO, HTTP

SMTP, XML, WAP, XSDSMTP, XML, WAP, XSD

SchématisationSchématisation de .NETde .NET

VotreVotre application application et et votrevotre service Webservice Web

.NET .NET FrameworkFramework

Windows®Windows® CE, CE, Me, 2000, .NETMe, 2000, .NET

Opérations

Opérations

ClientsClientsfinauxfinaux

Autres Autres applications applications utilisant utilisant

votre servicevotre service

OrchestrationOrchestration

VosVos services services internesinternes

.NET Enterprise .NET Enterprise ServersServers

Building Block Building Block ServicesServices

Services Web publicsServices Web publics

Visual Visual Studio® Studio® .NET.NET

FRAMEWORKFRAMEWORK

Page 5: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

5

Windows Services COM+

Common Language Runtime

Bibliothèque de classes de base

Données et XML

ASP .NET

FrameworkFramework, langages et outils, langages et outils

Windows Forms

Common Language Specification

VB C++® C#®V

isualStudio .N

ET

JScript® …

FRAMEWORKFRAMEWORK

VueVue d’ensembled’ensemble

Power & Power & SimplicitySimplicity

Standard Standard ProtocolsProtocols

Web Web ServicesServices

ComponentsSecurity

TransactionsXML

Abilities

Rich Rich ClientsClients

Web Web BrowsersBrowsers

Mobile Mobile DevicesDevices

XMLXML

Relational Access Relational Access

AnyAnyDatabaseDatabase

FRAMEWORKFRAMEWORK

Page 6: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

6

ObjectifsObjectifs

�� Intégration de l’existantIntégration de l’existant�� Multiples langages de programmation (vingtaine)Multiples langages de programmation (vingtaine)�� Interopérabilité COMInteropérabilité COM�� Compatibilité «Compatibilité « side by sideside by side » (2 versions d’un même composant)» (2 versions d’un même composant)

�� Développement d’applications simplifiéDéveloppement d’applications simplifié�� Modèle de programmation unifiéModèle de programmation unifié�� Elever le niveau d’abstraction (=>Elever le niveau d’abstraction (=>modèlemodèle objetobjet))

�� classe, interface, héritage, propriété, event, constructor, excclasse, interface, héritage, propriété, event, constructor, exception…eption…�� Elimination complète de la plomberie COM Elimination complète de la plomberie COM

�� Bibliothèque de classe riche et extensibleBibliothèque de classe riche et extensible�� Intégration native des standards WebIntégration native des standards Web

�� Environnement d’exécution robuste et sécuriséEnvironnement d’exécution robuste et sécurisé�� Code managé: (GC, Type Code managé: (GC, Type SafeSafe, , SelfSelf--configuring, dynamically configuring, dynamically

tuningtuning))�� Runtime Runtime SecuritySecurity (unification du mode de traitement des erreurs)(unification du mode de traitement des erreurs)

�� Déploiement et administration simplifiésDéploiement et administration simplifiés�� AssembliesAssemblies ((versioningversioning, , securitésecurité, , evolutionevolution des des DLLsDLLs))�� Installation Installation ZeroZero--ImpactImpact ((XcopyXcopy, pas d’enregistrement), pas d’enregistrement)

FRAMEWORKFRAMEWORK

Unifier les Unifier les ModèlesModèles de de ProgrammationProgrammation

Windows API

.NET Framework

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

ASP

Stateless,Mixe de code dansDes pages HTML

MFC/ATL

Héritage,Contrôle,

performance

VB Forms

RAD,Composition,

Delegation

FRAMEWORKFRAMEWORK

Page 7: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

7

Intégration native de XMLIntégration native de XML

DonnéesDonnées

SchémaSchéma

ServicesServices

InvocationInvocation

WebWeb

XMLXML

XSDXSD

WSDLWSDL

SOAPSOAP

Concepts Concepts ApplicatifsApplicatifs FrameworkFramework

ObjetsObjets

ClassesClasses

MéthodesMéthodes

AppelsAppels

.NET .NET FrameworkFramework fournit une mise en fournit une mise en correspondance bidirectionnellecorrespondance bidirectionnelle

FRAMEWORKFRAMEWORK

Common Language RuntimeCommon Language Runtime

Base Class LibraryBase Class Library

ADO.NET and XMLADO.NET and XML

ASP.NETASP.NETWeb Forms Web ServicesWeb Forms Web Services

WindowsWindowsFormsForms

CompositionCompositionFRAMEWORKFRAMEWORK

Page 8: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

8

CommonCommon LanguageLanguage RuntimeRuntime

�� CommonCommon LanguageLanguage::�� Ouvert à différentes syntaxes (CLS)Ouvert à différentes syntaxes (CLS)�� FrameWorkFrameWork Objet pour le développeurObjet pour le développeur

�� RuntimeRuntime�� Une exécution managée et contrôléeUne exécution managée et contrôlée�� ManagedManaged Code, Code, ManagedManaged MemoryMemory�� Services ( XML, DATA, WEB …)Services ( XML, DATA, WEB …)

�� Basé sur :Basé sur :�� Win32, XML, SOAPWin32, XML, SOAP�� Inter opère avec DCOM/COM, COM+1.0Inter opère avec DCOM/COM, COM+1.0

FRAMEWORKFRAMEWORK

..NET SyntaxesNET Syntaxes

�� La plateLa plate--forme .Net est indépendante du langageforme .Net est indépendante du langage�� Tous les langages accèdent aux services fournis par la CLRTous les langages accèdent aux services fournis par la CLR

�� Commun Langage Spécification (CLS)Commun Langage Spécification (CLS)�� Spécification d’écriture des compilateurs «Spécification d’écriture des compilateurs « syntaxiquessyntaxiques »»�� Chaque langage utilise et étend le Chaque langage utilise et étend le frameworkframework .Net.Net�� Les langages .Net sont Les langages .Net sont interopérablesinteropérables..

Common Language SpecificationCommon Language Specification

VBVB C++C++ C#C# J#J# ……

FRAMEWORKFRAMEWORK

Page 9: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

9

Base Class Base Class LibraryLibrary

System

Globalization

Diagnostics

Configuration

Collections

Resources

Reflection

Net

IO

Threading

Text

ServiceProcess

Security RuntimeInteropServices

Remoting

Serialization

System.Data

Design

ADO

SQLTypes

SQL

System.Xml

XPath

XSLT Serialization

System.WinForms

Design ComponentModel

System.Drawing

Imaging

Drawing2D

Text

Printing

System.Web

Configuration SessionState

Caching Security

ServicesDescription

Discovery

Protocols

UIHtmlControls

WebControls

FRAMEWORKFRAMEWORK

TheThe bigbig picturepicture

Base Class Library

Common Language Specification

Common Language Runtime

ADO.NET(Données & XML)

VB C++ C#

Visual S

tudio.NE

T

ASP.NETWeb Forms &Web Services

J# …

Windows Forms

Soumis à L’ECMA

FRAMEWORKFRAMEWORK

Page 10: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

10

SommaireSommaire

�� Qu’est ce que .NETQu’est ce que .NET�� Vue d’ensemble du Vue d’ensemble du FrameworkFramework .NET.NET�� Le Le CommonCommon LanguageLanguage RuntimeRuntime

�� WebcastWebcast�� Un peu de codeUn peu de code�� GCGC

�� C# et VB.NETC# et VB.NET�� VisualVisual Studio .NETStudio .NET�� ASP.NETASP.NET�� ADO.NET et XMLADO.NET et XML

CommonCommon LanguageLanguage RuntimeRuntime

�� ObjectifsObjectifs�� Conception & compilationConception & compilation�� DéploiementDéploiement�� ExécutionExécution�� A propos du A propos du GarbageGarbage CollectorCollector�� RésuméRésumé

CLR/SommaireCLR/Sommaire

Page 11: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

11

Simplification du développementSimplification du développement

�� Moins d'écriture, davantage de réutilisationMoins d'écriture, davantage de réutilisation�� FrameworkFramework étendu et homogèneétendu et homogène�� Classes et interfacesClasses et interfaces

�� Disparition de toute la "plomberie"Disparition de toute la "plomberie"�� MétadonnéesMétadonnées�� ProxiesProxies transparentstransparents�� Gestion de la mémoireGestion de la mémoire

�� Un ensemble d'outils de support WYSIWYG Un ensemble d'outils de support WYSIWYG non négligeablenon négligeable�� Concepteurs et assistantsConcepteurs et assistants�� Débogueurs Débogueurs �� Générateurs de profilsGénérateurs de profils

Pour une productivité accrue.Pour une productivité accrue.

CLR/ObjectifsCLR/Objectifs

Simplification et sécurisation Simplification et sécurisation accrue du déploiementaccrue du déploiement

�� Aucun enregistrement, installation à zéro impactAucun enregistrement, installation à zéro impact�� Déploiement avec XCOPY, téléchargement incrémentielDéploiement avec XCOPY, téléchargement incrémentiel

�� Versions Versions côtecôte--àà--côtecôte des composants partagésdes composants partagés�� Stockage des versions au moment de la compilationStockage des versions au moment de la compilation�� Stratégie d'administration au moment de l'exécutionStratégie d'administration au moment de l'exécution

�� Stratégie de sécurité basée sur la preuveStratégie de sécurité basée sur la preuve�� Basée sur l'identité et l'utilisateur du codeBasée sur l'identité et l'utilisateur du code�� Origine du code (emplacement)Origine du code (emplacement)�� Éditeur (clé publique)Éditeur (clé publique)

Pour enfin mettre un terme à l'"enfer des DLL"Pour enfin mettre un terme à l'"enfer des DLL" !!

CLR/ObjectifsCLR/Objectifs

Page 12: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

12

ÉvolutivitéÉvolutivité

�� Des périphériques intelligents aux parcs WebDes périphériques intelligents aux parcs Web�� Gestion automatique de la mémoireGestion automatique de la mémoire

�� AutoconfigurationAutoconfiguration�� Paramétrage dynamiqueParamétrage dynamique

�� Pool de Pool de threadsthreads�� Gestion asynchrone des communicationsGestion asynchrone des communications

�� Accès distant aux objetsAccès distant aux objets�� ÉvénementsÉvénements

�� Version pour périphérique intelligentVersion pour périphérique intelligent�� Systèmes d'exploitation en temps réel (RTOS, Systèmes d'exploitation en temps réel (RTOS, RealReal--TimeTime OperatingOperating SystemSystem))

�� Mêmes outils utilisés pour le bureauMêmes outils utilisés pour le bureau

Pour un meilleur rapport performance/coût.Pour un meilleur rapport performance/coût.

CLR/ObjectifsCLR/Objectifs

Fonctionnalité multi langageFonctionnalité multi langage

�� Système de type communSystème de type commun�� Orienté objetOrienté objet�� Prise en charge des langages procédurauxPrise en charge des langages procéduraux�� Possibilité de prise en charge des langages fonctionnelsPossibilité de prise en charge des langages fonctionnels

�� La CLS guide la conception du La CLS guide la conception du frameworkframework�� Ensemble de règles permettant une utilisation étendueEnsemble de règles permettant une utilisation étendue�� L'ensemble de la fonctionnalité .NET L'ensemble de la fonctionnalité .NET FrameworkFramework

est disponibleest disponible

�� Plus de 20Plus de 20 langages étudiéslangages étudiés�� La La plupartplupart sont des "consommateurs CLS"sont des "consommateurs CLS"�� Beaucoup étendent la CLSBeaucoup étendent la CLS

Un large éventail d'outils pour vos travaux.Un large éventail d'outils pour vos travaux.

CLR/ObjectifsCLR/Objectifs

Page 13: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

13

Les langages disponiblesLes langages disponibles�� PerlPerl�� PythonPython�� CobolCobol�� HaskellHaskell�� MLML�� JscriptJscript�� AdaAda�� APLAPL�� EiffelEiffel�� PascalPascal�� FortranFortran

ManagedManaged C++C++Visual BasicVisual BasicC#C#SmallTalkSmallTalkOberonOberonSchemeSchemeMercuryMercuryOzOzObjective Objective CamlCaml……

CLR/ObjectifsCLR/Objectifs

Unification des typesUnification des types

CLR/ObjectifsCLR/Objectifs

Page 14: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

14

Vue d’ensembleVue d’ensemble

Class Loader

IL to NativeCompilers

CodeManager

GarbageCollector

Security Engine Debug Engine

Type Checker Exception Manager

Thread Support COM Marshaler

Base Class Library Support

CLR/ObjectifsCLR/Objectifs

CommonCommon LanguageLanguage RuntimeRuntime

�� ObjectifsObjectifs�� Conception & compilationConception & compilation�� DéploiementDéploiement�� ExécutionExécution�� A propos du A propos du GarbageGarbage CollectorCollector�� RésuméRésumé

CLR/SommaireCLR/Sommaire

Page 15: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

15

MétadonnéesMétadonnées

�� Informations indépendantes du langage, Informations indépendantes du langage, et plus encoreet plus encore

�� Élément clé pour un modèle de programmation simplifiéÉlément clé pour un modèle de programmation simplifié�� Automatiquement générées par les compilateursAutomatiquement générées par les compilateurs

�� Stockées avec le code dans le fichier exécutableStockées avec le code dans le fichier exécutable�� Stockées au format binaireStockées au format binaire

�� Requises pour l'exécution (obligatoires)Requises pour l'exécution (obligatoires)�� Convertibles en et à partir du schéma XML Convertibles en et à partir du schéma XML

et des bibliothèques de types COMet des bibliothèques de types COM

CLR/Conception & compilationCLR/Conception & compilation

Que contiennent les Que contiennent les métadonnéesmétadonnées ??

�� Description de l'unité de déploiement (Description de l'unité de déploiement (assemblyassembly))�� IdentitéIdentité : nom, version, culture, [clé publique]: nom, version, culture, [clé publique]�� Quels sont les types exportésQuels sont les types exportés ??�� Quels sont les Quels sont les assemblysassemblys dont elle dépenddont elle dépend ??�� Quelles sont les autorisations de sécurité requises pour l'exécuQuelles sont les autorisations de sécurité requises pour l'exécutiontion ??

�� Description des typesDescription des types�� Nom, visibilité, classe de base, interfaces implémentéesNom, visibilité, classe de base, interfaces implémentées�� Membres (méthodes, champs, propriétés, événements, Membres (méthodes, champs, propriétés, événements,

types imbriqués)types imbriqués)

�� Attributs personnalisésAttributs personnalisés�� Définis par l'utilisateur (auteurDéfinis par l'utilisateur (auteur ?)?)�� Définis par le compilateur (Définis par le compilateur (constconst) ) �� Définis par le Définis par le frameworkframework ((DllImportDllImport, , ObsoleteObsolete))

CLR/Conception & compilationCLR/Conception & compilation

Page 16: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

16

MétadonnéesMétadonnées : création et : création et utilisationutilisation

MétadonnéesMétadonnées(et code)(et code)

DébogueurDébogueur

GénérateurGénérateurde schéma de schéma

GénérateurGénérateurde profilsde profils

CompilateursCompilateurs

Générateur Générateur proxyproxy

ExplorateurExplorateurde typesde types

CompilateurCompilateur

CodeCodesourcesource

Codage XMLCodage XML(SDL ou SUDS)(SDL ou SUDS)

SérialisationSérialisation

ConcepteursConcepteurs

RéflexionRéflexion

Exportateur TLBExportateur TLB

CLR/Conception & compilationCLR/Conception & compilation

Les compilateurs utilisent les Les compilateurs utilisent les métadonnéesmétadonnées

�� Pour l'importation de types de données Pour l'importation de types de données interlangagesinterlangages�� Émettent des Émettent des métadonnéesmétadonnées dans le code de sortiedans le code de sortie

�� Décrivent les types définis et utilisésDécrivent les types définis et utilisés�� Enregistrent les Enregistrent les assemblysassemblys externes référencésexternes référencés�� Enregistrent les informations de versionEnregistrent les informations de version

�� Les attributs personnalisés peuvent être utilisés Les attributs personnalisés peuvent être utilisés �� ObsolèteObsolète�� Conformité CLSConformité CLS�� Compilés pour le déboguageCompilés pour le déboguage�� Marqueurs spécifiques au langageMarqueurs spécifiques au langage

CLR/Conception & compilationCLR/Conception & compilation

Page 17: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

17

D'autres outils utilisent les D'autres outils utilisent les métadonnéesmétadonnées

�� Explorateurs de types et d'objetsExplorateurs de types et d'objets�� Classes de Classes de réflexionréflexion�� ConcepteursConcepteurs�� ImportateurImportateur et et exportateurexportateur TLBTLB�� OutilsOutils de documentationde documentation�� Débogueurs et générateurs de profilsDébogueurs et générateurs de profils

CLR/Conception & compilationCLR/Conception & compilation

CommonCommon LanguageLanguage RuntimeRuntime

�� ObjectifsObjectifs�� Conception & compilationConception & compilation�� DéploiementDéploiement�� ExécutionExécution�� A propos du A propos du GarbageGarbage CollectorCollector�� RésuméRésumé

CLR/SommaireCLR/Sommaire

Page 18: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

18

AssemblyAssembly

�� UnitéUnité de de déploiementdéploiement�� Un seul ou plusieurs fichiers, indépendants du packagingUn seul ou plusieurs fichiers, indépendants du packaging�� AutodescriptiveAutodescriptive par le biais des par le biais des métadonnéesmétadonnées (manifeste)(manifeste)

�� Unité de versioningUnité de versioning�� StockéeStockée par le par le compilateurcompilateur�� Stratégie par application et par ordinateurStratégie par application et par ordinateur

�� AméliorationAmélioration de la de la sécuritésécurité�� Des autorisations sont attribuées aux Des autorisations sont attribuées aux assemblysassemblys�� Les méthodes peuvent demander la preuve qu'une autorisation a Les méthodes peuvent demander la preuve qu'une autorisation a

été accordée à toute la chaîne d'appelété accordée à toute la chaîne d'appel

�� Les Les assemblysassemblys servent d'intermédiaires aux importations et servent d'intermédiaires aux importations et exportationsexportations�� Les types référencés sont relatifs à l'Les types référencés sont relatifs à l'assemblyassembly

CLR/DéploiementCLR/Déploiement

ApplicationsApplications

�� Les applications sont des unités configurablesLes applications sont des unités configurables�� Un assembly Un assembly ouou plusplus�� Fichiers ou données spécifiques aux applicationsFichiers ou données spécifiques aux applications

�� L'emplacement des L'emplacement des assemblysassemblys est déterminé en fonction deest déterminé en fonction de ::�� Leur nom logique (nom, éditeur, version et culture) Leur nom logique (nom, éditeur, version et culture) �� L'application qui les chargeL'application qui les charge

�� Les applications peuvent avoir des versions privées des Les applications peuvent avoir des versions privées des assemblysassemblys�� La stratégie de version peut être définie La stratégie de version peut être définie

par applicationpar application

CLR/DéploiementCLR/Déploiement

Page 19: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

19

CommonCommon LanguageLanguage RuntimeRuntime

�� ObjectifsObjectifs�� Conception & compilationConception & compilation�� DéploiementDéploiement�� ExécutionExécution�� A propos du A propos du GarbageGarbage CollectorCollector�� RésuméRésumé

CLR/SommaireCLR/Sommaire

ModèleModèle d'exécutiond'exécution

VBVB VCVC C#C# ……

ILILCodeCodenatifnatif

CompilateurCompilateurJIT standardJIT standard

CodeCodenatifnatif

NGENNGEN

Common Language RuntimeCommon Language Runtime

CLR/ExécutionCLR/Exécution

Page 20: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

20

Code Code managémanagé

�� Le code Le code managémanagé fournitfournit ::�� Les Les métadonnéesmétadonnées décrivant les donnéesdécrivant les données�� L'emplacement des références aux objets L'emplacement des références aux objets �� Les tables de gestion des exceptionsLes tables de gestion des exceptions

�� Donc, le Donc, le runtimeruntime peut fournirpeut fournir ::�� La gestion des exceptionsLa gestion des exceptions�� La sécuritéLa sécurité�� La gestion automatique de la durée de vieLa gestion automatique de la durée de vie�� Le débogage et la génération de profilsLe débogage et la génération de profils

CLR/ExécutionCLR/Exécution

Flux de contrôle du Flux de contrôle du runtimeruntime

ChargeurChargeurde classesde classes

Compilateur du code Compilateur du code IL en code natifIL en code natif

ProcesseurProcesseurSystèmeSystème

de de sécuritésécurité

GestionnairesGestionnairesde codede code

CodeCodenatifnatif

managémanagé

AssemblyAssembly

Premier Premier appelappel de de méthodeméthode

Première Première référenceréférenceau typeau type

SupportSupportd'exécutiond'exécution

CLR/ExécutionCLR/Exécution

Page 21: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

21

CompilationCompilationdu code IL en code natifdu code IL en code natif

�� JIT "standard"JIT "standard"�� Génère du code natif optimiséGénère du code natif optimisé�� Inclut une vérification du code en langage intermédiaire (IL, Inclut une vérification du code en langage intermédiaire (IL, IntermediateIntermediate LanguageLanguage))

�� Génération de code au moment de l'installation (NGEN)Génération de code au moment de l'installation (NGEN)�� Exécutée au moment de l'installationExécutée au moment de l'installation�� Réduit le temps de démarrageRéduit le temps de démarrage�� Vérifications de version du code natif et retour Vérifications de version du code natif et retour

au au runtimeruntime JIT en cas d'erreurJIT en cas d'erreur

CLR/ExécutionCLR/Exécution

DonnéesDonnées managéesmanagées

�� Disposition fournie par le CLR pour Disposition fournie par le CLR pour gerergerer certaines parties de certaines parties de la mémoirela mémoire�� Généralement automatiqueGénéralement automatique�� Les Les métadonnéesmétadonnées peuventpeuvent spécifierspécifier ::

�� L'ordreL'ordre�� La compressionLa compression�� La disposition La disposition expliciteexplicite

�� Durée de vie gérée par le CLR (GC)Durée de vie gérée par le CLR (GC)�� JeuJeu de travail de travail compactécompacté�� DonnéesDonnées déplacéesdéplacées�� Références aux objets mises à jourRéférences aux objets mises à jour�� Erreurs de page prises en chargeErreurs de page prises en charge

CLR/ExécutionCLR/Exécution

Page 22: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

22

Appel de code non managéAppel de code non managé

CodeCodenatifnatif

CompilateurCompilateurJIT standardJIT standard

CodeCodenatifnatif

Common Language RuntimeCommon Language Runtime

Non Non managémanagé

ManagéManagé

CLR/ExécutionCLR/Exécution

TroisTrois mécanismesmécanismes

�� COM COM InteropInterop�� Identité des objets conservée (Identité des objets conservée (IUnknownIUnknown))�� Interfaces COM sélectionnées automatiquement créées Interfaces COM sélectionnées automatiquement créées

�� PInvokePInvoke ((Platform InvokePlatform Invoke))�� Appel des points d'entrée DLL statiquesAppel des points d'entrée DLL statiques

�� IJW (IJW (It Just WorksIt Just Works))�� Pas de marshalingPas de marshaling

CLR/ExécutionCLR/Exécution

Page 23: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

23

CommonCommon LanguageLanguage RuntimeRuntime

�� ObjectifsObjectifs�� Conception & compilationConception & compilation�� DéploiementDéploiement�� ExécutionExécution�� A propos du A propos du GarbageGarbage CollectorCollector�� RésuméRésumé

CLR/SommaireCLR/Sommaire

CommonCommon LanguageLanguage RuntimeRuntime

�� ObjectifsObjectifs�� Conception & compilationConception & compilation�� DéploiementDéploiement�� ExécutionExécution�� A propos du A propos du GarbageGarbage CollectorCollector�� RésuméRésumé

CLR/SommaireCLR/Sommaire

Page 24: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

24

RésuméRésumé

�� Simplification...Simplification...�� Du développement, du déploiement Du développement, du déploiement

et de l'administrationet de l'administration

�� Code Code multilangagemultilangage, sécurisé et mobile, sécurisé et mobile

�� Tout le code est compilé avant exécutionTout le code est compilé avant exécution�� Pas votre machine virtuelle conventionnellePas votre machine virtuelle conventionnelle !!

�� Interopérabilité totale avec le code non managéInteropérabilité totale avec le code non managé�� Services COM, COM+Services COM, COM+ 1.0, Microsoft Win32®, 1.0, Microsoft Win32®,

vos DLLvos DLL

�� ÉvolutivitéÉvolutivité : des périphériques intelligents : des périphériques intelligents aux parcs Webaux parcs Web

CLR/RésuméCLR/Résumé

CommonCommon LanguageLanguage RuntimeRuntime

�� Questions ? Remarques ?Questions ? Remarques ?

�� Principaux concepts :Principaux concepts :�� MétadonnéesMétadonnées�� Multi langages (héritage)Multi langages (héritage)�� Aucun enregistrement (déploiement par simple copie)Aucun enregistrement (déploiement par simple copie)�� Composants Composants sideside by by sideside�� Flux de contrôle du Flux de contrôle du runtimeruntime à l’exécutionà l’exécution�� InteropInterop totaletotale

�� Un peu de code…Un peu de code…

Page 25: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

25

C# & ILC# & IL

�� Utilisation du désassembleur ILDASM pour retrouver le code Utilisation du désassembleur ILDASM pour retrouver le code IL d’un IL d’un assemblyassembly ((exeexe ou ou dlldll).).

�� --> Il existe des projets plus ou moins évolués de > Il existe des projets plus ou moins évolués de désassembleur IL désassembleur IL --> C#> C#

�� --> Et donc des > Et donc des obfuscateursobfuscateurs .NET.NET

GarbageGarbage CollectorCollector

�� ManagedManaged HeapHeap (tas managé)(tas managé)�� Créer au démarrage du Créer au démarrage du processprocess

�� ( + ( + heapheap dédié aux larges dédié aux larges objectobject, > 20000 bytes), > 20000 bytes)�� Réservation d’une zone contiguëRéservation d’une zone contiguë

�� Gestion d’un pointeur sur le prochain : «Gestion d’un pointeur sur le prochain : « NextObjPtrNextObjPtr »»

Objet CObjet BObjet A

NextObjPtr

ManagedHeap

~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

Le managed heap connaît a tout moment le type d’un objet

CLR/GCCLR/GC

Page 26: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

26

GarbageGarbage CollectorCollector

�� Optimisation par Gestion de GénérationsOptimisation par Gestion de Générations�� Postulats :Postulats :

�� Plus les objets sont récents, plus courte est leur vie.Plus les objets sont récents, plus courte est leur vie.�� Plus un objet est vieux, plus sa vie est longue.Plus un objet est vieux, plus sa vie est longue.�� Les objets les plus récents tendent a avoir plus d’échanges et sLes objets les plus récents tendent a avoir plus d’échanges et sont ont

sollicités plus fréquemment, «sollicités plus fréquemment, « en mêmeen même » temps.» temps.�� Compacter une portion de Compacter une portion de heapheap est plus rapide que de tout est plus rapide que de tout

compactercompacter�� Rechercher a «Rechercher a « regrouperregrouper » les objets» les objets

�� Bénéficier le plus possible du cache processeurBénéficier le plus possible du cache processeur�� Limiter les accès «Limiter les accès « lointainslointains »»

�� Test sur P 200 Mhz : 1 milliseconde pour un GC de génération 0 Test sur P 200 Mhz : 1 milliseconde pour un GC de génération 0 (full GC)(full GC)

�� Objectif, «Objectif, « No more No more timetime thanthan an an ordinaryordinary page page faultfault »»

CLR/GCCLR/GC

GarbageGarbage CollectorCollector

Allocation Allocation d’objetsd’objets

DéréférencementDéréférencement

MarkMark

Compact Compact

Nouvelle allocation Nouvelle allocation d’objetsd’objets

Generation 1Generation 1 Generation 0Generation 0

CLR/GCCLR/GC

Page 27: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

27

GarbageGarbage CollectorCollector

�� La génération 2 est l’étape ultime du cycle de collecte des La génération 2 est l’étape ultime du cycle de collecte des objets .NETobjets .NET

�� Un cycle de collecte ne se déclenche que lorsque la 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ération 0 est pleine, et ne s’intéresse qu’aux générations qui permettront de satisfaire les besoins générations qui permettront de satisfaire les besoins immédiats en allocation mémoireimmédiats en allocation mémoire

�� Aucun moyen programmatique d’inhiber le GCAucun moyen programmatique d’inhiber le GC

�� On peut forcer le déclenchement du GC : On peut forcer le déclenchement du GC : System.GC.CollectSystem.GC.Collect() ou () ou System.GC.CollectSystem.GC.Collect(n)(n)(pour les tâches qui crée des objets et qui ne doivent pas (pour les tâches qui crée des objets et qui ne doivent pas être interrompue)être interrompue)

SommaireSommaire

�� Qu’est ce que .NETQu’est ce que .NET�� Vue d’ensemble du Vue d’ensemble du FrameworkFramework .NET.NET�� Le Le CommonCommon LanguageLanguage RuntimeRuntime�� C# et VB.NETC# et VB.NET�� VisualVisual Studio .NETStudio .NET�� ASP.NETASP.NET�� ADO.NET et XMLADO.NET et XML

Page 28: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

28

C# et VB.NETC# et VB.NET

�� VB .NET VB .NET –– Les nouveautésLes nouveautés�� C# .NET C# .NET –– Bref aperçuBref aperçu

Langages/SommaireLangages/Sommaire

Le langage VB .NETLe langage VB .NET

Langages/Nouveautés VBLangages/Nouveautés VB

�� Langage réellement objetLangage réellement objet�� Support de l’héritageSupport de l’héritage�� Support du Support du multimulti--threadingthreading�� Création de services NTCréation de services NT�� Extension : .Extension : .vbvb�� Compilateur : Compilateur : vbc.exevbc.exe

Page 29: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

29

La syntaxe VB .NET (1)La syntaxe VB .NET (1)Langages/Nouveautés VBLangages/Nouveautés VB

�� PropriétéPropriété�� Déclaration de propriété («Déclaration de propriété («readread--onlyonly» ou «» ou «writewrite--onlyonly» possible)» possible)�� MotMot--clé : clé : PropertyProperty

�� ConstructeursConstructeurs�� Déclaration d’un constructeurDéclaration d’un constructeur�� Utilisation d’une classe implémentant un constructeurUtilisation d’une classe implémentant un constructeur�� MotMot--clé : clé : NewNew

�� OverloadingOverloading�� Possibilité de fournir plusieurs signatures à une même méthodePossibilité de fournir plusieurs signatures à une même méthode

�� HéritageHéritage�� Héritage d’une autre classe (multi langage)Héritage d’une autre classe (multi langage)�� MotMot--clés : clés : InheritsInherits ; ; MybaseMybase

�� OverridingOverriding�� Modification du comportement d’une méthode d’une classe dont Modification du comportement d’une méthode d’une classe dont

on hériteon hérite�� MotMot--clcléé : : OverridesOverrides ; ; OverridableOverridable

La syntaxe VB .NET (2)La syntaxe VB .NET (2)�� EventsEvents

�� Permet la communication entre classesPermet la communication entre classes�� Principe d’abonnementPrincipe d’abonnement�� MotMot--clcléés : s : EventEvent ; ; RaiseEventRaiseEvent ;; AddHandlerAddHandler ;; HandlesHandles�� Exemple :Exemple :

�� Gestion d’erreurGestion d’erreur�� Gestion par exceptionGestion par exception�� On oublie les «On On oublie les «On errorerror GOTO»GOTO»�� MotMot--clés : clés : TryTry ; ; catchcatch ; ; throwthrow

Langages/Nouveautés VBLangages/Nouveautés VB

Client Serveur

Quotation

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

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

Le serveur notifie le client à chaque nouvelle quotation

Page 30: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

30

C# et VB.NETC# et VB.NET

�� VB .NET VB .NET –– Les nouveautésLes nouveautés�� C# .NET C# .NET –– Bref aperçuBref aperçu

Langages/SommaireLangages/Sommaire

C# C# -- La syntaxeLa syntaxe

�� Le meilleur du C++ et de VBLe meilleur du C++ et de VB

�� Développement RAD grâce à Développement RAD grâce à VisualVisual Studio.NetStudio.Net

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

�� Soumis à l’ECMASoumis à l’ECMA

Langages/C#Langages/C#

Page 31: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

31

C# et le C# et le frameworkframework

�� C#, comme tous les langages s'appuyant sur la plateforme C#, comme tous les langages s'appuyant sur la plateforme .Net, peut bénéficier de tous les services offerts par le .NET .Net, peut bénéficier de tous les services offerts par le .NET Framework.Framework.

�� Il est impératif de regarder dans le détail les services Il est impératif de regarder dans le détail les services proposés par ce proposés par ce frameworkframework

Langages/C#Langages/C#

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

Langages/C#Langages/C#

Page 32: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

32

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

Langages/C#Langages/C#

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

Langages/C#Langages/C#

Page 33: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

33

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

Langages/C#Langages/C#

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

Langages/C#Langages/C#

Page 34: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

34

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

Langages/C#Langages/C#

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

Langages/C#Langages/C#

Page 35: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

35

Langages/C#Langages/C#

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

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

Langages/C#Langages/C#

Page 36: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

36

Langages/C#Langages/C#

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

Langages/C#Langages/C#

Page 37: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

37

Langages/C#Langages/C#

SommaireSommaire

�� Qu’est ce que .NETQu’est ce que .NET�� Vue d’ensemble du Vue d’ensemble du FrameworkFramework .NET.NET�� Le Le CommonCommon LanguageLanguage RuntimeRuntime�� C# et VB.NETC# et VB.NET�� VisualVisual Studio .NETStudio .NET�� ASP.NETASP.NET�� ADO.NET et XMLADO.NET et XML

Page 38: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

38

VisualVisual Studio .NETStudio .NET

�� Evolution de Evolution de VisualVisual Basic et Basic et VisualVisual C++C++�� IDE unifié pour les langages .NET (C#, VB, C++, J#)IDE unifié pour les langages .NET (C#, VB, C++, J#)

�� Simplification des procédures de déboguageSimplification des procédures de déboguage

�� Fonctionnalités multiplesFonctionnalités multiples�� Personnalisation complète de l’environnementPersonnalisation complète de l’environnement�� Navigateur multifonction intégré : web, Navigateur multifonction intégré : web, msms--helphelp, code source, , code source,

formsforms……�� Nombreux assistants de génération de codeNombreux assistants de génération de code

�� Quelques photos d’écrans…+ lien utile :Quelques photos d’écrans…+ lien utile :http://support.microsoft.com/default.aspx?scid=kb;FR;324775http://support.microsoft.com/default.aspx?scid=kb;FR;324775

VS .NET/SommaireVS .NET/Sommaire

Page 39: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

39

VISUAL STUDIO 2005VISUAL STUDIO 2005

Page 40: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

40

PAUSEPAUSE

SommaireSommaire

�� Qu’est ce que .NETQu’est ce que .NET�� Vue d’ensemble du Vue d’ensemble du FrameworkFramework .NET.NET�� Le Le CommonCommon LanguageLanguage RuntimeRuntime�� C# et VB.NETC# et VB.NET�� VisualVisual Studio .NETStudio .NET�� ASP.NETASP.NET�� ADO.NET et XMLADO.NET et XML

Page 41: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

41

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Objectifs (1)Objectifs (1)

�� Amélioration des performancesAmélioration des performances�� code compilé, services de mises en cachecode compilé, services de mises en cache

�� Prise en charge d'un outil de haute tenuePrise en charge d'un outil de haute tenue�� IDE WYSIWYG, déploiement automatiqueIDE WYSIWYG, déploiement automatique

�� Puissance et souplessePuissance et souplesse�� basé sur la «plateforme» CLR, multi langagebasé sur la «plateforme» CLR, multi langage

�� SimplicitéSimplicité�� séparation interface/logique ; services du CLR (GC, séparation interface/logique ; services du CLR (GC, refref.).)

�� Gestion aiséeGestion aisée�� configuration hiérarchique basé sur du texteconfiguration hiérarchique basé sur du texte�� déploiement par simple copie, pas de redémarrage du serveurdéploiement par simple copie, pas de redémarrage du serveur

ASP .NET/IntroductionASP .NET/Introduction

Page 42: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

42

Objectifs (2)Objectifs (2)

�� Évolutivité et disponibilitéÉvolutivité et disponibilité�� processus supervisés et managés par le processus supervisés et managés par le runtimeruntime de ASP.NET de ASP.NET

(remplacement automatique si (remplacement automatique si pbpb))

�� Personnalisation et extensibilitéPersonnalisation et extensibilité�� possibilité d'étendre ou de remplacer n'importe quel possibilité d'étendre ou de remplacer n'importe quel soussous--

composantcomposant du du runtimeruntime de ASP.NET de ASP.NET

�� SécuritéSécurité�� l'authentification Windows intégréel'authentification Windows intégrée�� configuration par application configuration par application

ASP .NET/IntroductionASP .NET/Introduction

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Page 43: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

43

Web Web FormsForms .NET ???.NET ???

�� Modèle de programmation évolutif du CLR pour générer des Modèle de programmation évolutif du CLR pour générer des pages Web de manière dynamique.pages Web de manière dynamique.

�� Evolution logique de ASPEvolution logique de ASP

�� Améliorations :Améliorations :�� possibilité de créer et d'employer des contrôles d'interface possibilité de créer et d'employer des contrôles d'interface

utilisateur (réutilisation, reduction de la quantité de code)utilisateur (réutilisation, reduction de la quantité de code)�� organisation claire de la logique des pages pour éviter le code organisation claire de la logique des pages pour éviter le code

«spaghetti»)«spaghetti»)�� une prise en charge forte du design WYSIWYG des pages.une prise en charge forte du design WYSIWYG des pages.

ASP .NET/Web ASP .NET/Web FormsForms

Première page Web Première page Web FormsForms

�� Fichier texte portant une extension de nom de fichier .Fichier texte portant une extension de nom de fichier .aspxaspx

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

�� Compilée au 1er appel par le Compilée au 1er appel par le runtimeruntime d’d’ASP.NETASP.NET en une en une classe .NET (cette instance compilée est réutilisée par la classe .NET (cette instance compilée est réutilisée par la suite)suite)

�� Création à partir d’un simple fichier HTMLCréation à partir d’un simple fichier HTML

�� Démo (demo1.aspx)Démo (demo1.aspx)

ASP .NET/Web ASP .NET/Web FormsForms

Page 44: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

44

Blocs de restitution <%%> ASPBlocs de restitution <%%> ASP

�� Compatibilité assurée avec les pages ASP existantesCompatibilité assurée avec les pages ASP existantes

�� Moyen puissant de manipulation, mais pas «propre» Moyen puissant de manipulation, mais pas «propre» (gestion de l’état de la page entre les (gestion de l’état de la page entre les alleraller--retoursretours au au serveur de manière personnalisée)serveur de manière personnalisée)

�� Démo (demo2.aspx)Démo (demo2.aspx)

ASP .NET/Web ASP .NET/Web FormsForms

Contrôles serveur ASP.NETContrôles serveur ASP.NET

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

�� Balises personnalisées ou balises HTML intrinsèques Balises personnalisées ou balises HTML intrinsèques contenant une valeur d'attribut contenant une valeur d'attribut runatrunat="="serverserver""..

�� Au moment de l'exécution, ces contrôles serveur génèrent Au moment de l'exécution, ces contrôles serveur génèrent automatiquement du contenu HTML.automatiquement du contenu HTML.

�� Etat de la page géré automatiquement dans un champ de Etat de la page géré automatiquement dans un champ de formulaire <input type="formulaire <input type="hiddenhidden">">

�� Prise en charge de contrôles personnalisés plus riche (voir Prise en charge de contrôles personnalisés plus riche (voir <<aspasp::adrotatoradrotator> ou <> ou <aspasp::calendarcalendar>)>)

�� Démo (Démo (control.aspxcontrol.aspx))

ASP .NET/Web ASP .NET/Web FormsForms

Page 45: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

45

Gestion des événementsGestion des événements

�� Modèle objet exposé par chaque contrôle serveurModèle objet exposé par chaque contrôle serveur�� propriétéspropriétés�� méthodesméthodes�� ÉvènementsÉvènements

�� Utilisation de ce modèle objet pour modifier proprement la Utilisation de ce modèle objet pour modifier proprement la pagepage

�� Démo…Démo… ((evenement.aspxevenement.aspx))

ASP .NET/Web ASP .NET/Web FormsForms

Contrôles serveur personnalisésContrôles serveur personnalisés

�� ASP.NET est fourni avec 45ASP.NET est fourni avec 45 contrôles serveur intégréscontrôles serveur intégrés ; ; immédiatement exploitables.immédiatement exploitables.

�� Possibilité pour les développeurs de rajouter leur propres Possibilité pour les développeurs de rajouter leur propres contrôles personnaliséscontrôles personnalisés

ASP .NET/Web ASP .NET/Web FormsForms

Page 46: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

46

Validation de formulairesValidation de formulaires

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

�� Affichage de messagesAffichage de messages

�� Adaptation au clientAdaptation au client�� Client supérieur : Client supérieur : JavaScriptJavaScript et DHTMLet DHTML�� Client inférieur : allerClient inférieur : aller--retour sur le serveurretour sur le serveur

�� Démo (Démo (validator.aspxvalidator.aspx))

ASP .NET/Web ASP .NET/Web FormsForms

Méthode Méthode codecode--behindbehind

�� ASP.NET prend en charge deux méthodes de création des ASP.NET prend en charge deux méthodes de création des pages dynamiques pages dynamiques �� code de la page est physiquement déclaré au sein du fichier code de la page est physiquement déclaré au sein du fichier

..aspxaspx d'origine (exemples précédents)d'origine (exemples précédents)�� méthode méthode codecode--behindbehind : permet au code de la page d'être : permet au code de la page d'être

séparé plus proprement du contenu HTML dans un fichier séparé plus proprement du contenu HTML dans un fichier totalement distincttotalement distinct

�� Démo (intro13.aspx)Démo (intro13.aspx)

ASP .NET/Web ASP .NET/Web FormsForms

Page 47: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

47

Données et liaison de donnéesDonnées et liaison de données

�� Contrôles serveurs Contrôles serveurs DataGridDataGrid et et DataListDataList pour afficher pour afficher simplement des résultats de requêtes.simplement des résultats de requêtes.

�� DataGridDataGrid + rapide à mettre en œuvre+ rapide à mettre en œuvre�� DataListDataList pour mieux pour mieux controlercontroler la structure et la présentationla structure et la présentation�� Alternative : le control Alternative : le control RepeaterRepeater qui permet de qui permet de controlercontroler la la

présentation au niveau du HTMLprésentation au niveau du HTML

�� Démo VS.NETDémo VS.NET

�� DatagridDatagrid remplacé par remplacé par GridViewGridView dans VS 2005dans VS 2005

ASP .NET/Web ASP .NET/Web FormsForms

RésuméRésumé�� Web Web FormsForms ASP.NET fournit un moyen aisé, mais puissant, de ASP.NET fournit un moyen aisé, mais puissant, de

générer une interface utilisateur Web dynamique. générer une interface utilisateur Web dynamique. �� Les pages Web Les pages Web FormsForms ASP.NET peuvent cibler n'importe quel ASP.NET peuvent cibler n'importe quel

navigateur client (aucun cookie ou bibliothèque de scripts n'estnavigateur client (aucun cookie ou bibliothèque de scripts n'estrequis). requis).

�� Les pages Web Les pages Web FormsForms ASP.NET assurent la compatibilité de la ASP.NET assurent la compatibilité de la syntaxe avec les pages ASP existantes. syntaxe avec les pages ASP existantes.

�� Les contrôles serveur ASP.NET permettent d'encapsuler Les contrôles serveur ASP.NET permettent d'encapsuler aisément des fonctionnalités courantes. aisément des fonctionnalités courantes.

�� ASP.NET est fourni avec 45ASP.NET est fourni avec 45 contrôles serveur intégrés. Les contrôles serveur intégrés. Les développeurs peuvent également utiliser des contrôles créés par développeurs peuvent également utiliser des contrôles créés par des tiers. des tiers.

�� Les contrôles serveur ASP.NET peuvent projeter Les contrôles serveur ASP.NET peuvent projeter automatiquement du code HTML de niveau supérieur et de automatiquement du code HTML de niveau supérieur et de niveau inférieur. niveau inférieur.

�� Les modèles ASP.NET permettent de personnaliser aisément Les modèles ASP.NET permettent de personnaliser aisément l'apparence des contrôles serveur de liste. l'apparence des contrôles serveur de liste.

�� Les contrôles de validation ASP.NET permettent d'effectuer Les contrôles de validation ASP.NET permettent d'effectuer aisément une validation des données déclarative sur le client ouaisément une validation des données déclarative sur le client oule serveur. le serveur.

ASP .NET/Web ASP .NET/Web FormsForms

Page 48: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

48

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Services Web .NETServices Web .NET�� Fichier texte .Fichier texte .asmxasmx semblable aux fichiers .semblable aux fichiers .aspxaspx plus :plus :

�� importation de l'espace de noms importation de l'espace de noms System.Web.ServicesSystem.Web.Services�� La classe est dérivée de la classe de base La classe est dérivée de la classe de base WebServiceWebService�� Chaque méthode devant être exposée doit avoir l’attribut Chaque méthode devant être exposée doit avoir l’attribut [[WebMethodWebMethod]] en C#, en C#, <<WebMethodWebMethod()>()> en en VisualVisual Basic ou Basic ou WebMethodAttributeWebMethodAttribute en en JScriptJScript, devant sa signature , devant sa signature

�� Ensemble d'outils et de code perfectionné pour l'utilisation Ensemble d'outils et de code perfectionné pour l'utilisation des services Webdes services Web�� WSDL.exe : outil de ligne de commande pour créer des classes WSDL.exe : outil de ligne de commande pour créer des classes

proxyproxy à partir de WSDLà partir de WSDL�� Assistants dans Assistants dans VisualVisual Studio pour ajouter des références WEBStudio pour ajouter des références WEB

�� A propos de l’A propos de l’interopinterop…(types communs, tableau, …(types communs, tableau, encodingencoding))

�� Démo…Démo…

ASP .NET/Services WebASP .NET/Services Web

Page 49: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

49

TPTP

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Page 50: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

50

DéfinitionDéfinition

�� C’est la somme de tous les fichiers, pages, gestionnaires, C’est la somme de tous les fichiers, pages, gestionnaires, modules et codes exécutables pouvant être appelés ou 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 exécutés dans la portée d'un répertoire virtuel donné (et de ses ses soussous--répertoiresrépertoires) sur un serveur d'application Web.) sur un serveur d'application Web.

�� S’exécute dans un domaine d'application .NET S’exécute dans un domaine d'application .NET FrameworkFrameworkuniqueunique�� Garantit l’isolation des classes et des variables statiquesGarantit l’isolation des classes et des variables statiques

�� Pool d'instances de Pool d'instances de HttpApplicationHttpApplication géré par ASP .NET géré par ASP .NET durant la vie de l’application. Une instance assignée durant la vie de l’application. Une instance assignée automatiquement à chaque automatiquement à chaque requèterequète HTTP.HTTP.

ASP .NET/Applications WebASP .NET/Applications Web

CréationCréation

�� Dans un répertoire virtuel de serveur web.Dans un répertoire virtuel de serveur web.

�� Simple copie d’au moins un fichier .Simple copie d’au moins un fichier .aspxaspx dans le répertoire.dans le répertoire.

�� Automatique depuis VS .NET lors de la création d’un projet Automatique depuis VS .NET lors de la création d’un projet de type «de type « Site webSite web »»

ASP .NET/Applications WebASP .NET/Applications Web

Page 51: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

51

Durée de vie d'une applicationDurée de vie d'une application

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

�� Création d’un pool d’instance de Création d’un pool d’instance de HttpApplicationHttpApplication, et , et déclenchement de l’événement déclenchement de l’événement Application_StartApplication_Start

�� Les instances de Les instances de HttpApplicationHttpApplication traitent les différentes traitent les différentes demandes jusqu’à la dernière instance, puis l’événement demandes jusqu’à la dernière instance, puis l’événement Application_EndApplication_End est déclenchéest déclenché

ASP .NET/Applications WebASP .NET/Applications Web

Utilisation du fichier Utilisation du fichier Global.asaxGlobal.asax

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

�� Permet au développeur de créer la logique liée à la gestion Permet au développeur de créer la logique liée à la gestion des événements d'application de niveau supérieur des événements d'application de niveau supérieur ((Application_StartApplication_Start, , Application_EndApplication_End, , Session_StartSession_Start, , Session_EndSession_End ))

�� Contient toutes les variables globales de l’application. Contient toutes les variables globales de l’application. Attention ce n’est plus le cas avec VS 2005. Privilégiez la Attention ce n’est plus le cas avec VS 2005. Privilégiez la création d’une classe «création d’une classe « MySettingsMySettings » qui contiendra ces » qui contiendra ces variables.variables.

�� DémoDémo

ASP .NET/Applications WebASP .NET/Applications Web

Page 52: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

52

Remarque sur les Remarque sur les threadsthreads multiplesmultiples

ASP .NET/Applications WebASP .NET/Applications Web

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

�� Exemple dangereux :Exemple dangereux :<% <%

Application("Application("countercounter") = ") = CTypeCType(Application("(Application("countercounter") + 1, Int32) ") + 1, Int32)

%> %>

�� Code Code threadthread--safesafe ::<%<%

Application.LockApplication.Lock() ()

Application("Application("countercounter") = ") = CTypeCType(Application("(Application("countercounter") + 1, Int32) ") + 1, Int32)

Application.UnLockApplication.UnLock() ()

%> %>

RésuméRésumé

�� Les applications ASP.NET Les applications ASP.NET FrameworkFramework se composent de tous les se composent de tous les éléments situés sous un répertoire virtuel du serveur Web.éléments situés sous un répertoire virtuel du serveur Web.

�� Pour créer une application ASP.NET Pour créer une application ASP.NET FrameworkFramework, ajoutez des , ajoutez des fichiers à un répertoire virtuel du serveur Web. fichiers à un répertoire virtuel du serveur Web.

�� La durée de vie d'une application ASP.NET La durée de vie d'une application ASP.NET FrameworkFramework est est marquée par les événements marquée par les événements Application_StartApplication_Start et et Application_EndApplication_End..

�� Les applications ASP.NET Les applications ASP.NET FrameworkFramework peuvent définir dans le peuvent définir dans le fichier fichier Global.asaxGlobal.asax des gestionnaires d'événements et des objets des gestionnaires d'événements et des objets dont la portée est limitée à l'application ou à la session. 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 L'accès à des objets ayant une portée d'application doit être sécurisé pour l'accès sécurisé pour l'accès multithreadmultithread. .

ASP .NET/Applications WebASP .NET/Applications Web

Page 53: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

53

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Services de cacheServices de cache

�� Pour de meilleures performances…Pour de meilleures performances…

�� Conservation des pages ou des données entre les Conservation des pages ou des données entre les demandes HTTP et les réutiliser sans avoir à les recréer.demandes HTTP et les réutiliser sans avoir à les recréer.

�� 3 types de mise en cache à disposition :3 types de mise en cache à disposition :�� mise en cache de sortiemise en cache de sortie�� mise en cache par fragmentmise en cache par fragment�� mise en cache de données mise en cache de données

ASP .NET/CacheASP .NET/Cache

Page 54: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

54

Mise en cache de sortieMise en cache de sortie

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

�� Pour qu'une réponse puisse être mise dans le cache de sortie, Pour qu'une réponse puisse être mise dans le cache de sortie, elle doit posséder une stratégie d'expiration/validation valide elle doit posséder une stratégie d'expiration/validation valide et être visible dans le cache public.et être visible dans le cache public.

�� Exemple :Exemple :

<%@ <%@ OutputCacheOutputCache DurationDuration="60" ="60" VaryByParamVaryByParam="none"%>="none"%><%@ <%@ OutputCacheOutputCache DurationDuration="60" ="60" VaryByParamVaryByParam="state" %> ="state" %>

ASP .NET/CacheASP .NET/Cache

Mise en cache par fragmentMise en cache par fragment�� Mise en cache des parties du contenu d'une page.Mise en cache des parties du contenu d'une page.

�� Les parties à mettre en cache doivent être désignée au Les parties à mettre en cache doivent être désignée au moyen d’un contrôle utilisateur avant de les marquer pour la moyen d’un contrôle utilisateur avant de les marquer pour la mise en cache à l'aide de la directive mise en cache à l'aide de la directive @ @ OutputCacheOutputCache..

�� Exemple :Exemple :<%@ <%@ RegisterRegister TagPrefixTagPrefix="="AcmeAcme" " TagNameTagName="Menu" ="Menu" SrcSrc="="Menu.ascxMenu.ascx" %>" %><html> <body> <html> <body> <<AcmeAcme:Menu :Menu CategoryCategory="="LeftMenuLeftMenu" " runatrunat==serverserver/> /> Hi, Hi, thethe timetime isis nownow: <%=: <%=NowNow%>%><<AcmeAcme:Menu :Menu CategoryCategory="="RightMenuRightMenu" " runatrunat==serverserver/>/></body> </html> </body> </html>

<%@ <%@ OutputCacheOutputCache DurationDuration="120" ="120" VaryByParamVaryByParam="none" %> ="none" %> <script <script languagelanguage="VB" ="VB" runatrunat==serverserver>>……</script></script>

<<aspasp::TextBoxTextBox id="id="MyMenuMyMenu" " runatrunat==serverserver/>/>

ASP .NET/CacheASP .NET/Cache

Page 55: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

55

Mise en cache de donnéesMise en cache de données

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

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

�� Limité à une application et sa durée de vie équivaut à celle Limité à une application et sa durée de vie équivaut à celle de l'application. de l'application.

�� Exemple :Exemple :

‘mise en cache‘mise en cacheCache("Cache("mykeymykey")") = = myValuemyValue

‘récupération des données ‘récupération des données myValuemyValue = = Cache("Cache("mykeymykey")")If If myValuemyValue <> <> NullNull ThenThen

DisplayDataDisplayData((myValuemyValue) ) EndEnd IfIf

ASP .NET/CacheASP .NET/Cache

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Page 56: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

56

Vue d’ensembleVue d’ensemble

�� Système de configuration riche et souple qui permet aux Système de configuration riche et souple qui permet aux développeurs d'associer aisément des paramètres à une développeurs d'associer aisément des paramètres à une application application installableinstallable et aux administrateurs de personnaliser et aux administrateurs de personnaliser ces valeurs après le déploiement.ces valeurs après le déploiement.

�� La hiérarchie de répertoire d’une application contient les La hiérarchie de répertoire d’une application contient les fichiers de configuration de cette application (la configurationfichiers de configuration de cette application (la configurationest déployée par simple copie).est déployée par simple copie).

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

�� Les modifications apportées aux fichiers de configuration Les modifications apportées aux fichiers de configuration ASP.NET sont automatiquement détectées par le système. ASP.NET sont automatiquement détectées par le système.

ASP .NET/configurationASP .NET/configuration

Format du fichier de configuration Format du fichier de configuration

�� Fichiers Fichiers machine.configmachine.config et et web.configweb.config basés sur XML.basés sur XML.

�� Exemple : calcul des paramètres de configuration de l'Exemple : calcul des paramètres de configuration de l'URLURLhttp://myserver/myapplication/mydir/page.aspxhttp://myserver/myapplication/mydir/page.aspx

�� Base configuration Base configuration settingssettings for machine. for machine. C:C:\\WinNTWinNT\\Microsoft.NETMicrosoft.NET\\FrameworkFramework\\v.2.00v.2.00\\configconfig\\machine.configmachine.config

�� OverriddenOverridden by by thethe configuration configuration settingssettings for for thethe site (or site (or thethe rootrootapplication). C:application). C:\\inetpubinetpub\\wwwrootwwwroot\\web.configweb.config

�� OverriddenOverridden by application configuration by application configuration settingssettings. . D:D:\\MyApplicationMyApplication\\web.configweb.config

�� OverriddenOverridden by by subdirectorysubdirectory configuration configuration settingssettings. . D:D:\\MyApplicationMyApplication\\MyDirMyDir\\web.configweb.config

ASP .NET/configurationASP .NET/configuration

Page 57: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

57

Sections de configuration standardSections de configuration standard

ASP .NET/configurationASP .NET/configuration

Responsable du contrôle des paramètres du composant Responsable du contrôle des paramètres du composant Browser Browser CapabilitiesCapabilities. . <<browserCapsbrowserCaps> >

Responsable de la configuration des paramètres du modèle Responsable de la configuration des paramètres du modèle de processus ASP.NET sur les serveurs Web IIS. de processus ASP.NET sur les serveurs Web IIS. <<processModelprocessModel> >

Responsable de la configuration du service de suivi Responsable de la configuration du service de suivi ASP.NET. ASP.NET. <trace> <trace>

Responsable de tous les paramètres de compilation utilisés Responsable de tous les paramètres de compilation utilisés par ASP.NET. par ASP.NET. <compilation> <compilation>

Responsable de la configuration des paramètres de Responsable de la configuration des paramètres de globalisation d'une application. globalisation d'une application. <<globalizationglobalization> >

Responsable de la configuration du module HTTP d'état de Responsable de la configuration du module HTTP d'état de la session. la session. <<sessionStatesessionState> >

Responsable du mappage des URL entrantes à des classes Responsable du mappage des URL entrantes à des classes IHttpHandlerIHttpHandler<<httpHandlershttpHandlers> >

Responsable de la configuration des modules HTTP au sein Responsable de la configuration des modules HTTP au sein d'une application. Parmi leurs utilisations courantes, citons d'une application. Parmi leurs utilisations courantes, citons la sécurité et la connexion. la sécurité et la connexion.

<<httpModuleshttpModules> >

Utilisation des Utilisation des paramparam. d'application. d'application

�� Stockage de paramètres d'application personnalisés :Stockage de paramètres d'application personnalisés :�� chaînes de connexion de base de donnéeschaînes de connexion de base de données�� des chemins d'accès de fichiersdes chemins d'accès de fichiers�� des URL de services Web XML distants des URL de services Web XML distants

�� Exemple :Exemple :<configuration><configuration>

<<appSettingsappSettings>>

<<addadd keykey="WSURL" value="http://="WSURL" value="http://localhostlocalhost/WSTP/Service1.asmx"/>/WSTP/Service1.asmx"/>

</</appSettingsappSettings>>

<!<!---- etcetc… … ---->>

</configuration></configuration>

�� Extraction :Extraction :String String wsurlwsurl = = ConfigurationSettings.AppSettingsConfigurationSettings.AppSettings("WSURL")("WSURL") ;;

DémoDémo

ASP .NET/configurationASP .NET/configuration

Page 58: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

58

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

ArborescenceArborescence

�� Plusieurs applications Web sur un même ASP .NET, identifiées Plusieurs applications Web sur un même ASP .NET, identifiées à l'aide d'un préfixe d'à l'aide d'un préfixe d'URLURL unique au sein d'un site Web.unique au sein d'un site Web.

�� Chaque application ASP.NET Chaque application ASP.NET FrameworkFramework exposée dans un exposée dans un espace de noms d'espace de noms d'URLURL est sauvegardée dans un répertoire du est sauvegardée dans un répertoire du système de fichiers situé sur un partage de fichiers local ou système de fichiers situé sur un partage de fichiers local ou distant.distant.

ASP .NET/DéploiementASP .NET/Déploiement

Page 59: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

59

AssemblysAssemblys

�� Unité de déploiement des classes dans le Unité de déploiement des classes dans le CommonCommon LanguageLanguageRuntimeRuntime..

�� 11 projet projet VisualVisual Studio.NETStudio.NET = 1= 1 assemblyassembly .NET .NET FrameworkFramework = = 11 DLL physique DLL physique

�� Déploiement par simple copie (!) Déploiement par simple copie (!) �� dans le cache d’dans le cache d’assemblyassembly global (pour du code partagé) global (pour du code partagé) �� ou local (pour le code propre à une application ; sécurité et ou local (pour le code propre à une application ; sécurité et

facilité du facilité du versionningversionning). ). SousSous--repertoirerepertoire //binbin par défaut.par défaut.

ASP .NET/DéploiementASP .NET/Déploiement

Démarrage d'une applicationDémarrage d'une application

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

�� Paramètres passés au CLR :Paramètres passés au CLR :�� Les chemins d'accès des répertoires constituant le cache Les chemins d'accès des répertoires constituant le cache

d'd'assemblyassembly locallocal�� Les restrictions de sécurité de l'applicationLes restrictions de sécurité de l'application

�� Chargement de classe :Chargement de classe :�� Lors de la résolution de classe, ne charge jamais la DLL physiquLors de la résolution de classe, ne charge jamais la DLL physique, e,

mais une copie de la DLL d’mais une copie de la DLL d’assemblyassembly..�� Possibilité de supprimer, remplacer, renommer à tout moment un Possibilité de supprimer, remplacer, renommer à tout moment un

assemblyassembly..�� DetectionDetection automatique par le CLR des modifications automatique par le CLR des modifications �� prises en prises en

compte sans redcompte sans redéémarrer le serveurmarrer le serveur

ASP .NET/DéploiementASP .NET/Déploiement

Page 60: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

60

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Authentification et autorisationAuthentification et autorisation

�� AuthentificationAuthentification�� l'action de déterminer l'identité de l'entité à l'origine de la l'action de déterminer l'identité de l'entité à l'origine de la requêterequête�� généralement une paire nom/mot de passegénéralement une paire nom/mot de passe

�� AutorisationAutorisation�� processus consistant à déterminer si une entité authentifiée peuprocessus consistant à déterminer si une entité authentifiée peut t

accéder à une ressource donnée.accéder à une ressource donnée.

�� ASP.NET agit conjointement avec IIS pour assurer des services ASP.NET agit conjointement avec IIS pour assurer des services d'authentification et d'autorisation destinés aux applications.d'authentification et d'autorisation destinés aux applications.

�� Possibilité d’Possibilité d’accederacceder dans le code à l’objet dans le code à l’objet WindowsPrincipalWindowsPrincipal�� Vérification d’un rôle,… Vérification d’un rôle,…

ASP .NET/ASP .NET/SecuritéSecurité

Page 61: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

61

ConfigurationConfiguration

�� SpecificationSpecification dans dans web.configweb.config du type d’authentification à du type d’authentification à mettre en placemettre en place�� possibilité : None, Windows, possibilité : None, Windows, PassportPassport, , FormsForms�� exemple : exemple : <<authenticationauthentication mode="mode="FormsForms"/>"/>

�� Autorisation des utilisateurs et des rôles dans Autorisation des utilisateurs et des rôles dans web.configweb.config�� éléments "éléments "allowallow", "", "denydeny" avec attributs "" avec attributs "usersusers", "", "rolesroles""�� liste d’utilisateurs ou de rôles possiblesliste d’utilisateurs ou de rôles possibles�� test sur la test sur la méthodméthod HTTP avec l’attribut "HTTP avec l’attribut "verbverb" " �� Utilisateurs spéciaux :Utilisateurs spéciaux :

�� ? = utilisateur non authentifié? = utilisateur non authentifié�� * = tous les utilisateurs* = tous les utilisateurs

�� exemple : exemple : <<authorizationauthorization>><<allowallow verbverb="POST" ="POST" usersusers="="johnjohn,,marymary">"><<allowallow verbverb="POST" ="POST" rolesroles="="AdminsAdmins">"><<denydeny verbverb="POST" ="POST" usersusers="*">="*"><<allowallow verbverb="GET" ="GET" usersusers="*">="*">

</</authorizationauthorization>>

ASP .NET/ASP .NET/SecuritéSecurité

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Page 62: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

62

Vue d’ensembleVue d’ensemble

�� Prise en charge du codage Prise en charge du codage �� en interne, ASP.NET utilise Unicode .en interne, ASP.NET utilise Unicode .�� ASP.NET peut être configuré de plusieurs manières pour ASP.NET peut être configuré de plusieurs manières pour

utiliser un codage défini (lors de dialogue vers l’extérieur).utiliser un codage défini (lors de dialogue vers l’extérieur).

�� Prise en charge de la localisationPrise en charge de la localisation�� propriétés propriétés CurrentCultureCurrentCulture de la classede la classe CultureInfoCultureInfo�� Routines de mises en formes pour l’affichage de nombres, Routines de mises en formes pour l’affichage de nombres,

devises, dates,…devises, dates,…�� DémoDémo

�� Paramètres de configurationParamètres de configuration�� Dans fichier Dans fichier web.configweb.config ::�� Dans la directive @Page :Dans la directive @Page :

ASP .NET/LocalisationASP .NET/Localisation

<configuration><configuration><<system.websystem.web>>

<<globalizationglobalizationfileEncodingfileEncoding="utf="utf--8" 8" requestEncodingrequestEncoding="utf="utf--8" 8" responseEncodingresponseEncoding="utf="utf--8" 8" culture="culture="enen--USUS""

/> /> </</system.websystem.web>>

</configuration></configuration><%@Page Culture="<%@Page Culture="frfr--FRFR" " UICultureUICulture="="frfr--FRFR" " ResponseEncodingResponseEncoding="utf="utf--8"%> 8"%>

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Page 63: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

63

Traçage au niveau de la pageTraçage au niveau de la page

�� Pour activer le traçage au niveau de la page, utilisez un Pour activer le traçage au niveau de la page, utilisez un attribut attribut Trace="Trace="truetrue"" dans la directive dans la directive PagePage de niveau de niveau supérieur.supérieur.

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

�� Le débogage du code peut s'exécuter de manière Le débogage du code peut s'exécuter de manière conditionnelle, selon que le traçage est activé ou non pour conditionnelle, selon que le traçage est activé ou non pour la page. Utilisez la propriété la page. Utilisez la propriété Trace.IsEnabledTrace.IsEnabled de la page de la page pour déterminer si le traçage est activé. pour déterminer si le traçage est activé.

ASP .NET/TraçageASP .NET/Traçage

Traçage au niveau de l’appli.Traçage au niveau de l’appli.

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

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

�� Après le lancement d'une série de demandes, vous pouvez Après le lancement d'une série de demandes, vous pouvez accéder aux détails qui les concernent en demandant accéder aux détails qui les concernent en demandant «« trace.axdtrace.axd » à partir de la racine de l'application. » à partir de la racine de l'application.

ASP .NET/TraçageASP .NET/Traçage

Page 64: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

64

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

DéboguageDéboguage

�� Puissants outils de déboguage intégré à Puissants outils de déboguage intégré à VisualVisual Studio .NETStudio .NET

�� DémoDémo

ASP .NET/ ASP .NET/ DéboguageDéboguage

Page 65: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

65

ASP .NETASP .NET�� IntroductionIntroduction�� Web Web FormsForms .NET.NET�� Services Web .NETServices Web .NET�� Application Web .NETApplication Web .NET�� Service de cacheService de cache�� ConfigurationConfiguration�� DéploiementDéploiement�� SécuritéSécurité�� LocalisationLocalisation�� TraçageTraçage�� DéboguageDéboguage�� PerformancePerformance

ASP .NET/SommaireASP .NET/Sommaire

Vue d’ensemble des performancesVue d’ensemble des performances

�� Amélioration de la plateforme MicrosoftAmélioration de la plateforme Microsoft�� les pages ne sont compilées qu'une seule foisles pages ne sont compilées qu'une seule fois�� mises en cache pour les demandes ultérieuresmises en cache pour les demandes ultérieures�� cache des objets internes, tels que des variables de serveur, cache des objets internes, tels que des variables de serveur,

afin d'accélérer l'accès au code utilisateurafin d'accélérer l'accès au code utilisateur�� bénéfice des performances du bénéfice des performances du CommonCommon LanguageLanguage RuntimeRuntime ::

�� compilation compilation justejuste--àà--tempstemps,,�� adaptation aux ordinateurs mono ou multiprocesseurs, etc. adaptation aux ordinateurs mono ou multiprocesseurs, etc.

�� Notions importantesNotions importantes�� Débit Débit : nombre de demandes qu'une application Web peut : nombre de demandes qu'une application Web peut

servir par unité de temps (demandes/seconde)servir par unité de temps (demandes/seconde)�� Temps de réponseTemps de réponse : durée entre le lancement d'une : durée entre le lancement d'une

demande et le premier octet retourné au client par le serveur demande et le premier octet retourné au client par le serveur �� Temps d’exécutionTemps d’exécution : durée de traitement d'une demande : durée de traitement d'une demande �� EvolutivitéEvolutivité : capacité de s’adapter aux ressources: capacité de s’adapter aux ressources

ASP .NET/ ASP .NET/ PerformancePerformance

Page 66: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

66

Conseils (1)Conseils (1)

�� Désactivez l'état de session s'il n'est pas utiliséDésactivez l'état de session s'il n'est pas utilisé�� Mode Mode ReadRead--OnlyOnly possiblepossible

�� Évitez les allersÉvitez les allers--retours excessifs du serveurretours excessifs du serveur�� Utilisation des validation d'entrées de formulaires côté clientUtilisation des validation d'entrées de formulaires côté client

�� Utilisez Utilisez Page.IsPostbackPage.IsPostback pour éviter toute tâche pour éviter toute tâche supplémentaire lors d'un allersupplémentaire lors d'un aller--retourretour�� Ex : lors du passage dans le Ex : lors du passage dans le page_loadpage_load Démo !Démo !

�� Utilisez les contrôles serveur avec parcimonie et de Utilisez les contrôles serveur avec parcimonie et de manière appropriéemanière appropriée

�� Évitez tout état d'affichage de contrôle serveur Évitez tout état d'affichage de contrôle serveur excessifexcessif

Démo !Démo !

ASP .NET/ ASP .NET/ PerformancePerformance

Conseils (2)Conseils (2)

�� Ne vous basez pas sur des exceptions dans votre Ne vous basez pas sur des exceptions dans votre codecode

�� Utilisez la liaison anticipée dans du code Utilisez la liaison anticipée dans du code VisualVisual BasicBasic�� <%@ Page <%@ Page LanguageLanguage="VB" Strict="="VB" Strict="truetrue" %> " %>

�� Utilisez Utilisez SqlDataReaderSqlDataReader pour un curseur de données pour un curseur de données en avant et en lecture seuleen avant et en lecture seule�� Meilleurs résultats que le Meilleurs résultats que le DataSetDataSet

�� N'oubliez pas de désactiver le mode débogageN'oubliez pas de désactiver le mode débogage

ASP .NET/ ASP .NET/ PerformancePerformance

TryTryresultresult = 100 / = 100 / numnum

Catch (e As Exception)Catch (e As Exception)resultresult = 0= 0

EndEnd

If If NotNot ((numnum = 0) = 0) ThenThenresultresult = 100 / = 100 / numnum

ElseElseresultresult = 0= 0

EndEnd IfIf

Page 67: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

67

Outil proposéOutil proposé

�� WAS = Web Application StressWAS = Web Application Stress

�� Simulation de N clients HTTPSimulation de N clients HTTP�� temps de réponsetemps de réponse�� débitsdébits�� compteurs de performances relatives à l’applicationcompteurs de performances relatives à l’application�� détecteur de goulet d’étranglementdétecteur de goulet d’étranglement�� ……

ASP .NET/ ASP .NET/ PerformancePerformance

INETINFO.EXEIIS worker process

ISAPI ExtensionManager

ASPNET_ISAPI.DLLASP.NET ISAPI extension

ASPNET_WP.EXEASP.NET worker process

ASP.NET

CLR

COM+ runtime (DLLHost.EXE)

Win2k Server

HTTP Request

Http Http RequestRequestHandlingHandling

IIS

ASP.DLLStatic HTML

Files

Request

*.html

*.htm

Request

*.html

*.htm

named pipes

ASP.NET

Request

*.asmx

*.aspx

ASP.NET

Request

*.asmx

*.aspx

*.htm*.aspx

Page 68: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

68

SommaireSommaire

�� Qu’est ce que .NETQu’est ce que .NET�� Vue d’ensemble du Vue d’ensemble du FrameworkFramework .NET.NET�� Le Le CommonCommon LanguageLanguage RuntimeRuntime�� Les objets COM+Les objets COM+�� C# et VB.NETC# et VB.NET�� VisualVisual Studio .NETStudio .NET�� ASP.NETASP.NET�� ADO.NET et XMLADO.NET et XML

ADO .NETADO .NET

�� PrésentationPrésentation�� ObjetsObjets�� ResuméResumé

ADO .NET/SommaireADO .NET/Sommaire

Page 69: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

69

DéfinitionDéfinition

�� Ensemble de Ensemble de classes permettant un accès à différentes sources de données

�� Evolution par rapport à ADOEvolution par rapport à ADO�� composante essentielle du composante essentielle du frameworkframework .NET.NET�� propose un support optimum au modèle déconnectépropose un support optimum au modèle déconnecté�� support d’support d’XMLXML natif au natif au frameworkframework�� reste accessible facilement aux développeurs ADOreste accessible facilement aux développeurs ADO

ADO .NET/PrésentationADO .NET/Présentation

Architecture d’ADO .NET

System.DataSystem.Data��

�� ..SqlTypesSqlTypes : : Ensemble de classes qui permet de faire la correspondance avec les types de données rencontrées dans SQL Server

�� ..SqlClientSqlClient : : Ensemble de classes qui permet un accès à une source de données de type SQL Server

�� ..CommonCommon : : Ensemble de classes qui permet d ’implémenter son propre fournisseur d ’accès aux données

�� ..OleDbOleDb : : Ensemble de classes qui permet un accès à différentes sources dedonnées

�� ..OracleClientOracleClient : : 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ésentationADO .NET/Présentation

Page 70: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

70

ADO Architecture : 2 ModesADO Architecture : 2 Modes

�� Mode déconnectéMode déconnecté�� Dataset qui cache les Dataset qui cache les

données sans maintien données sans maintien de la connexionde la connexion

�� Mode Connecté Mode Connecté �� ManagedManaged ProviderProvider�� Accès physique à la baseAccès physique à la base

ADO .NET/PrésentationADO .NET/Présentation

Mode déconnectéMode déconnecté

DataSetDataSet DataAdaptersDataAdapters DataBaseDataBase

�� Les données sont “cachées” dans les Les données sont “cachées” dans les DataSetsDataSets�� Dans ce modèle on limite les allers retour vers le serveurDans ce modèle on limite les allers retour vers le serveur�� Un Un DataSetDataSet est un cache de data issu d’une est un cache de data issu d’une databasedatabase�� Notion de “Notion de “virtualvirtual data store“data store“

�� Un Un DataSetDataSet contient une ou plusieurs “tables”contient une ou plusieurs “tables”�� Les Les DataAdaptersDataAdapters forment le pont entre forment le pont entre DataSetDataSet et et DatabaseDatabase�� Ils chargent les data depuis la Ils chargent les data depuis la DatabaseDatabase dans le dans le DataSetDataSet�� Ils répercutent les modifications du Ils répercutent les modifications du DataSetDataSet vers la vers la DatabaseDatabase

selon un “batch update selon un “batch update modelmodel””

ADO .NET/PrésentationADO .NET/Présentation

Page 71: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

71

Exemple d’architectureExemple d’architecture

ADO .NET/PrésentationADO .NET/Présentation

ADO .NETADO .NET

�� PrésentationPrésentation�� Objets Objets �� ResuméResumé

ADO .NET/SommaireADO .NET/Sommaire

Page 72: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

72

ConnexionsConnexions�� Objets utilisés pour se connecter à une base de donnéeObjets utilisés pour se connecter à une base de donnée�� 2 possibilités :2 possibilités :

�� Fournisseur de donnée spécifiqueFournisseur de donnée spécifique�� SQL Server (SQL Server (System.Data.SqlClientSystem.Data.SqlClient))�� Oracle Server (Oracle Server (System.Data.OracleClientSystem.Data.OracleClient))

�� Fournisseur de donnée OLE DB .NET (Fournisseur de donnée OLE DB .NET (System.Data.OleDbSystem.Data.OleDb))�� Pour tout type de connexionPour tout type de connexion

�� Exemple :Exemple :

ADO .NET/ObjetsADO .NET/Objets

public sub Run()public sub Run()Dim Dim mySqlConnectionmySqlConnection as as SqlConnectionSqlConnectionmySqlConnectionmySqlConnection = = new new SqlConnection("serverSqlConnection("server=worm; database==worm; database=Bank;userBank;user id=id=sasa")")trytry

mySqlConnection.OpenmySqlConnection.Open()()Console.WriteLine("ConnexionConsole.WriteLine("Connexion {0} {0} ouverteouverte", ", mySqlConnection.ConnectionStringmySqlConnection.ConnectionString))' Close the connection explicitly' Close the connection explicitlymySqlConnection.ClosemySqlConnection.Close()()Console.WriteLineConsole.WriteLine("Connexion ferme. Il est important de fermer les connexions ex("Connexion ferme. Il est important de fermer les connexions explicitement.")plicitement.")

catchcatchConsole.WriteLineConsole.WriteLine("Impossible d'ouvrir la connexion {0}", ("Impossible d'ouvrir la connexion {0}", mySqlConnection.ConnectionStringmySqlConnection.ConnectionString))

end tryend tryend subend sub

CommandCommand

�� Information envoyée à une base de donnéeInformation envoyée à une base de donnée�� Objet présenté par les classes spécifiques d’un fournisseur Objet présenté par les classes spécifiques d’un fournisseur

(ex: (ex: SqlCommandSqlCommand))�� Type : INSERT, SELECT, UPDATE, DELETE, Appel de Type : INSERT, SELECT, UPDATE, DELETE, Appel de

procédures stockées,…procédures stockées,…

�� Exemple :Exemple :

ADO .NET/ObjetsADO .NET/Objets

public sub Run()public sub Run()Dim Message as StringDim Message as StringDim Dim myConnectionmyConnection as as SqlConnectionSqlConnectionDim Dim mySqlCommandmySqlCommand as as SqlCommandSqlCommandmySqlConnectionmySqlConnection = = new new SqlConnection("serverSqlConnection("server=worm; database==worm; database=Bank;userBank;user id=id=sasa")")

mySqlCommandmySqlCommand = = new new SqlCommand(“insertSqlCommand(“insert into CUSTOMERS (NAME) values (‘into CUSTOMERS (NAME) values (‘poilpoil’)”, ’)”, myConnectionmyConnection))trytry

myConnection.OpenmyConnection.Open()()mySqlCommand.ExecuteNonQuerymySqlCommand.ExecuteNonQuery()()Message = "Nouvel enregistrement dans la table Message = "Nouvel enregistrement dans la table CustomersCustomers de de BankBank.«.«myConnection.ClosemyConnection.Close()()

catch catch myExceptionmyException as Exceptionas ExceptionMessage= "Impossible d'Message= "Impossible d'insererinserer l'enregistrement: " + l'enregistrement: " + myException.ToStringmyException.ToString()()

endend trytryConsole.Write(MessageConsole.Write(Message))

end subend sub

Page 73: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

73

DataReaderDataReader�� Objet similaire à un curseur de donnéesObjet similaire à un curseur de données

�� en lecture seule/avance seuleen lecture seule/avance seule�� prend en charge les données à deux dimensions (flat) ainsi que lprend en charge les données à deux dimensions (flat) ainsi que les es

données hiérarchiquesdonnées hiérarchiques

�� Exemple :Exemple :

ADO .NET/ObjetsADO .NET/Objets

public sub Run()public sub Run()Dim Message as StringDim Message as StringDim Dim myConnectionmyConnection as as SqlConnectionSqlConnectionDim Dim mySqlCommandmySqlCommand as as SqlCommandSqlCommandDim Dim myReadermyReader as as SqlDataReaderSqlDataReadermySqlConnectionmySqlConnection = = new new SqlConnection("serverSqlConnection("server=worm; database==worm; database=Bank;userBank;user id=id=sasa")")mySqlCommandmySqlCommand = = new new SqlCommand(“selectSqlCommand(“select * from CUSTOMERS”, * from CUSTOMERS”, myConnectionmyConnection))trytry

myConnection.OpenmyConnection.Open()()myReadermyReader = = mySqlCommand.ExecuteReadermySqlCommand.ExecuteReader()()do while (do while (myReader.ReadmyReader.Read()()))

Console.Write(Console.Write(myReader("CustomerID").ToStringmyReader("CustomerID").ToString()()))looploopmyConnection.ClosemyConnection.Close()()

catch catch myExceptionmyException as Exceptionas Exception… … endend trytry

end subend sub

DataSetDataSet & & DataAdapterDataAdapter : définitions: définitions

�� DataSetDataSet ::�� similaire à ADO similaire à ADO RecordsetRecordset (mais + puissant et toujours en mode (mais + puissant et toujours en mode

déconnecté) déconnecté) �� cache de donnée avec structure similaire à une BDcache de donnée avec structure similaire à une BD�� Pas d’interaction directe avec la source de donnéesPas d’interaction directe avec la source de données�� Nombreuses caractéristiques XMLNombreuses caractéristiques XML

�� DataAdapterDataAdapter ::�� «pont» entre le «pont» entre le DataSetDataSet et la source de donnéeset la source de données�� mise à jour de la BD à partir du mise à jour de la BD à partir du DataSetDataSet (méthode update)(méthode update)�� Définition explicite des commandes d’Définition explicite des commandes d’INSERTINSERT, DELETE et UPDATE , DELETE et UPDATE

pour répercuter sur la BD les modifications du pour répercuter sur la BD les modifications du DataSetDataSet (ou (ou methodemethode SqlCommandBuilderSqlCommandBuilder() plus coûteuse)() plus coûteuse)

ADO .NET/ObjetsADO .NET/Objets

Page 74: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

74

DataSetDataSet & & DataAdapterDataAdapter : schéma: schéma

ADO .NET/ObjetsADO .NET/Objets

Public Sub Run()Public Sub Run()Dim Message as StringDim Message as StringDim Dim myConnectionmyConnection as as SqlConnectionSqlConnectionDim Dim mySqlDataAdaptermySqlDataAdapter as as SqlDataAdapterSqlDataAdapterDim Dim workParamworkParam as as SqlParameterSqlParameter

mySqlConnectionmySqlConnection = = new new SqlConnection("serverSqlConnection("server=worm; database==worm; database=Bank;userBank;user id=id=sasa")")mySqlDataAdaptermySqlDataAdapter = = new new SqlDataAdapter("SelectSqlDataAdapter("Select * from CUSTOMERS", * from CUSTOMERS", myConnectionmyConnection))

' Build the insert Command' Build the insert CommandmySqlDataAdapter.InsertCommandmySqlDataAdapter.InsertCommand = = new new SqlCommand(“insertSqlCommand(“insert into CUSTOMERS (NAME) values into CUSTOMERS (NAME) values

(@NAME)”, (@NAME)”, myConnectionmyConnection))workParamworkParam = = mySqlDataAdapter.InsertCommand.Parameters.Add("@NAMEmySqlDataAdapter.InsertCommand.Parameters.Add("@NAME", ", SqlDbType.VarCharSqlDbType.VarChar, 50), 50)workParam.SourceColumnworkParam.SourceColumn = “NAME"= “NAME"workParam.SourceVersionworkParam.SourceVersion = = DataRowVersion.CurrentDataRowVersion.Current

' Build the delete Command' Build the delete CommandmySqlDataAdapter.DeleteCommandmySqlDataAdapter.DeleteCommand = = new new SqlCommand(“deleteSqlCommand(“delete dromdrom CUSTOMERS where CUSTOMERS where

NAME=@NAME”, NAME=@NAME”, myConnectionmyConnection))workParamworkParam = = mySqlDataAdapter.DeleteCommand.Parameters.Add("@NAMEmySqlDataAdapter.DeleteCommand.Parameters.Add("@NAME", ", SqlDbType.VarCharSqlDbType.VarChar, 50), 50)workParam.SourceColumnworkParam.SourceColumn = “NAME"= “NAME"workParam.SourceVersionworkParam.SourceVersion = = DataRowVersion.CurrentDataRowVersion.Current

‘No update command in ‘No update command in thisthis casecase‘….‘….

DataSetDataSet & & DataAdapterDataAdapter : exemples: exemples

ADO .NET/ObjetsADO .NET/Objets

Page 75: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

75

‘…suite‘…suite

Dim Dim myDataSetmyDataSet as as DataSetDataSetmyDataSetmyDataSet = new = new DataSetDataSet()()

mySqlDataAdapter.Fill(myDataSetmySqlDataAdapter.Fill(myDataSet, "Region"), "Region")

‘insert‘insertDim myDataRow2 as Dim myDataRow2 as DataRowDataRowmyDataRow2 = myDataRow2 = myDataSet.Tables(“CUSTOMERS").NewRowmyDataSet.Tables(“CUSTOMERS").NewRow()()myDataRow2(myDataRow2(““NAMENAME““) = ) = ““poilpoil””myDataSet.Tables("Region").Rows.Add(myDataRow2)myDataSet.Tables("Region").Rows.Add(myDataRow2)

trytrymySqlDataAdapter.Update(myDataSetmySqlDataAdapter.Update(myDataSet, "Region"), "Region")Console.WriteConsole.Write("Mise jour réussie du ("Mise jour réussie du DataSetDataSet !")!")

catch e as Exceptioncatch e as ExceptionConsole.Write(e.ToStringConsole.Write(e.ToString())())

end tryend tryend subend sub

DataSetDataSet & & DataAdapterDataAdapter : exemples: exemples

ADO .NET/ObjetsADO .NET/Objets

ADO .NETADO .NET

�� PrésentationPrésentation�� Objets Objets �� ResuméResumé

ADO .NET/SommaireADO .NET/Sommaire

Page 76: La plateforme Microsoft - Freefranck.dellapina.free.fr/MBDS/Cedrik Poirey/Poirey... · ASP.NET Web Forms & ... Simplification et sécurisation accrue du déploiement Aucun enregistrement,

76

RésuméRésumé

�� ADO.NET est la nouvelle évolution de ADO pour le .Net ADO.NET est la nouvelle évolution de ADO pour le .Net FrameworkFramework. . �� ADO.NET a été créé en mettant l'accent sur les caractéristiques ADO.NET a été créé en mettant l'accent sur les caractéristiques

multicouches, sans état et XML au premier plan. Deux nouveaux multicouches, sans état et XML au premier plan. Deux nouveaux objets, les objets, les DataSetDataSet et et DataAdapterDataAdapter, ont été introduits pour ces , ont été introduits pour ces scénarios. scénarios.

�� ADO.NET peut être utilisé pour obtenir des données à partir d'unADO.NET peut être utilisé pour obtenir des données à partir d'un flux, flux, ou d'enregistrer des données dans un cache pour effectuer des ou d'enregistrer des données dans un cache pour effectuer des modifications. modifications.

�� La documentation contient de nombreuses autres informations sur La documentation contient de nombreuses autres informations sur ADO.NET. ADO.NET.

�� N'oubliez pas que vous pouvez exécuter une commande directement N'oubliez pas que vous pouvez exécuter une commande directement sur la base de données pour effectuer des insertions, des mises sur la base de données pour effectuer des insertions, des mises à jour à jour et des suppressions. Il n'est pas nécessaire de placer les donnéet des suppressions. Il n'est pas nécessaire de placer les données es dans un dans un DataSetDataSet avant de pouvoir insérer, mettre à jour ou avant de pouvoir insérer, mettre à jour ou supprimer cellessupprimer celles--ci. ci.

�� De plus, un De plus, un DataSetDataSet peut être utilisé pour se lier aux données, se peut être utilisé pour se lier aux données, se déplacer dans les données, et naviguer dans les relations de dondéplacer dans les données, et naviguer dans les relations de données. nées.

ADO .NET/RésuméADO .NET/Résumé

Annexe : liens utilesAnnexe : liens utiles

�� Didacticiels ASP.NET, Windows Didacticiels ASP.NET, Windows FormsForms + divers HOWTO :+ divers HOWTO :http://fr.gotdotnet.com/http://fr.gotdotnet.com/quickstartquickstart//

�� Programmation Programmation PocketPCPocketPC ::http://www.codeppc.com/http://www.codeppc.com/ ((eVBeVB & & eVCeVC))http://www.codeppc.net/http://www.codeppc.net/ (SDE)(SDE)

�� Site français d’utilisateur :Site français d’utilisateur :http://www.dotnetguru.orghttp://www.dotnetguru.org

�� Groupes Groupes GoogleGoogle ((http://http://groups.google.comgroups.google.com))microsoft.public.dotnet.frameworkmicrosoft.public.dotnet.framework

�� WebcastWebcast FR (notamment la FR (notamment la presentationpresentation du CLR)du CLR)http://support.microsoft.com/default.aspx?scid=fh;fr;pwebcst&exphttp://support.microsoft.com/default.aspx?scid=fh;fr;pwebcst&expand=nand=n

one&ln=fr&cid=C_7937one&ln=fr&cid=C_7937