Différence entre Assembly et DLL

Anonim

Assemblage vs DLL

Une bibliothèque est une collection de ressources qui peut être utilisée pour développer des applications. Une bibliothèque est généralement constituée de sous-routines, de fonctions, de classes, de valeurs et de types. Pendant le processus de liaison (généralement effectué par un éditeur de liens), les bibliothèques et les exécutables font référence les uns aux autres. Les fichiers DLL sont les fichiers de bibliothèque liés dynamiquement. DLL a été développé par Microsoft. Mais en raison de certains problèmes présents avec les fichiers DLL, Microsoft est venu avec le format de fichier d'assemblage (avec le framework. NET). Les fichiers d'assemblage sont très similaires physiquement aux DLL, mais ils présentent de nombreuses différences internes.

Qu'est-ce qu'une DLL?

Dynamic Link Library (plus communément appelé DLL) est une implémentation de bibliothèque partagée développée par Microsoft. Il utilise le. dll,. ocx ou. drv extensions et ils sont utilisés dans les systèmes d'exploitation Microsoft Windows et OS / 2 … dll est utilisé par les fichiers DLL normaux. Et. ocx extension est utilisé par les bibliothèques qui contiennent des contrôles ActiveX et. L'extension drv est utilisée par les fichiers du pilote du système hérité. Le format de fichier DLL est identique aux fichiers EXE Windows (fichiers exécutables portables sur Windows 32 bits / 64 bits et New Executable sur Windows 16 bits). Par conséquent, toute combinaison de code, de données et de ressources peut être contenue dans des fichiers DLL (comme dans les fichiers EXE). En fait, les fichiers de données avec le format de fichier DLL sont appelés DLL de ressources. Les bibliothèques d'icônes (avec l'extension.icl) et les fichiers de polices (avec les extensions.fon et. Fot) sont des exemples de DLL de ressources.

Les composants appelés sections constituent une DLL et chaque section a ses propres attributs comme lecture seule / écriture et exécutable / non exécutable. Les sections de code sont exécutables, tandis que les sections de données ne sont pas exécutables. Les sections de code sont partagées et les sections de données sont privées. Cela signifie que tous les processus utilisant la DLL utiliseront la même copie du code, alors que chaque processus aura sa propre copie des données. La bibliothèque dynamique principale pour Windows est kernel32. dll, qui contient les fonctions de base (fonction liée au fichier et à la mémoire) sous Windows. COM (Component Object Model) est l'extension de DLL à OOP (Object Oriented Programming). Les DLL classiques sont plus faciles à utiliser que les fichiers COM.

Qu'est-ce qu'un assemblage?

Les fichiers d'assemblage ont été introduits par Microsoft afin de résoudre plusieurs problèmes présents avec les fichiers DLL. Les fichiers d'assemblage ont été introduits avec Microsoft. Cadre NET. Une unité logique de fonctionnalité exécutable est appelée un assembly. Les assemblies sont exécutables sous. NET CLR (Common Language Runtime). Physiquement, les assemblages existent en tant que fichiers EXE ou DLL. Mais, ils sont très différents des DLL Microsoft Win32, en interne. Un fichier d'assemblage est constitué d'un manifeste, de métadonnées, de MISL (code Microsoft Intermediate Language) et d'autres ressources.Une assemblée est auto-descriptive. Le manifeste contient les informations telles que le nom, la version, la culture, le nom fort, la liste des fichiers, les types et les dépendances. Le code MISL est exécuté via CLR (il ne peut pas être exécuté directement).

Quelle est la différence entre l'assembly et la DLL?

DLL est une bibliothèque liée dynamiquement. Bien que les assemblys soient physiquement égaux aux DLL, ils sont très différents en interne. Il n'est pas possible de maintenir la cohérence entre un ensemble de DLL, mais le CLR peut maintenir la cohérence entre un ensemble d'assemblys, car les assemblys sont auto-descriptifs (ils contiennent la liste des dépendances en interne). Contrairement aux DLL, les informations de version sont appliquées aux assemblys (par le CLR). Le déploiement côte à côte (différentes applications utilisant différentes versions) est possible avec les assemblys.