Introduction à la plateforme .Net et ASP.Net

Introduction à la plateforme .Net et ASP.Net

Introduction

C & C++ ont été les langages choisis pour le développement d'applications commerciales et critiques. Ces langages grandement choisis par les développeurs, ils offrent un degré de contrôle précis et une utilisation de fonctions systèmes de bas niveau. Cependant, ils prennent un plus de temps pour le développement d'applications.

La communauté du développeur avait besoin d'un langage universel qui rassemble la puissance des deux derniers langages (C/C++), ce langage doit aider au développement rapide d'applications (RAD), mais aussi avec une grande précision du contrôle et qui s'intègre le mieux dans le domaine du développement de nouvelles technologies telles que le Web et XML.

La facilitation d'échange pour les programmeurs C/C++, tant qu'il offre la facilité d'appréhender ce langage; sont les deux bénéfices du ce nouveau langage le C#. Microsoft introduisait C# pour le publique à la conférence du développeur professionnel à Orlando, Florida été 2000. C# combine les meilleurs idées provenant de plusieurs langages tels que C/C++ et java. Avec des améliorations de la productivité trouvées dans la plate forme Microsoft .NET (.NET Framework) et fournit une expérience très productive de l'art du codage pour les développeurs novices et experts.

La plate forme .Net

Microsoft avait conçu C# à partir de plusieurs parties pour avoir davantage de la nouvelle plateforme .NET (.NET Framework). Puisque C# est un nouveau acteur dans cette plateforme, on doit avoir une très bonne connaissance de la plateforme .NET; que fournit-elle et comment augmente-elle la productivité?

La plate forme .NET a été inventée à partir de quatre éléments qui figurent ci-dessous:

  • Le CLR (Common Language Runtime).
  • Un ensemble de classes de bibliothèques.
  • Un ensemble de langages de programmation.
  • Environnement ASP.NET [10].

La plateforme .Net a été conçue pour trois buts à l'en-tête:

  • Etre destinée à rendre les applications Windows plus fiables, tant qu'on produit des applications avec un très grand degré de sécurité.
  • Elle a été destinée à simplifier le développement des applications Web et aussi les services Web qui ne fonctionnent pas dans l'ordre traditionnel, mais aussi bien dans les périphériques mobiles.
  • Finalement la plateforme .net a été conçue pour fournir un ensemble unique de bibliothèques qui travaillent avec plusieurs langages.

Les sections suivantes examinent les différents composants de la plateforme .NET.

La plateforme .NET fournit ainsi l'ensemble des outils et technologies nécessaires à la création d'applications Web distribuées. Elle expose un modèle de programmation cohérent, indépendant du langage toute en garantissant une parfaite interopérabilité avec les technologies existantes et une migration facile depuis ces mêmes technologies

Le développement WEB

La plateforme .NET a été conçue avec une seule chose en-tête: enrichir le développement Internet. Ces nouveaux enrichissements à ajouter pour le développement Internet se nomment : Services Web. Nous pouvons penser aux services web en tant que site web qui interagit avec les programmes, plutôt qu'avec les personnes; au lieu de délivrer des pages web, un service web prend la forme de la demande (requête) en XML, qui traite une fonction particulière, puis retourner une réponse au demandeur à la forme d'un message XML.

Dans l'ordre pour que le modèle du service web survivre à l'évolution des langages de programmation, il doit inclure plus qu'une simple interface au web, des protocoles qui permettent aux applications à trouver des services web disponibles autour du LAN ou l'Internet. Ce protocole permet aussi à l'application d'explorer le service web et de déterminer comment communiquer avec lui, aussi bien comment échanger les informations. Pour permettre la découverte du service web. L l'UDDI (Universal Discovery, Description & Integration) est établi. Ceci autorise aux services web d'être inscrits et recherché. Basé sur des informations clés, telles que : le nom de la compagnie, type du service et l'emplacement géographique.

Développement d'applications

