Technologies DotNET Buts : Vision et principes La plate forme Visual Studio CLR (CLS, CTS) L API de base Les processus de compilation Le MSIL Conclusion Vision de Microsoft Jim Miller Constats de base: Lead Program Manager 1. Evolution de la Technologie: Microsoft Corporation Puissance des ordinateurs (double constamment, de plus en plus de données sur le pc) Connectivité (pas très cher et de plus en plus Wireless) Prolifération des dispositifs mobiles (Natel, PDAs, etc. ) Les standards Internet (intégration basé sur XML) 2. Les impératifs de l intégration Trop dur, trop cher, trop lent, trop fragile Îlots de technologie dans une mer de connectivité Les nouvelles idées fonctionnent mieux quand elles influencent le monde existant. Newton vs Palm Vous préférez Excel ou Access? Les utilisateurs du Word préfèrent Excel Les utilisateurs du SQL préfèrent Access Empower people through great software, any time, any place, and on any device 2 C est quoi dotnet (.NET)? De vrai informatique répartie. Plateforme de développement:.net Framework Un environnement : Visual Studio.NET Serveurs d entreprise Internet et intranet Jim Miller Lead Program Manager Common Language Runtime Microsoft Corporation SQL Server, Exchange, Biztalk,Commerce Server, Internet Security & Acceleration Server,Mobile Information Server, Content Management Server Services Standardisés. Support de beaucoup de dispositifs mobiles Accès au même services offerts pour les PCs Basé sur des normes Facile à développer, facile à utiliser Interface personnalisable Fiable, sécurisé, digne de confiance. dotnet: les principes Rendre les applications distribuées omniprésentes et sur mesure Cycles réduits et peu coûteux de développement et qui s adaptent à la bande passante. Intégration sans effort des applications multiples et des divers supports. Fournir les logiciels comme des services Mettre l utilisateur dans le processus de control L environnement.net est le modèle de programmation de cette vision et de ces principes
dotnet: plateforme dotnet: Accès libre et ouvert Access Points Apps Devices Clients Applications Services Services Web Forms myinbox SOAP Your Components Protocols: HTTP, HTML, XML, SOAP, UDDI mycontacts Web Services.NET Framework Tools: Visual Studio.NET, Notepad Windows mycalendar Your Internal Web Service Windows, Windows CE, UNIX, Mac, Palm, etc. n importe quelle langage 5 6 dotnet et Visual Studio.NET VB Un ensemble de technologies pour développer et utiliser des composants pour créer des: Formulaires Web Services Web Des applications Windows Support du cycle de vie d un software Développement Debugging Déploiement Maintenance.NET Enterprise Servers C++ C# JScript.NET propose de nombreuses classes: Common Language Specification ASP.NET: Web Services and Web Forms Windows Forms ADO.NET: Data and XML.NET Framework Base Classes Visual Studio.NET Third-Party Web Services Chaque boîte peut représenter un ordinateur séparé dotnet: plateforme.net Foundation Web Services ASP.NET fournit l'infrastructure du noyau Web: Les formulaires Web, les services Web Windows Forms: Pour le développement d'interface utilisateur sur Windows (OS). 7 ADO.NET et XML: fournissent les fonctionnalités pour l'accès aux données. Base classes: les classes de base de noyau fournissent des services d'infrastructure tels que la gestion de sécurité et de transaction. CLR: Permet d intégrer un grand nombre de langages. 8
Le mécanisme.net Language-Independent & Platform Dependent Person.vb Address.cs Person MSIL CLR Company.cbl.NET: Modèle de programmation Source (C#, C++, VB.NET, J++, Cobol, Smalltalk, Eiffel, etc.) «Managed» (MSIL) CLS/CTS JIT Compiler Native Address MSIL Company MSIL Deploy.NET Framework Libraries.NET CLR.NET CLR.NET CLR.NET Compact Framework Libraries.NET CLR.NET CLR.NET CLR Windows Windows CLR Windows 98/Me NT/2000/XP Linux (Mono::) Autre 9 10 dotnet Structure ASP.NET Web Services ASP.NET ASP.NET Web Forms ASP.NET Application Services ADO.NET Network Windows Windows Forms Forms Controls Framework Framework Class Class Library Library XML Security Common Type System Drawing Windows Application Services Threading Diagnostics Common Common Language Language Runtime Runtime IO Etc. Common Language Specification Compatible avec ASP classique Deux fonctionalités importantes: Les web forms Une toolbox pour la génération des interfaces HTML (extention aspx) Gestion des interactions avec le formulaire et le déclenchement des événements. Gestion des liaisons avec les données Permet de lier par exemple le composant tableau avec une source de données Les web services Par la suite
Common Language Specification dotnet et les classes CLS est l'infrastructure de langage commun utilisée dans.net Spécifications qu'un langage doit supporter pour être accepté dans le cadre de.net Les spécifications sont détaillées: http://msdn.microsoft.com/net/ecma/ ECMA (European Computer Manufacturer's Association) Standardizing Information and Communication Systems Une collection de classes fournissant une grande sélection prédéfinie de fonctionnalité Une bibliothèque standard pour TOUTES LES langages de.net Plus de MFC vs. ATL vs. WFC vs. VB vs. etc. Héritage et déboguage Cross language Object-oriented Extensible Securité Efficacité 13 14 dotnet et les classes Processus de compilation Services Description Discovery Protocols Caching Configuration System.Web UI HtmlControls WebControls Security SessionState System.WinForms Design ComponentModel System.Drawing Drawing2D Printing Imaging Text Étape de compilation intermédiaire Exécution avec (CLR) Just In Time (JIT) Compilation System.Data System.Xml ADO SQL XSLT Serialization Design SQLTypes XPath System Collections Configuration Diagnostics Globalization IO Net Reflection Resources Security ServiceProcess Text Threading Runtime InteropServices Remoting Serialization
Étape de compilation intermédiaire dotnet: CLR Non compilé directement dans le code machine Compilé vers un langage intermédiaire (IL) qui ressemble à l'assembleur Des Metadata accompagne l'il, il décrit le contenu du fichier (par exemple parameters,methods ) Le manifeste décrit ce que le (IL) a besoin en termes d'autres composants But du (CLR) Système commun pour supporter tous les langages de programmation en fournissant l'infrastructure fondamentale pour: le développement de services Interopérabilité entre langages ce qui augmente la productivité le déploiement de services Simple et efficace l'exécution de services Performance, sécurité, etc. SUN avec java: WORA (write once, run anywhere) Microsoft avec CLR: Execute on many platform Un Runtime riche avec une librairies très riches 17 18 The big picture Application.NET? The big Picture building Application.NET Application.NET Process WIN32 Managed Memory Managed CLR Unmanaged Win32 COM COM+ 1.0 Services XML SOAP DATA WEB Memory DLL Managed Exécution Services CLR Inter opère avec : COM/DCOM, COM+ 1.0 Win32 Unmanaged Building Syntaxes au choix (CLS) Compilateur.NET MSIL (Intermediate Language) MetaData Exécution : CLR ClassLoader (IL + MetaData) JIT Compilateurs Native Managed Exécution du code natif
The big Picture.NET Langages VB C++ C# JScript Common Language Specification La plate-forme.net est indépendante du langage Tous les langages accèdent aux services fournis par la CLR Langage de Spécification Commun CLS Chaque langage utilise et étend le framework.net Les langages.net sont interopérables. Gestion d exécution du code: Vérification des types Fourni un garbage collection, un gestionnaire d erreur Vérification de le sécurité aux niveau ressources Type système commun (CTS) Fournit un ensemble riche uniforme de types pour toutes les langages soutenues S'assure que les classes sont compatibles entre en les décrivant dans une manière commune Exemple Valeur de types (integer, float, user, ) Objets, Interfaces Délégation, événements, propriétés, pointeurs Accès aux ressources native du système 21 22 Compilation et exécution Compilation et exécution source Native Execution Compilateur de Language Compilation JIT Compiler CIL Metadata Assembly source MSIL VB Compiler Assembly C# Compiler Assembly C++ Compiler Assembly Illustration du processus de compilation et exécution du code utilisé par CLR code écrit en C#, etc. JIT Compiler transformation en MSIL avec le compilateur avant l exécution, le code MISL (MicroSoft Intermediate Language) est compilé en JIT en code native par défaut le JIT est lancé à chaque appel d une méthode, mais il y a une possibilité de «pre-jit» Native Managed CLR Services Managed CLR Managed Operating System Services Unmanaged
CLR JIT Compilateurs Traduit IL vers du code natif Effectue des vérifications de cohérence de type Les types sont chargés de manière récursive Maintien des tables en mémoire afin d assurer Le ramasse miettes (Garbage collector) La gestion des exceptions Types: Regular JIT Compilation par méthode IL vers code natif natif optimisé Fast-JIT Compilation rapide (pas d optimisation) Pre-JIT Compilation de l assembly avant exécution (installation). Chargement et démarrage plus rapide. Compilation et exécution: Assemblies Assembly est une unité logique de déploiement contenant: Manifest, Metadata, MSIL, et autre ressources: Unité de déploiement Un ou plusieurs fichiers (indépendant du packaging) Auto-descriptive via metadata ( manifest ) Manifest Metadata au sujet des composants dans un assembly (assemblage) nom, version, culture, [clé publique]. Quels sont les types exportés? De quelles autres assemblies dépend-on? Les permissions de sécurité nécessaires à l exécution. Metadata Description complète des tous les types définis dans les assembly: propriétés, méthodes, arguments, return values, attributes, classes de base, Avantages: Eliminer le registre : Manifest Simplifier le modèle de programmation Type Metadata Composant auto descriptifs Automatiquement Générées structure MSIL Stockées avec le code dans le fichier binaire Convertibles vers/depuis XML schéma Resources (optional) 25 26 Compilation et exécution: Assemblies CLR Assembly Assembly (suite): MSIL ou IL (Microsoft Intermediate Language) Généré par la compilation des codes sources (Tous les langages sont compilés en IL : VB,C++,C#,etc.) Va être a son tour compilé (JIT) en code natif, lors de l exécution (il est jamais interprété) Indépendant des CPU Il suffit d avoir le bon JIT Compiler Manifest Ressources Type Metadata structure MSIL Ex:.bmp,.jpg Resources (optional) Manifest Manifest for Type P for Type X for Type Y for Type Z Metadata for Types X, Y and Z app1.dll Assembly A for Type Q Metadata for Types P and Q app2.exe for Type R Metadata for Type R app3.dll
Assembly: vue graphiques CLR Assembly Version des assemblies <major ver>.<minor ver>.<build#>.<révision> Single File Assembly Multifile Assembly Plusieurs versions de la même assembly peuvent être présentes sur la machine Plusieurs versions de la même assembly peuvent être chargées à la fois Y compris dans le même process Les assemblies mettent fin au DLL hell! 29 30 Base Class Library Support Support pour les api de base: root object, la précision (float, etc.), etc. Thread Support Type Checker COM Marshaler Exception Manager Des services de haut niveaux: -Gestion des exceptions -Gestion des threads, -Etc. Security Engine Debug Engine IL to Native Compilers Manager Garbage Collector IL compile en code native, le code manager contrôle l exécution et le grabage collector manage la mémoire Class Loader Charge les classes et les metadata
CLR: développement multilingues Configuration et sécurité Système d Objet incorporé Utilisation simple de son langage de choix Pas de nouvelles règles ou API à apprendre Héritage et gestion d exceptions entre langages Plus de 20 langages supportés VB, C++, C#, Java, JScript, Perl, COBOL Debuggers fonctionnant avec tous les langages Plusieurs niveaux de configuration : Application Ex: hello.exe.config Machine machine.config security.config Entreprise enterprisesec.config Sécurité sur ces différents niveau + Provenance du code, ce que fait le code (io ) Signatures Rôles 33 34 Déploiement dotnet et XML Side by Side Par simple copie Package MSI,.CAB sont le bienvenue ;-) Assembly dans directory des exe /bin XML est présenté comme une pierre angulaire de la plate-forme Il fait partie intégrante du noyau Architecture XML dans.net Support pour : Parsing and Writing XML Document Editing (DOM) XPath XSLT Transforms (XSLT) XML Schemas and Validation
XmlReader et XmlWriter XmlDocument Abstract XmlReader XML 1.0 Namespaces XmlWriter Abstract W3C XML DOM Level 2 Core XmlDocument XmlNode XmlElement XmlAttribute XmlTextReader XmlNodeReader XmlTextWriter Permet la lecture depuis un flux textuel Permet la la génération de documents textuels XmlReader XmlWriter XmlNodeWriter: permet d écrire dans une arbre DOM XML 1.0 Namespaces Permet la lecture depuis une arbre d objets de type DOM 37 38 DOM Classes Synthèse Simplifier le Développement XmlDocument XmlElement XmlAttribute XmlEntity XmlNode XmlCharacterData XmlText XmlCDataSection XmlWhitespace XmlImplementation XmlNodeList XmlNamedNodeMap XmlAttributeCollection Elimination complète de la plomberie: Plus de registration, fichiers IDL, etc. Intégration multi-langages Héritage entre langages Toutes les fonctions de la plate-forme sont disponibles depuis n importe quel langage Integration transparente avec l existant Toute classe.net est vue comme un objet COM Tout object COM peut être utilisé comme une classe.net Modulaire et extensible
Synthèse Unifier les Modèles de Programmation RAD, Composition, Delegation VB Forms API unique.net Framework Subclassing, Power, Expressiveness MFC/ATL Windows API Stateless, Scripting dans des Pages HTML ASP Synthèse Déploiement, Performance et Sécurité Installation simplifiée Xcopy Versioning De multiple versions du même composant peuvent coexister même dans le même process Robustesse & performance Garbage Collection Execution native et type safe Debug multi-langage Traitements des erreurs cohérent Sécurité Basée sur l origine du code ou sur l utilisateur 41 42 Références Liens http://www.microsoft.com/net/netmyservices.asp http://msdn.microsoft.com/net http://msdn.microsoft.com/vstudio http://www.gotdotnet.com http://www.microsoft.com/france/msdn http://www.dotnet-fr.org http://www.c2i.fr http://www.dotnetguru.org http://www.club-dotnet.com http://www.openp2p.com/lpt/a//p2p/2001/05/30/hailstorm.html Livres: Introducing Microsoft.NET, David S. Platt, Microsoft Press The Microsoft.NET Framework, Based on Beta Content, Microsoft Press A Programmer s Introduction to C#, Eric Gunnerson, Apress Professional C#, Simon Robinson, et al, Wrox Press