XPSP2 Prosit 2 VB.NET Mathieu 2008 EXIA NANCY 2008 Prosit 2 Définition des mots-clés - Common type system : Common Type System (CTS) est un terme de Microsoft utilisé pour décrire le traitement des types de données dans le Framework .NET. - IDE : Un environnement de développement intégré (EDI ou IDE en anglais pour Integrated Development Environment) est un programme regroupant un éditeur de texte, un compilateur, des outils automatiques de fabrication, et souvent un débogueur. - Visual Studio.NET : - .NET : Microsoft .NET est le nom d'un ensemble de produits et de technologies de l'entreprise Microsoft dont la plupart dépendent du Framework .NET, un composant du système d'exploitation Windows constituant un équivalent de machine virtuelle. - Framework : En informatique, un Framework est un espace de travail modulaire. C'est un ensemble de bibliothèques, d'outils et de conventions permettant le développement d'applications. Il fournit suffisamment de briques logicielles et impose suffisamment de rigueur pour pouvoir produire une application aboutie et facile à maintenir. Ces composants sont organisés pour être utilisés en interaction les uns avec les autres (voir urbanisation). - Couches (en rapport avec framework) Exia Nancy Page 2 2008 Prosit 2 - CLR : Common Language Runtime (CLR) est le nom choisi par Microsoft pour le composant de machine virtuelle du Framework .NET. Il s'agit de l'implémentation par Microsoft du standard Common Language Infrastructure (CLI) qui définit l'environnement d'exécution des codes de programmes. Le CLR fait tourner une sorte de bytecode nommé Microsoft Intermediate Language (MSIL). Le CLR fonctionne sur des systèmes d'exploitation Microsoft Windows. - Garbage collector : Un ramasse-miettes, (en anglais garbage collector, abrégé en GC) est un sous-système informatique de gestion automatique de la mémoire. Il est responsable du recyclage de la mémoire préalablement allouée puis inutilisée. - Code managé : Managed code is code that has its execution managed by the .NET Framework Common Language Runtime. - API : Une interface de programmation (Application Programming Interface ou API) permet de définir la manière dont un composant informatique peut communiquer avec un autre. C'est donc une interface de code source fournie par un système informatique ou une bibliothèque logicielle, en vue de répondre à des requêtes pour des services qu'un programme informatique pourrait lui faire. La connaissance des API est indispensable à l'interopérabilité entre les composants logiciels. - Release (Mode de compilation) : C’est une version du logiciel qui correspond, du coté pratique, à la version « finale » ou « stable » du dit logiciel; elle est mise à disposition à des fins de « tests de dernière minute » visant à déceler les toutes dernières erreurs subsistant au sein du programme. - Ngen : Exia Nancy Page 3 2008 Prosit 2 L'outil Native Image Generator Tool (Ngen.exe) est un outil qui améliore les performances des applications managées. Ngen.exe crée des images natives, lesquelles sont des fichiers qui contiennent le code machine spécifique au processeur compilé et les installent dans le cache des images natives sur l'ordinateur local. Le runtime peut utiliser à la place des images natives du cache à l'aide du compilateur juste-à-temps (JIT) pour compiler l'assembly d'origine. - Compilation native : Il faut savoir que le mécanisme de compilation native ne génère pas de fichier directement exécutable, mais intégre simplement le code exécutable dans le fichier .beam qui contient le pseudo-code. Cette approche peut sembler étrange, mais elle est en fait très cohérente. Elle permet de distribuer uniquement les fichiers beam tout en conservant le caractère multiplateforme. Seuls les plate-formes pour lequel le code natif peut être exécuté l'utiliseront. Les autres plateformes utiliseront le pseudo-code contenu dans le fichier beam. L'autre avantage majeur est que le mécanisme de fonctionnement des applications existantes n'est pas perturbé. Grâce à ce mécanisme, on peut même compiler certains modules, voire certaines fonctions dans ces modules, qui collaboreront avec des modules interprétés. Axes de recherche Etudier l’environnement .NET .NET est un standard proposé par la société Microsoft, pour le développement d'applications d'entreprises multi-niveaux, basées sur des composants. Microsoft .NET constitue ainsi la réponse de Microsoft à la plate-forme J2EE de Sun. La plate-forme .NET a été élaborée en s'appuyant sur une communauté d'utilisateurs et a abouti à l'élaboration de spécifications. Ces spécifications ont été ratifiées par un organisme international de standardisation, l'ECMA (European Computer Manufacturers Association), ce qui en fait un standard. Ainsi l'effort de standardisation a permis l'émergence de plates-formes portées par des entreprises tierces et disponibles sous un grand nombre de systèmes d'exploitation. On parle généralement de «Framework» (traduisez «socle») pour désigner l'ensemble constitué des services (API) offerts et de l'infrastructure d'exécution. Le framework .NET comprend notamment : L'environnement d'exécution : un moteur d'exécution, appelé CLR (Common Language Runtime), permettant de Exia Nancy Page 4 2008 Prosit 2 compiler le code source de l'application en un langage intermédiaire, baptisé MSIL (Microsoft Intermediate Language) et agissant telle la machine virtuelle Java. Lors de la première exécution de l'application, le code MSIL est à son tour compilé à la volée en code spécifique au système grâce à un compilateur JIT (Just In Time). un environnement d'exécution d'applications et de services web, appelé ASP .NET ; un environnement d'exécution d'applications lourdes, appelé WinForms. Des services, sous forme d'un ensemble hiérarchisé de classes appelé Framework Class Library (FCL). La FCL est ainsi une librairie orientée objet, fournissant des fonctionnalités pour les principaux besoins actuels des développeurs. Le SDK (Software Development Kit) fournit une implémentation de ces classes. Exia Nancy Page 5 2008 Prosit 2 Etudier le .NET Framework I. Qu'est ce que le Framework .NET 3.0 ? Le Framework .NET 3.0, anciennement connu sous le nom de WinFX, est un ensemble de nouvelles technologies qui vont vous permettre de développer des applications révolutionnaires. En fait, le Framework .NET 3.0 est constitué de cinq éléments : Le Framework .NET 2.0 Windows Presentation Foundation (WPF) Windows Communication Foundation (WCF) Windows Workflow Foundation (WF) Windows CardSpace (WCS) Organisation du framework 3.0 Afin de vous faire comprendre au mieux chacune de ces technologies, je vais vous en parler un peu plus en détails. I-A. Le Framework .NET 2.0 Disponible en version finale depuis Octobre 2005, le Framework .NET 2.0 constitue la base de ce nouveau framework. Ainsi, même si vous faîtes appel à de nouvelles classes introduites par le Framework 3.0, vous continuez d'écrire du code C# 2 ou Visual Basic 2005. I-B. Windows Presentation Foundation Windows Presentation Foundation (WPF), de son ancien nom de code Avalon, est le nouveau système d'interfaces graphiques dont le but est de proposer une approche unifiée de l'interface utilisateur, des documents et des médias afin de fournir une expérience utilisateur innovante. Pour cela, WPF utilise un moteur de rendu vectoriel et des accélérations matériels. WPF fonctionne sur Windows Vista, Windows XP et Windows Server 2003. Exia Nancy Page 6 2008 Prosit 2 I-C. Windows Communication Foundation Windows Communication Foundation (WCF), anciennement appelé Indigo, est un Framework unifié pour développer des applications distribuées interopérables, fiables et sécurisées. WCF simplifie grandement le développement d'applications connectées, en proposant un nouveau modèle de programmation orienté service. I-D. Windows Workflow Foundation Windows Workflow Foundation (WF) est une solution, constituée d'un modèle de programmation, d'un moteur d'exécution et d'outils, pour développer et intégrer, rapidement et simplement, des workflows dans les applications .NET. Pour rappel, un workflow est une succession d'actions ou d'étapes qui s'exécutent dans un ordre prédéfini. I-E. Windows CardSpace Windows CardSpace (WCS), ex Infocard, est une nouvelle technologie qui permet aux utilisateurs de prouver leur identité, de façon simple et sécurisée. Alors que dans le monde réel nous utilisons des SmartCard, des cartes de crédits nécessitants un code d'accès, etc.…, sur Internet, l'utilisation de WCS permettra l'utilisation de " cartes d'identités virtuelles ". Plus de soucis donc pour se rappeler les noms d'utilisateur et mot de passe que l'on a choisit pour tel ou tel site : utiliser WCS pour assurez votre identité ! II. Qu'apporte le Framework .NET 3.0 ? Tout simplement une nouvelle façon de travailler visant à vous rendre plus productif ! En effet, dans le cas de WPF (Windows Presentation Foundation), le développement des interfaces graphiques se trouvera plus simplifié pour un résultat souvent bien meilleur. Et l'interaction qu'il existera entre les designers et les développeurs permettra de bien distinguer le travail de chacun. En ce qui concerne WF (Windows Workflow Foundation), là encore le but est le même : vous proposer des outils qui vous permettrons d'utiliser rapidement des Workflows dans vos applications .NET. Pour finir, avec WCF (Windows Communication Foundation), vous serez à même de développer des applications distribuées en un minimum de temps. III. Que faut-il pour exécuter des applications .NET 3.0 ? Pour exécuter une application développée en .NET 3.0, il vous faut deux choses : le Framework .NET 2.0 les composants du Runtime du Framework .NET 3.0. Exia Nancy Page 7 2008 Prosit 2 IV. Que faut-il pour développer des applications .NET 3.0 ? Alors que l'exécution d'applications .NET 3 ne nécessite que l'installation d'un framework, le développement, lui, requière un peu plus d'installation logicielle. En effet, pour développer des applications .NET 3.0, vous aurez besoin : Des composants du Runtime du Framework .NET 3.0 De Visual Studio 2005 Du SDK (Software Development Kit) de Windows Des extensions de WF et WCF/WPF pour Visual Studio 2005 IV-C. Le SDK de Windows Elément indispensable du développement d'applications .NET 3.0, le SDK (Software Development Kit) de Windows contient de la documentation, des exemples de code, des fichiers " header ", des librairies et des outils dont vous aurez besoin pour développer des applications fonctionnant sous Windows. IV-D. Les extensions pour Visual Studio 2005 Les Extensions pour Visual Studio 2005 sont la dernière chose dont vous avez besoin pour vos développements .NET 3. Il y a deux types d'extensions à télécharger, chacune étant indépendante l'une de l'autres : V. Comment déployer une application .NET 3 ? Le déploiement d'une application .NET 3.0 se fait de la même façon que le déploiement d'une application .NET 2.0 classique. Ainsi, vous pourrez utiliser les mêmes techniques, à savoir : Les Windows Installer Une simple copie de fichiers (XCopy) ClickOnce Cependant, peut importe la méthode d'installation que vous avez utilisé : votre application WPF Exia Nancy Page 8 2008 Prosit 2 doit posséder les droits " FullTrust " pour pouvoir s'exécuter/se déployer correctement ! Etudier Visual studio. http://plasserre.developpez.com/v1d3.htm Exia Nancy Page 9 2008 Prosit 2 Etudier la compilation .NET Microsoft a fait appel à de nombreux experts internationaux pour mettre au point un p-code très expressif et puissant. Le résultat est considéré comme une grande réussite et force est de constater que la rapidité d’exécution des programmes ne semble pas pâtir du surplus de travail pour le processeur. Le langage IL étant particulièrement conçu pour les composants et commun aux différents langages cibles de .NET, il fournit des instructions que l’on ne trouverait normalement pas dans un code compilé. Des utilitaires nommés ILAsm (assembleur) et ILDAsm (désassembleur) permettent de travailler directement en langage IL. Nous nous intéresserons à ILDAsm, car il permet de découvrir le contenu d’un assemblage (fichier .DLL à ne pas confondre avec les anciens DLL Windows), comme ci-dessous où l’on examine le contenu de mscorlib.dll, qui contient des objets coeurs de .NET. Les assemblages sont auto-descriptifs à l’aide des méta-données, ce qui permet au développeur d’utiliser directement ILDAsm s’il désire visualiser rapidement les classes d’un assemblage. Le code se compile en exécutable .EXE à l’aide de ILASM, le pendant de ILDASM. Cet exécutable ne l’est que virtuellement, puisqu’il contient le p-code, indépendant du processeur et de la plateforme. Les futures versions de Windows devraient être « IL-Ready », c’est-à-dire reconnaître une extension .IL ou .ASM et exécuter le p-code directement. A la différence de Java, ce p-code n’est jamais interprété mais est toujours compilé en code natif par un compilateur Just-In-Time (JIT). Selon Microsoft, .NET n’utilise ni machine virtuelle ni interpréteur mais un environnement d’exécution contrôlé (managed runtime environment). Les termes peuvent différer, mais les deux architectures gèrent l’exécution du code intermédiaire, inspectent la mémoire et surveillent les violations d’accès. Il semblerait néanmoins que la nuance soit justifiée par les mécanismes mis en œuvre par Microsoft pour optimiser les performances de son p-code. Trois compilateurs JIT sont ou seront fournis : Le compilateur JIT par défaut. Ce dernier effectue des compilations paresseuses en code natif à chaque fois qu’une portion de code est appelée par le programme. Les souches de code IL sont alors progressivement remplacées par du code natif, ce qui permet d’offrir des performances remarquables, comparables à du code natif avec un ramasse-miettes. Toujours pour améliorer les performances, le ramasse-miettes est Exia Nancy Page 10 2008 Prosit 2 également paresseux au sens où il attend que l’occupation mémoire justifie un nettoyage pour effectuer une collecte des objets inutiles. Le compilateur EconoJIT. Ce compilateur est destiné aux terminaux mobiles dont la limitation principale est la mémoire vive. Il fonctionne comme le compilateur par défaut, à ceci près qu’il fourni un code moins optimisé et peut, si la mémoire devient trop faible, éliminer des portions de code qu’il a compilé (code pitching). Les portions sont recompilées à la demande, en utilisant la souche IL. Le compilateur OptJIT. Prévu dans une version future de l’environnement, ce compilateur laissera la possibilité à des tierces parties d’écrire un sur-ensemble de IL appelé OptIL (Optimized IL). OptIL est un IL avec des instructions supplémentaires pour indiquer à OptJIT comment optimiser certaines portions de code. L’intérêt du OptJIT est donc de fournir des optimisations liées à certaines tâches, comme les calculs mathématiques lourds mais les applications multimédia. Exia Nancy Page 11 2008 Prosit 2 Exia Nancy Page 12 2008 Prosit 2 Exia Nancy Page 13 2008 Prosit 2 Validations des Hypothèses - Faux. Une API est un module - Faux. .NET utilise la POO - Faux. Un Framework est un package - Vrai. On utilise du code managé sous .NET - Vrai. On a besoin de la CLR et CTS pour utiliser .NET - Vrai. Il existe plusieurs modes de compilation - Vrai. Le mode release est utilisé pour les versions non-finales - Vrai. Garbage collector est un destructeur - Vrai. Ngen est un compilateur compatible avec la POO - Gné ? Exia Nancy Page 14 2008 Prosit 2 - Faux. Visual studio est le seul IDE a prendre en charge .NET - Vrai. IDE signifie environnement de développement intégré - Faux. Framework est un environnement de développement développé par Microsoft - Faux. Il n’existe pas d’IDE pour .NET pour Linux. Exia Nancy Page 15