A coté du développement web, nous pouvons toujours développer des applications traditionnelles avec la plateforme .NET, les applications crées avec cette plateforme sont basées sur les feuilles Windows (Windows Forms), ces feuilles sont quelques peu une hybridation entre les feuilles VB6 et les feuilles VC++. Cependant, ces feuilles se ressemblent presque les mêmes que ces prédécesseurs, elles sont pures Orientées Objets et Class-based (très semblables aux objets du MFC).

Ces feuilles Windows supportent plusieurs contrôles classiques tels que: les boutons, les zones de texte, les labels et aussi bien les contrôles ActiveX. A coté de ces contrôles, de nouveaux composants ont été ajoutés tels que: PrintPreview, LinkLabel, ColorDialog OpenFileDialog sont supportables.

Le développement d'applications avec la plateforme .NET fournit aussi plusieurs améliorations qui ne se trouvent pas dans les autres langages, par exemple: la sécurité, ces mesures de sécurité peuvent déterminer si une application peut écrire ou lire à partir d'un fichier du disque. Ils autorisent aussi l'intégration de signatures numériques dans l'application pour assurer que l'application est écrite par une source confiante.

La plate forme .NET permet aussi d'intégrer des composants informationnels et les informations de version, Dans le code actuel. Ceci rend l'installation à la demande soit automatique ou par l'intervention de l'utilisateur. Tous ça réduit grandement les coûts dans l'entreprise.

Le Common Language Runtime CLR -le langage d'exécution commun -

L'un des buts de conception de la plateforme .NET a été d'unifier les moteurs d'exécution, alors on peut travailler avec un seul ensemble de services d'exécution. La solution apportée par la plateforme .NET est nommée: le CLR. Ceci fournit plusieurs fonctionnalités telles que : le chargement des classes, la traduction du code source ne un langage intermédiaire, la gestion de la mémoire, la sécurité, un traitement robuste d'erreurs pour n'importe quel langage qui travaille avec la plateforme .NET.

Tous les langages du .NET peuvent utiliser la variété de services d'exécution sans que les développeurs s'inquiètent si son langage supportent ou non telles services.

Le CLR permet aux langages d'interopérer l'un avec l'autre. La mémoire peut être allouée par un code écrit par un langage -par exemple VB- et peut être libérée par un code écrit par un autre langage -C# par exemple-, les erreurs peuvent être attrapées par un langage et traitées par un autre.

Bibliothèque de classes de la plate forme .NET

La plateforme .NET fournit plusieurs classes prédéfinies qui aident les développeurs à réutiliser son code. La bibliothèque de classes de la plateforme .NET contient du code pour plusieurs sujets de programmation tels que le Threading, les E/S, support de bases de données, analyse XML, structures de données telles que les piles et les files. Le meilleur du tout, est que cette bibliothèque de classes est disponible pour n'importe quel langage de programmation qui supporte la plateforme .NET.

Grâce au CLR, n'importe quel langage .NET peut utiliser n'importe quelle classe dans la bibliothèque de classes de la plateforme .NET, parce que tous les langages actuels supportent le même environnement d'exécution, ils peuvent utiliser n'importe quelle classe déjà employée dans la plateforme .NET. Ceci veut dire que n'importe quelle fonctionnalité disponible pour un langage est disponible pour n'importe quel autre langage de la plateforme .NET.

Le code de la bibliothèque de classes .NET est architecturalement semblable au code écrit avec l'utilisateur de la plate forme .NET. Le code est écrit simplement en utilisant un langage supporté par la plateforme .NET et construit avec les outils de développement .NET.

L'architecture de classes .NET est un modèle de classes orienté objet permettant de développer, pour l'essentiel:

  • Des applications graphiques classiques.
  • Des applications s'exécutant en mode de ligne de commande.
  • Des services Web.
  • Des applications Web.
  • Des services système.
  • Des composants d'interface graphique.
  • Des composants système (services Windows NT, ou XP).

