Vous êtes sur la page 1sur 17

5.1.

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 [10].

5.2. La plate forme .Net

Microsoft avait conçue 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 –Figue 1 -:

● Le CLR (Common Language Runtime).

● Un ensemble de classes de bibliothèques.

● Un ensemble de langages de programmation.

● Environnement ASP.NET [10].

Mohamed El Mehdi elmehdi23@gmail.com 1


La plate forme .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 [7].

5.3. 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

Mohamed El Mehdi elmehdi23@gmail.com 2


informations clés, telles que : le nom de la compagnie, type du service et
l'emplacement géographique [10].

5.4. 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 [10].

5.5. 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

Mohamed El Mehdi elmehdi23@gmail.com 3


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 [10].

5.6. 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. La figure 2 donne
une vue d'ensemble de la bibliothèque de classes de la plateforme .NET
[10].

Mohamed El Mehdi elmehdi23@gmail.com 4


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) [12].

5.7. 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 [10].

5.8. 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

Mohamed El Mehdi elmehdi23@gmail.com 5


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 [10].

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.

Figure 3 : Architecture client-serveur de la plateforme


asp.net

Mohamed El Mehdi elmehdi23@gmail.com 6


5.8.1. Architecture ASP.NET

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 [8] :

5.8.2. 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.

5.8.3. 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.

5.8.4. 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.

5.8.5. 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.

5.8.6. 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.

5.8.7. Gestion de l’état

Mohamed El Mehdi elmehdi23@gmail.com 7


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.

5.8.8. 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é.

5.8.9. 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.

5.8.10. 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

Mohamed El Mehdi elmehdi23@gmail.com 8


5.9. 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++ [10].

5.10. Introduction à C# :

C# est le nouveau langage introduit à la plateforme .NET, il est


dérivé du C++, cependant, C# est un langage modern et orienté objet
[10].

Il faut noter que C# est sensible à la casse i.e. Main ce n'est pas la même
que maiN.

5.10.1 Caractéristiques du langage:

5.10.1.1. 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,

Mohamed El Mehdi elmehdi23@gmail.com 9


A titre d'exemple, nous jetons un coup d'œil 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.

5.10.1.2. 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).

Mohamed El Mehdi elmehdi23@gmail.com 10


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''.

5.10.1.3. 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.

Mohamed El Mehdi elmehdi23@gmail.com 11


● Les paramètres Parmas: 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.

5.10.1.4. 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

Mohamed El Mehdi elmehdi23@gmail.com 12


pouvons écrire une portion de programme nommé index pour permettre
d'accéder à la classe si comme si elle est un tableau.

5.10.1.5. 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 la GetProcAdress 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 la DLL lui-même, et fonction
comme une documentation spécifiée.

5.10.1.6. 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.

5.10.2. Compilation en C#:

Mohamed El Mehdi elmehdi23@gmail.com 13


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

5.10.2.1. 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 la CPU 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 [9], 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.

5.10.2.2. 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 la CPU 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 la CPU 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

Mohamed El Mehdi elmehdi23@gmail.com 14


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é.

5.10.2.3. Le 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
[9] du listage du toutes les méthodes disponibles pour une classe
particulière.

5.10. 2.4. 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.

Mohamed El Mehdi elmehdi23@gmail.com 15


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 DLL1 [11].

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

Mohamed El Mehdi elmehdi23@gmail.com 16


Mohamed El Mehdi elmehdi23@gmail.com 17