DLL peklo

DLL hell (DLL-nightmare, doslova: DLL -hell) je zablokování související se správou dynamických knihoven DLL v operačním systému Microsoft Windows .

Podobný problém v jiných operačních systémech se nazývá Dependency hell .

Podstata problému spočívá v konfliktu verzí DLL určených pro podporu určitých funkcí. DLL hell  je příkladem špatné koncepce programování, která jako skrytý důl vede k prudkému nárůstu složitosti a vylepšení systému.

Popis problému

Podle původní myšlenky by měly být DLL kompatibilní od verze k verzi a zaměnitelné v obou směrech.

Implementace mechanismu DLL je taková, že nekompatibilita a nezaměnitelnost se stává spíše pravidlem než výjimkou, což vede k mnoha problémům.

Aby se předešlo konfliktům, je běžné používat mnoho redundantních kopií DLL pro každou aplikaci, což maří původní myšlenku využití knihoven DLL jako standardních modulů, které jsou jednou uloženy v paměti a sdíleny mnoha úkoly. Navíc s takovými zkušenostmi se po opravě chyb v DLL nebo obnově systému z archivu zvýší počet různých DLL, které mají stejný název a provádějí stejné funkce, a automatický upgrade verze nebo oprava chyb se stává nemožným.

Historie problému

K tomuto problému došlo v dřívějších verzích systému Microsoft Windows .

Dřívější verze Mac OS X čelily podobným problémům , ale používaly jiné technologie.

Problém se znovu objeví při pokusu o spuštění programu s jinou knihovnou DLL, ze které byl testován, což ukazuje původní chybu v obecné koncepci, která umožňuje libovolné nahrazení verzí modulů.

Opatření proti peklu DLL

Pro dosažení nejlepších výsledků se doporučuje provádět tato opatření současně:

DLL peklo jako motivace pro projekt .NET

V roce 2001 Microsoft definoval subsystém .NET Framework pro vývoj balíčků ( sestavení : viz zde ). Tento subsystém začal podporovat běžnou runtime knihovnu připojením knihovny DLL k hlavní třídě spustitelných souborů.

Odkazy

Viz také