Les langages de programmation .NET

La plateforme .NET fournit un ensemble d'outils qui nous aident à écrire du code qui s'emploie avec la plateforme .NET. Microsoft fournit une collection de langages qui sont déjà compatibles avec la plateforme .NET, C# est l'un de ces langages. Les nouvelles versions du Visual Basic et Visual C++ ont été crées pour avoir davantage de la plateforme .NET.

Le développement des langages compatibles .NET n'est pas restreint à Microsoft. Le groupe .NET de Microsoft a publié la documentation qui montre comment les langages du marché peuvent travailler avec la plateforme .NET et comment être compatible .NET.

L'environnement ASP.NET

ASP.Net est le nouvel environnement de développement web réalisé par Microsoft permettant la création d'application web dynamique coté serveur au sein de la plateforme dot net. Il s'agit de la nouvelle génération d'actives Servers Pages (ASP 1996), elle propose de nombreuses améliorations, tel que l'interaction avec les bases de données la personnalisation des pages web en fonction des utilisateurs, l'affichage des pages sur les dispositifs mobiles et même de construire des applications de commerce électronique ...etc.

ASP.NET améliore l'ASP original par adjonction de la technique du code-behind. En ASP, le HTML et le script sont mixés dans un seul document. Avec ASP.NET et code-behind, le code et le HTML peuvent être séparés.

Une des grandes nouveautés de Asp.net est le concept de « code behind », celui-ci consiste en la séparation du code de l'application (le fond) et l'interface HTML (la forme) ce qui facilite le travail mutuel de développeur et du designer du site. La partie html (interface) et la partie c# (traitements) peuvent ainsi être séparées au sein d'un même fichier ou même dans des fichiers différents.

Les pages Web sont beaucoup semblables au feuilles Windows, les feuilles Web nous permettent de glisser déplacer les contrôles dans la feuilles.

ASP.NET utilise la plateforme .NET et aussi un compilateur JIT (Just-In-Time/compilation juste à temps). Les pages ASP traditionnelles s'exécutent très lentement parce que le code est interprété.

ASP.NET compile le code lorsqu'il est installé dans le serveur ou pour la première fois qui s'est interrogé, dans lequel augmente la vitesse grandement.

Alors ASP.NET est un langage compilé, ce principe est explique dans la figure ci-dessous :

Lors d'une demande venant d'un navigateur client pour le serveur, ce dernier vérifie si la page a déjà été compilée. Si c'est le cas, la page, déjà au format HTML est envoyée au navigateur du client. Dans le cas contraire, la page est au format ASP.NET et doit être compilée au format MSIL, (MicroSoft Intermediate Language), le langage qui est généré lors de tout appel à des sources .NET, ensuite, la page est générée au format HTML.

Cette page peut contenir des scripts utilisant des langages utilisés du côté du client tel que le Jscript. La particularité de tels scripts est de ne pas devoir effectuer de retours serveur et ainsi limiter les échanges.

Bien qu'ASP.NET comporte de nombreuses fonctionnalités déjà familières aux développeurs ASP classique de nombreuses modifications ont été apportées à l'architecture ASP.NET, qui ont permis d'augmenter la productivité. Voici quelques nouvelles fonctionnalités d'ASP.Net

Les Web formes

Il s'agit du nouveau modèle de programmation d'ASP.NET.Les formulaires web combinent la productivité d'ASP à la facilité de développement de Visual Basic par la manière de drag and drop de contrôle spécifique sur le concepteur de pages web.

Les Contrôles serveur

Composant majeure du modèle de programmation des formulaires web, les contrôles serveur ASP.net correspondent à des éléments HTML, ils sont exécutés sur la machine du serveur et délivrent du code HTML adapté aux navigateurs clients de haut niveau.

Les services web

