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