Diferența dintre asamblare și DLL

Diferența dintre asamblare și DLL
Diferența dintre asamblare și DLL

Video: Diferența dintre asamblare și DLL

Video: Diferența dintre asamblare și DLL
Video: 300 de kilometri pe oră cu trenul care levitează, MAGLEV - Cavaleria.ro 2024, Noiembrie
Anonim

Asamblare vs DLL

O bibliotecă este o colecție de resurse care pot fi folosite pentru a dezvolta aplicații. O bibliotecă este de obicei alcătuită din subrutine, funcții, clase, valori și tipuri. În timpul procesului de conectare (de obicei, realizat de un linker), bibliotecile și executabilele fac referire una la alta. Fișierele DLL sunt fișierele de bibliotecă care sunt legate dinamic. DLL a fost dezvoltat de Microsoft. Dar din cauza unor probleme prezente cu fișierele DLL, Microsoft a venit cu formatul de fișier Assembly (cu framework-ul. NET). Fișierele de asamblare sunt foarte asemănătoare DLL-urilor din punct de vedere fizic, dar au multe diferențe interne.

Ce este DLL?

Dynamic Link Library (cunoscută mai frecvent ca DLL) este o implementare a bibliotecii partajate dezvoltată de Microsoft. Utilizează extensiile.dll,.ocx sau.drv și sunt utilizate în sistemele de operare Microsoft Windows și OS/2..dll este folosit de fișierele DLL obișnuite. Și extensia.ocx este utilizată de bibliotecile care conțin controale ActiveX, iar extensia.drv este utilizată de fișierele de driver de sistem vechi. Formatul de fișier DLL este același cu fișierele Windows EXE (fișiere executabile portabile pe Windows pe 32 de biți/64 de biți și New Executable pe Windows pe 16 biți). Prin urmare, orice combinație de cod, date și resurse poate fi conținută în fișierele DLL (la fel ca în fișierele EXE). De fapt, fișierele de date cu formatul de fișier DLL sunt numite DLL de resurse. Bibliotecile de pictograme (cu extensia.icl) și fișierele de font (cu extensiile.fon și.fot) sunt exemple de DLL-uri de resurse.

Componentele numite secțiuni alcătuiesc un DLL și fiecare secțiune are propriile atribute, cum ar fi doar citire/inscriptibil și executabil/neexecutable. Secțiunile de cod sunt executabile, în timp ce secțiunile de date nu sunt executabile. Secțiunile de cod sunt partajate, iar secțiunile de date sunt private. Aceasta înseamnă că toate procesele care utilizează DLL vor folosi aceeași copie a codului, în timp ce fiecare proces va avea propria copie a datelor. Biblioteca dinamică principală pentru Windows este kernel32.dll, care conține funcțiile de bază (funcționalități legate de fișiere și memorie) pe Windows. COM (Component Object Model) este extensia DLL la OOP (Object Oriented Programming). DLL-urile convenționale sunt mai ușor de utilizat decât fișierele COM.

Ce este un ansamblu?

Fișierele de asamblare au fost introduse de Microsoft pentru a rezolva mai multe probleme prezente cu fișierele DLL. Fișierele de asamblare au fost introduse cu framework-ul Microsoft. NET. O unitate logică executabilă de funcționalitate se numește asamblare. Ansamblurile sunt executabile sub. NET CLR (Common Language Runtime). Din punct de vedere fizic, ansamblurile există ca fișiere EXE sau DLL. Dar, sunt foarte diferite de DLL-urile Microsoft Win32, pe plan intern. Un fișier de asamblare este format dintr-un manifest, metadate, MISL (Microsoft Intermediate Language cod) și alte resurse. Un ansamblu se autodescrie. Manifestul conține informații precum nume, versiune, cultură, nume sigur, lista de fișiere, tipuri și dependențe. Codul MISL este executat prin CLR (nu poate fi executat direct).

Care este diferența dintre asamblare și DLL?

DLL este o bibliotecă conectată dinamic. Deși, ansamblurile sunt fizic egale cu DLL-urile, ele sunt foarte diferite în interior. Nu este posibil să se mențină consistența între un set de DLL-uri, dar CLR-ul poate menține consistența între un set de ansambluri, deoarece ansamblurile se autodescriu (ele conțin lista de dependențe în interior). Spre deosebire de DLL-uri, informațiile de versiuni sunt impuse pentru ansambluri (de către CLR). Implementarea alăturată (aplicații diferite folosind versiuni diferite) este posibilă cu ansambluri.

Recomandat: