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