Programmation .NET/Introduction
.Net (point Net / dot Net) est le nom de la nouvelle plateforme de développement de Microsoft. Les applications développées pour cette plateforme sont indépendantes :
- du système d'exploitation et de l'architecture matérielle sur laquelle elles sont lancées. Cependant il faut une implémentation du CLR? (Common Language Runtime) pour cette configuration,
- du langage de programmation utilisé. En effet, quel que soit le langage de programmation utilisé, le code source de l'application est compilé en langage intermédiaire appelé MSIL? (MicroSoft Intermediate Language), CIL? (Common Intermediate Language) ou en abrégé IL? (Intermediate Language).
Fonctionnement
Dans la phase de développement, le code source de l'application dans un langage de programmation .Net est compilé en instructions IL. Ce code est appelé Code géré (Managed code en anglais). Ce code est associé à un manifeste contenant des informations sur l'application et ses classes. Ces deux composants constituent un assemblage? (assembly en anglais).
Lors du lancement d'une application .Net, le CLR? (Common Language Runtime) gère l'exécution de l'application :
- Le chargeur charge les classes lorsque celles-ci sont référencées, et alloue l'espace nécessaire à la réprésentation mémoire de la classes et ses membres,
- Le compilateur « juste à temps »? (Just-In-Time compiler en anglais, ou JIT compiler) compile chaque méthode appelée en code natif, et le place dans le cache mémoire pour éviter une nouvelle compilation,
- Le garbage collector gère les objets non référencés (objets qui ne sont donc plus utilisés) et libère l'espace mémoire qu'ils occupaient.
API .Net commune
L'API (Application Programming Interface) est l'ensemble des classes et fonctions disponibles aux applications pour gérer diverses fonctionnalité : gestion de fichiers, compression, interface graphique, programmation réseau, ...
Ces classes et ces fonctions sont communes à tous les langages .Net (même nom et même fonctionnalités) car celles-ci sont disponibles sous forme de librairies (.dll) compilées en langage intermédiaire.
Langages de programmation
Une application développée pour la plateforme .Net peut utiliser n'importe quel langage de programmation si celui-ci possède un compilateur produisant des instructions IL? et utilise les classes de la plateforme .Net. Le nom d'un tel langage est souvent suivi du suffixe ".Net".
Microsoft fournit les compilateurs pour les langages de programmation suivants :
- C# .Net : langage supportant toutes les fonctionnalités de la plateforme .Net,
- C++ .Net (C++),
- J# .Net (Java) : langage de migration pour les applications J++, et dont le support n'est plus assuré,
- VB .Net (Visual Basic),
- ASP .Net (ASP).
Interopérabilité entre les langages
L'interopérabilité entre les langages de programmation permet de coder les différentes parties (ou librairies) d'une application en utilisant des langages de programmation différents.
Cette interopérabilité est assurée par :
- Une API commune à tous les langages .Net,
- Des règles de codage pour le code source dans les différents langages .Net.
Ces règles de codage sont codifiées par le CLS (Common Language Specification).
Règles de codage
Afin de permettre l'interopérabilité entre les langages de programmation, le code source doit suivre certaines règles afin que tout autre langage puisse utiliser la classe ou la librairie.
Exemple de règle : minuscules et majuscules
Le langage C# .Net distingue les minuscules des majuscules. Par exemple, les noms nombre
et NOMBRE
désignent deux entités différentes.
Au contraire, le langage VB .Net ne fait pas cette distinction.
Il est donc impossible d'utiliser une classe C# contenant les membres nombre
et NOMBRE
dans un programme Visual Basic .Net.
Il est donc déconseillé d'utiliser deux identifiants ne variant que par la différence minuscule/majuscule. Cela s'applique au nom absolu, c'est à dire précédé des espaces de noms et de la classe définissant l'entité.
Exemple de règle : fonctions globales
Le langage VB .Net permet de créer des fonctions globales définies en dehors de toute classe. Or le langage C# .Net est exclusivement orienté objet, et n'accepte pas les entités définies hors de toute classe.
Il est donc déconseillé de créer des fonctions globales.