DLL pokol

A DLL-pokol (DLL-rémálom, szó szerint: DLL -pokol) egy holtpont, amely a dinamikus DLL -ek kezeléséhez kapcsolódik a Microsoft Windows operációs rendszerben .

Egy hasonló probléma más operációs rendszerekben az úgynevezett Dependency hell .

A probléma lényege a bizonyos funkciók támogatására tervezett DLL-verziók ütközésében rejlik. A DLL pokol  példája egy rossz programozási koncepciónak, amely, mint egy rejtett bánya, a rendszer összetettségének és fejlesztésének meredek növekedéséhez vezet.

A probléma leírása

Az eredeti elképzelés szerint a DLL-eknek verzióról verzióra kompatibilisnek és mindkét irányban cserélhetőnek kell lenniük.

A DLL-mechanizmus megvalósítása olyan, hogy az inkompatibilitás és a felcserélhetőség hiánya inkább szabály, mint kivétel, ami sok problémához vezet.

Az ütközések elkerülése érdekében gyakori, hogy minden alkalmazáshoz sok redundáns DLL-példányt használnak, ami megcáfolja azt az eredeti elképzelést, hogy a DLL-eket szabványos modulokként használják ki, amelyeket egyszer tárolnak a memóriában, és sok feladat megosztja. Ezen túlmenően ilyen tapasztalattal a DLL-ben lévő hibák kijavítása vagy a rendszer archívumból történő visszaállítása után megnő az azonos nevű és ugyanazokat a funkciókat ellátó DLL-ek száma, és lehetetlenné válik a verzió automatikus frissítése vagy a hibák javítása.

A probléma története

Ez a probléma a Microsoft Windows korai verzióiban fordult elő .

A Mac OS X korai verziói hasonló problémákkal küzdöttek , de eltérő technológiát használtak.

A probléma akkor jelentkezik, amikor a programot egy másik DLL-lel próbálják futtatni, amelyből tesztelték, ami az általános koncepció eredeti hibáját mutatja, amely lehetővé teszi a modulverziók tetszőleges cseréjét.

Intézkedések a DLL pokol ellen

A legjobb eredmény érdekében ezeket az intézkedéseket javasolt egyidejűleg megtenni:

DLL pokol mint motiváció a .NET projekthez

2001-ben a Microsoft definiálta a .NET-keretrendszer alrendszerét a csomagok fejlesztésére ( összeállítások : lásd itt ). Ez az alrendszer támogatni kezdett egy közös futásidejű könyvtárat azáltal, hogy egy DLL-t csatolt a fő végrehajtható osztályhoz.

Linkek

Lásd még