FAQ C++/CLI et VC++.Net
FAQ C++/CLI et VC++.NetConsultez toutes les FAQ
Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013
- Qu'est-ce que le framework .Net 2 ?
- Qu'est-ce que le garbage collector ?
- Qu'est-ce qu'It Just Work ?
- Qu'est-ce que le CLR (Common Language Runtime)?
- Qu'est-ce que le CLS (Common Language Specification)?
- Qu'est-ce que le CTS (Common Type System)?
- Qu'est-ce que le CLI (Common Language Infrastructure)?
- Qu'est-ce que le MSIL ?
Pour résumer en termes simples, .Net représente la volonté de Microsoft de délivrer le logiciel comme un service.
Pour les développeurs, il s'agit d'une nouvelle approche de conception, de développement et de déploiement du logiciel.
Pour les architectures, il s'agit d'augmentation de capacité de déploiement des applications Internet : moins sur les clients et plus sur les serveurs, pour une meilleure utilisation d'internet, orientant le futur d'Internet vers un système d'exploitation plutôt qu'en un réseau d'ordinateurs.
Le framework .Net comprend tout ce qu'il faut pour développer, déployer, exécuter des Web Services, des applications Web et des applications Windows. On peut voir le framework comme une application 3-tiers :
- Technologies pour développer des applications
- Bibliothèque de classes du framework .Net
- Common language runtime (CLR)
Le CLR est le moteur d'exécution du noyau .Net pour exécuter des applications. Il apporte des services tels que la sécurité d'accès de code, la gestion de la vie d'un objet, la gestion des ressources, la sûreté des types, etc ...
En terme de déploiement, Visual Studio 2005 propose des outils de déploiement extrêmement simples et rapides. De plus, il faut veiller à ce que le framework 2.0 soit installé sur la machine.
Le garbage collector est un mécanisme qui permet à un ordinateur de détecter et de supprimer les objets managés du heap qui ne sont plus référencés par une application.
Le garbage collector du framework .net ajoute la fonctionnalité intéressante de compacter la mémoire après libération des objets managés inutilisés.
Le garbage collector est une révolution de programmation, car il annonce la fin des fuites mémoires, qui font rager tout développeur. Un développeur n'a plus à se soucier d'appeler la destruction de ses objets avec l'opérateur delete.
Sous Visual Studio 2003, la technologie d'intéropabilité s'appelle IJW : "It Just Works". Avec Visual Studio 2005, elle est désormais appelée "Interop Technologies". Vous entendrez parler indifféremment des deux, qui représentent le même concept.
Pour toute méthode native dans une application, le compilateur crée un point d'entrée managé et un point d'entrée non managé. L'un deux est l'actuelle méthode d'implémentation alors que l'autre permet de créer un pont et permet l'utilisation des opérations de Marshaling. C'est le point d'entré managé qui est toujours utilisé, sauf quand le compilateur ne peut pas retranscrire le code en MSIL ou lorsque l'on utilise le "#pragma unmanaged".
IJW permet d'accéder directement, sans ajouter de code, à des méthodes non managées à partir de code managé. On peut de même utiliser des wrapper pour avoir un accès direct aux objets COM, ou aux dll natives.
Toujours sans code ajouté, sans DLLImport, le méchanisme IJW est bien souvent plus rapide. Il s'agit juste d'inclure le fichier d'entête et de linker avec la librairie d'import.
On l'appelle aussi le runtime .NET. Le CLR est le moteur d'exécution du noyau .Net pour exécuter des applications. Il apporte des services tels que la sécurité d'accès de code, la gestion de la vie d'un objet, la gestion des ressources, la sûreté des types, etc ...
Pour interagir entièrement avec des objets managés quel que soit le langage dans lequel ils ont été implémentés, les objets managés ne doivent exposer aux appelants que les fonctionnalités qui sont communes à tous les langages avec lesquels ils doivent fonctionner.
Pour cette raison, un ensemble de fonctionnalités de langage appelé spécification CLS (Common Language Specification), qui comprend les fonctionnalités de langage de base nécessaires à de nombreuses applications, a été défini.
La spécification CLS permet d'optimiser et d'assurer l'interopérabilité des langages en définissant un ensemble de fonctionnalités sur lequel les développeurs peuvent compter dans de nombreux langages. La spécification CLS établit également des exigences de conformité CLS ; elles vous permettent de déterminer si votre code managé est conforme à la spécification CLS et dans quelle mesure un outil donné prend en charge le développement du code managé qui utilise des fonctionnalités CLS.
Si votre composant n'utilise que des fonctionnalités CLS dans des interfaces API qu'il expose à un autre code (y compris des classes dérivées), le composant est assuré d'être accessible à partir d'un langage de programmation prenant en charge la spécification CLS.
Il est important de comprendre que le respect du CLS augmente la sécurité de votre programme.
Afin que des classes définies dans plusieurs langages puissent communiquer entres elles, elles ont besoin d'un ensemble de types de données communs. C'est l'objet du CTS, il définit les types de données que le Runtime .NET comprend et que les applications .NET peuvent utiliser.
Dans le contexte de C++/CLI, cela correspond à du C++ pouvant interagir avec le CLR. Voir la définition du C++/CLI
Lien : Qu'est-ce que le C++/CLI ?
C'est un jeu d'instruction indépendant du CPU généré par les compilateurs .NET, à partir de langages comme le J#, C# ou Visual Basic. Le langage MSIL est compilé avant ou pendant l'exécution du programme par le VES (Virtual Execution System), qui fait partie intégrante du CLR.