C'est la partie principale d'ASP.NET qui permet aux développeurs de mettre des services à la disposition d'autres développeurs sur internet (ou sur intranet locale).Les services web sont basés sur le standard SOAP (Simple Object Access Protocol).les services web favorisent le dialogues entres diverses plate-forme.

La mise en cache

ASP.NET inclut un nouveau moteur de mise en mémoire cache puissant qui permet aux développeurs d'améliorer les performances de leurs applications en réduisant les charges de traitement du serveur web et du serveur de base de données.

Amélioration de la configuration

Ce mécanisme offre une nouvelle méthode de stockage des informations de configurations d'applications Web. Au lieu de laisser le serveur web stocker ces informations dans une base de données difficilement accessible, elles sont stockées dans des fichiers de configurations lisibles par le développeur.

Gestion de l'état

ASP.NET offre un mécanisme permettant de sauvegarder différent états de différentes sessions possibles concernant une page web dynamique. Ce principe augmente l'interactivité des internautes.

Sécurité

C'est une fonction extrêmement importante dans les applications web actuelles. Le modèle de sécurité d'ASP.NET a considérablement progressé, il inclut des nouvelles méthodes d'authentification et d'autorisations ainsi que l'accès au code sécurisé.

Amélioration de la fiabilité

Ce sont des nouvelles fonctions visant à améliorer la fiabilité des applications web, dont le redémarrage d'applications, une nouvelle gestion des processus et une meilleure gestion de la mémoire.

Forces du langage ASP.Net

Une des grandes forces de asp.net est sa grande portabilité face aux différents clients en effet les différents contrôles qui composent les pages web seront crées en code HTML dépendant des navigateurs clients quelles qui soient Internet Explorer, Mozilla, Netscape...

Une des grandes nouveautés d'ASP.NET est le concept de « code-behind », celui-ci consiste en la séparation du code de l'application (le fond) et l'interface HTML (la forme) ce qui facilite le travail mutuel de développeur et du designer du site. La partie html (interface) et la partie c# (traitements) peuvent ainsi être séparées au sein d'un même fichier ou même dans des fichiers différents.

Voici une vue d'ensemble des avantages de ASP.Net :

  • Simple et facile à utiliser.
  • Basé sur des fichiers (pas de projets).
  • Designer des web formes performant.
  • Désigner des données intégrées.
  • Outils et assistants orientés tâches évoluées.
  • Support FTP pour l'hébergement des pages.
  • Code Builders (assistants de génération de code HTML).
  • Partage de code "Code Snippets".
  • Adapté au développement de site personnel et au développement professionnel.
  • Génère de nombreux types de rapports.
  • Création de tout type de graphique.
  • Gestion des changements de page pour l'impression

Du C/C++ au C#

Le langage de programmation C# a été créé dans l'esprit des langages de programmation C/C++, cela est justifie par la puissance de ses fonctionnalités et la faciliter d'apprentissage, mais C# est né à partir de la pulvérisation (écrasement). Cependant, on ne peut pas dire la même chose pour le C & C++, Microsoft a pris la liberté d'enlever quelques fonctionnalités - comme les pointeurs -.

Microsoft a conçue C# pour retenir la syntaxe du C&C++. Les développeurs qui sont familiers avec ces langages peuvent apprendre C# et débuter le codage relativement vite. Le grand avantage du C# est que ces concepteurs choisissent de ne pas être compatible avec C/C++. Cela peut paraître une mauvaise affaire, il est actuellement une bonne nouvelle. C# élimine les choses qui rendent C/C++ difficiles et compliqués, parce que tout code C est aussi un code C++, C++ conserve tout le manque trouvés en langage C. alors C# peut conserver la puissance de ses prédécesseurs et élimine le manque qui rend difficile la vie du programmeur avec C/C++.

Introduction à C#

C# est le nouveau langage introduit à la plateforme .NET, il est dérivé du C++, cependant, C# est un langage moderne et orienté objet.
Il faut noter que C# est sensible à la casse i.e. Main ce n'est pas la même que maiN.

