DLL iadul

DLL hell (DLL-coșmar, literalmente: DLL -hell) este un blocaj asociat cu gestionarea DLL-urilor dinamice în sistemul de operare Microsoft Windows .

O problemă similară în alte sisteme de operare se numește Dependency Hell .

Esența problemei constă în conflictul versiunilor DLL concepute pentru a suporta anumite funcții. DLL Hell  este un exemplu de concept de programare prost care, ca o mină ascunsă, duce la o creștere bruscă a complexității și îmbunătățirea sistemului.

Descrierea problemei

Conform ideii originale, DLL-urile ar trebui să fie compatibile de la o versiune la alta și interschimbabile în ambele direcții.

Implementarea mecanismului DLL este de așa natură încât incompatibilitatea și neinterschimbabilitatea devin mai degrabă regula decât excepția, ceea ce duce la o mulțime de probleme.

Pentru a evita conflictele, este obișnuit să folosiți multe copii redundante ale DLL pentru fiecare aplicație, ceea ce învinge ideea originală de a profita de DLL-uri ca module standard care sunt stocate o dată în memorie și partajate de multe sarcini. În plus, cu o astfel de experiență, după repararea erorilor dintr-un DLL sau restaurarea unui sistem dintr-o arhivă, numărul de DLL-uri diferite care au același nume și îndeplinesc aceleași funcții crește, iar actualizarea automată a versiunii sau corectarea erorilor devine imposibilă.

Istoricul problemei

Această problemă a apărut la primele versiuni ale Microsoft Windows .

Versiunile timpurii de Mac OS X s-au confruntat cu probleme similare , dar folosind tehnologii diferite.

Problema reapare atunci când programul este încercat să fie rulat cu un alt DLL față de care a fost testat, ceea ce arată defectul original al conceptului general care permite înlocuirea arbitrară a versiunilor de module.

Măsuri împotriva iadului DLL

Se recomandă ca aceste măsuri să fie luate simultan pentru cele mai bune rezultate:

Iadul DLL ca motivație pentru proiectul .NET

În 2001, Microsoft a definit subsistemul .NET Framework pentru dezvoltarea pachetelor ( ansambluri : vezi aici ). Acest subsistem a început să suporte o bibliotecă de rulare comună prin atașarea unui DLL la clasa principală de executabil.

Link -uri

Vezi și