Caractéristiques du langage

Les classes

Le code et les données doivent être encapsulés dans une classe, on peut définir des variables à l'extérieur de la classe, mais on ne peut pas écrire du code autre qu'à l'intérieur de la classe. Les classes peuvent avoir des constructeurs, qui s'exécutent quand un objet de la classe est crée, et aussi de destructeur, qui s'exécute quand un objet de la classe est détruit. Les classes supportent l'héritage simple. Finalement toutes les classes sont dérivées de la classe de base qui s'est nommée Object,

A titre d'exemple, nous jetons un coup d'oeil sur la classe dénommée Family, cette classe contient deux champs statiques qui conservent le nom et le prénom d'une famille et bien qu'une méthode qui renvoie le nom complet d'un membre d'une famille.

class Family
{
    public string FirstName;
    public string LastName;
    public string FullName ()
    {
        return FirstName + LastName;
    }
}

C# nous permet de grouper nos classes dans une collection nommée namespace. Les namespaces possèdent des noms et peuvent aider à organiser les collections de classes dans un groupement logique. Tous les namespaces ont un rapport avec la plateforme .NET. Microsoft a aussi choisie d'inclure quelques classes qui aident la compatibilité et à l'accès aux API. Ces classes sont inclues dans le Microsoft namespace.

Types de données

C# permet de travailler avec deux types de données : les références et les valeurs.

Les données de type valeur conservent des valeurs immédiates. Les données de type référence stockent autres choses en mémoire.

Les types primitifs tels que char, int et float, aussi bien les valeurs énumérés et les structures, sont des données de type valeur. Les types références stockent des variables qui manipulent des objets et des tableaux. C# est implémenté avec des types référence prédéfinies (objet et string), bien que des types valeurs prédéfinies (sbyte, short, int, long, byte, ushort, uint, ulong, float, double, bool, char et decimal). Nous pouvons aussi définir nos propres types de données. Finalement toutes les valeurs et les références se dérivent de la classe de base (Object).

C# nous permet aussi de convertir une variable d'un type à un autre. On peut travailler à la fois avec les conversions implicites et les conversions explicites, les conversions implicites se réussissent et aucune information n'est perdue. La conversion explicite peut causer une perte de données. On doit écrire l'opérateur du cast dans notre code pour avoir un transtypage explicit.

On peut travailler à la fois avec des tableaux unidimensionnels et multidimensionnels en C#. Les tableaux unidimensionnels peuvent être rectangulaire, dans lequel chacun des tableaux ont la même dimension ou découpés, dans lesquels chacun des tableaux possède une dimension différente.

Les classes et les structures peuvent avoir des données membres nommées propriétés et champs. Les champs sont des variables qui sont associées dans la classe ou la structure encapsulée. On peut définir une structure nommée employee, par exemple, qui possède un champs nommé Name. Si on définit une variable CurrentEmploye de type empolyee, on peut retirer le nom de l'employée par l'écriture suivante: CurrentEmployee.Name. Les propriétés sont semblables aux champs, mais nous permet d'écrire du code pour spécifier qu'est ce qui se passe lorsque le code accède à la valeur. Par exemple si le nom de l'employée doit être seulement en lecture à partir d'une base de données, on peut écrire une portion du code qui se déroule comme ça: '' quand l'utilisateur demande la valeur de la propriété Name, lisez à partir de la base de données le nom puis le retourner dans une chaîne de caractères''.

Les fonctions

Une fonction est une portion du code appelable qui peut retourner ou pas une valeur au code appelant, un exemple de fonction peut être la fonction FullName montrée précédemment, dans la classe Family, la fonction est associée à une portion du code qui retourne une information, alors que une méthode ne retourne généralement aucune information. Cependant, on réfère par fonction ces les deux appellations.

Les fonctions peuvent avoir quatre genres de paramètres:

  • Les paramètres d'entrée: ils possèdent des valeurs envoyées à la fonction, mais la fonction ne peut pas changer ces valeurs.
  • Les paramètres de sortie: ils n'ont pas de valeurs lorsqu'ils sont envoyés à la fonction, mais la fonction peut les donner des valeurs puis les renvoyer à l'appelant.
  • Les paramètres références: passer en référence pour une autre valeur, ils ont des valeurs qui proviennent de la fonction et cette valeur peut être changée dans la fonction.
  • Les paramètres Params: ils définissent le nombre de la variable dans une liste.

C# et le CLR travaillent ensemble pour fournir une gestion automatique de la mémoire, on n'a pas besoin d'écrire du code pour allouer ou libérer la mémoire, le CLR contrôle la mémoire automatiquement, recherche et extraire lorsqu'on a besoin. Il libère aussi la mémoire automatiquement lorsqu'elle est n'est pas assez suffisante dès son utilisation (ceci est nommé Garbage Collection).

C# fournit une variété d'opérateurs qui nous permet d'écrire des expressions mathématiques. Plusieurs mais pas tout de ces opérateurs peuvent être redéfinis, ce qui nous permet de changer la façon dont ils fonctionnent.

C# supporte une longue liste d'instructions qui nous permet de définir plusieurs façons d'exécuter le code, les instructions du contrôle du flux qu'utilisent des mots clés tels que: if, switch, while, for, break et continue, permettent au code à se diviser en plusieurs parties, dépendant des valeurs de variables.

Les classes peuvent avoir du code et des données. Chaque membre de classe peut avoir quelque chose nommé: l'accessibilité, qui définie la visibilité des membres aux autres objets. C# supporte: public, protected, internal, protected internal et private.

Les variables

Les variables peuvent être définies comme des constantes, les constantes ont des valeurs que l'on ne peut pas modifier durant l'exécution du code.

La déclaration du type énuméré spécifie le nom d'un groupe de constantes.

C# fournit un mécanisme prédéfini pour la définition et la gestion des évènements. Si on écrit une classe qui traite une opération très longue, on peut appeler un évènement quand elle se termine. Le client peut s'abonner à cet évènement et le prendre dans son code. Ce qui donne au client l'avertissement lorsque l'opération est terminée. Le mécanisme de traitement des évènements utilisé en C# est appelé Delegates, dans lesquels les variables réfèrent la fonction.

Note: une procédure est associée à l'évènement dans le code, cette procédure détermine les actions qui doivent être traitées lorsqu'un évènement se présente, tel que l'appuie du bouton par l'utilisateur.

Si notre classe conserve un ensemble de valeurs, les clients peuvent accéder à ces valeurs comme si la classe été un tableau, nous pouvons écrire une portion de programme nommé index pour permettre d'accéder à la classe si comme si elle est un tableau.

Les interfaces

C# supporte les interfaces, qui sont des groupes de propriétés, méthodes et évènements qui spécifient un ensemble de fonctionnalités. Les classes C# peuvent implémenter les interfaces, ce qui indique aux utilisateurs que la classe supporte un ensemble de fonctionnalités documentées par l'interface. On peut développer des implémentations d'interfaces sans mêler avec un code existant, ce qui minimise la les problèmes de compatibilité. Une fois l'interface est publiée, elle ne peut pas être changée, mais elle peut être développée à travers l'héritage.

Les classes C# peuvent implémenter plusieurs interfaces bien que les classes peuvent seulement hériter d'une seule classe de base.

Aujourd'hui plusieurs applications supportent les add-ins, supposons qu'on a crées un éditeur de code pour les applications, cet éditeur de code, lorsqu'il est exécuté il a la capacité de charger les add-ins, pour faire ceci, l'add-in doit respecter certaines règles. Le DLL (add-in) doit exporter une fonction nommée CEEntry et le nom du DLL doit débuter par CEd. Lorsqu'on exécute notre éditeur de code, il scanne son répertoire de travail pour rechercher tous les DLLs qui débutent par CEd. Lorsqu'il trouve un, il le charge, puis il utilise pour localiser la fonction CEEntry à l'intérieur du DLL, donc il faut vérifier que nous avons suivis toutes les règles nécessaires à la création des add-ins. Si une instance est utilisée dans cette instance, notre DLL add-in peut implémenter une interface, par conséquent il doit garantir la présence des méthodes, propriétés et évènements dans lui-même, et fonction comme une documentation spécifiée.

Les attributs

Les attributs déclarent des informations additionnelles au CLR à propos de notre classe. Au fur et à mesure du développement d'applications, si nous nous voulons avoir une classe auto-descriptrice, on doit suivre l'approche déconnectée dans laquel la documentation est stockée dans un fichier externe tels qu'un DLL ou même un fichier HTML. Les attributs permettent la résolution du ce problème par la permission de développer et d'attacher les informations aux classes (toute sorte d'informations). Par exemple, on peut utiliser un attribut pour documenter la classe et aussi attacher les informations d'exécutions dans la classe pour définir comment il acte lorsqu'il est utilisé. Les possibilités sont nombreuses, pour cela Microsoft intégra plusieurs attributs prédéfinis dans la plateforme .NET

Compilation en C#

Lors d'exécution du code C# à travers du compilateur C# produit deux potions importantes d'informations. Le code et le méta donné.

Microsoft Intermediate Language (MSIL)

Le code produit par le compilateur C# est écrit dans un langage nommé MSIL, est un code construit à partir de la spécification du jeu d'instructions qui spécifie comment le code sera exécuté. Il contient les instructions pour les opérations comme l'initialisation des variables appel des objets et traitement d'erreurs. Durant le processus de compilation, C# n'est pas le seul langage dont le code source est traduit en MSIL. Tous les langages compatibles .NET produisent le code MSIL, quand le code source est compilé. Parce que tous les langages .NET compilent en le même jeu d'instruction (MSIL) et parce que tous les langages .NET utilisent le même environnement d'exécution, le code produit par les différents langages peut s'interopérer facilement.

MSIL n'est pas un jeu d'instructions spécifique pour une CPU, il ne connaît rien du tout à propos de utilisée et notre machine ne connaît rien du tout du MSIL, ainsi, le code MSIL est traduit en code machine quand le code est exécuté pour la première fois. Ce processus est nommé compilation juste à temps, ou JIT. La tâche du compilateur JIT est de traduire le code MSIL générique en code directement exécutable par la machine.

Pourquoi générer le code MSIL?

Premièrement le code MSIL permet à notre code compilé d'être un code portable, qui peut être migré d'une plateforme matérielle à une autre. Supposons qu'on a écrits un code C# dans un ordinateur de bureau et qu'on veut l'exécuter dans un PC portable, il est très probable que ces deux machines possèdent deux CPU s différentes. Si un seul possède un compilateur C# qui s'adresse à une CPU spécifique, alors nous avons besoin de deux compilateurs C#, l'un pour d'ordinateur du bureau et l'autre pour le PC portable, ainsi on doit compiler notre code deux fois, en assurant qu'on doit mettre le code exact dans la machine exacte. Avec MSIL on compile une seule fois, installer la plateforme .NET dans l'ordinateur du bureau en incluant le compilateur JIT qui traduit le code MSIL en code exécutable pour une CPU spécifique pour notre ordinateur de bureau, installer la plateforme .NET dans l'ordinateur portable en incluant le compilateur JIT qui traduit le même code MSIL en un code directement exécutable pour de l'ordinateur portable. Nous avons maintenant un seul code MSIL qui peut être exécuté dans n'importe quel autre machine qui contient la le compilateur JIT .NET. le compilateur JIT de cette machine s'occupe de la production du code exécutable relatif à sa CPU.

Une autre raison qui justifier l'utilisation du code MSIL est que le jeu d'instructions peut être lu facilement par le processus de vérification, C'est une tâche du compilateur JIT qui sert à vérifier notre code pour assurer qu'il est aussi nettoyé que possible. Le processus de vérification assure que notre code accède à la mémoire convenablement et qu'il utilise les types exacts de variables lors d'appel de méthodes qui prédisent un type spécifié. Ces contrôles assurent que notre code n'exécute que les instructions convenables. Le jeu d'instructions du MSIL été conçu pour rendre ce processus de vérification relativement facile. Un jeu d'instructions spécifique à une CPU est optimisé pour une exécution rapide du code, mais ils produisent un code qui peut être difficile à lire, donc difficile à vérifier. Avoir un compilateur C# qui fait sortir directement pour une CPU spécifique rend la vérification du code plus difficile ou même impossible. Allouer le compilateur JIT .NET à vérifier le code assure que l'accès à la mémoire par le code est en Bug-free et que le type des variables est correctement utilisé.

Les méta-données

Le processus de compilation produit aussi de méta-données, d'où est une portion très importante du code partagé par la plateforme .NET. si on utilise C# pour développer des applications destinées à l'utilisateur final ou à construire une bibliothèque de classe, nous allons utiliser du code .NET déjà prêt et compilé. Ce code est peut être fournit par Microsoft comme une partie de la plateforme .NET ou été importé par l'utilisateur à partir de l'Internet. Le point clé dans l'utilisation de ces données externes est de laisser le compilateur C# savoir quelles sont les classes et les variables dans le code de base alors il va rassembler le code source qu'on a écrit avec le code trouvé dans le fichier pré compilé (code de base ou fichier de travail).

Le méta-données ressemblent à un sommaire pour notre code compilé, le compilateur C# place le méta-données dans le code compilé ainsi que le code MSIL généré. Ce méta-données décrit avec précision toutes les classes que nous avons écrits et comment elles sont structurées. Toutes les méthodes des classes et les variables d'information sont entièrement décrites dans les méta-données, déjà prêtes en lecture par d'autres applications. Par exemple: VB.NET peut lire le méta-données à partir de la bibliothèque .NET pour fournir la capacité de l'IntelliSense du listage du toutes les méthodes disponibles pour une classe particulière.

Assemblages

Parfois, nous utilisons C# pour développer des applications pour utilisateurs finals, ces applications sont empaquetées en un fichier exécutable.

Cependant, dans quelques cas nous ne voulons pas développer des applications entières. Par exemple: au lieu de construire un code de bibliothèque qui sera utilisé par un autre utilisateur, on construit des classes utiles en C#, puis distribuer le code aux développeurs VB.NET. Dans des cas semblables on construit un assemblage au lieu de développer des applications entières.

Un assemblage (Assembly) est un package de code et méta-données. Lorsqu'on déploie un ensemble de classes dans un assemblage, nous les unissons dans une même unité et ces classes partagent le même degré du contrôle de version, informations de sécurité et les requis d'activation. il faut remarquer que les assemblages peuvent prendre aussi la forme d'un fichier DLL.

Il y a deux types d'assemblages: les assemblages privés et les assemblages globaux, lorsqu'on construit notre assemblage, on a pas besoin de le spécifier s'il est global ou privé. La différence s'éclaire lorsqu'on déploie notre assemblage. Avec un assemblage privé, notre code est disponible à une seule application, pour cela notre assemblage est empaqueté dans un fichier DLL et il est installé dans le même répertoire que celle de l'installation. La seule application qui peut utiliser notre code est l'exécutable qui se trouve dans le même répertoire de l'installation.

Si on doit partager notre code aux plusieurs applications, on doit considérer le déploiement de l'assemblage comme un assemblage global. Les assemblages globaux peuvent être utilisés par n'importe quelle autre application .NET. sans tenir compte du répertoire d'installation

A voir également
Ce document intitulé « Introduction à la plateforme .Net et ASP.Net » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous