DLL hell

DLL hell (буквально: «пекло динамічних бібліотек») — конфліктна ситуація, що виникає з динамічними бібліотеками DLL в операційній системі Microsoft Windows які спільно можуть використовуватись різними програмами, але після оновлення спільної бібліотеки однією з програм, працюють непередбачувано з рештою програм. Тобто, сутність проблеми полягає в конфлікті версій DLL, покликаних підтримувати певні функції. DLL hell — приклад поганої концепції програмування, яка, подібно до прихованої міни, призводить до різкого зростання труднощів при ускладненні та вдосконаленні системи. Аналогічна проблема в інших ОС може називатися «пекло залежностей».[1]

Опис проблеми

За початковим задумом, DLL повинні бути сумісними від версії до версії і взаємозамінними в обидві сторони.

Реалізація механізму DLL така, що несумісність і невзаємозамінність стає скоріше правилом, ніж винятком, що призводить до великої кількості проблем.

  • Відсутність стандартів на імена, версії і положення DLL в файловій структурі призводить до того, що несумісні DLL легко заміщають або відключають один одного.
  • Відсутність стандарту на процедуру встановлення призводить до того, що встановлення нових програм призводить до заміщення робочих DLL на несумісні версії.
  • Відсутність підтримки DLL з боку компонувальників і механізмів захисту призводить до того, що несумісні DLL можуть мати однакові ім'я та версію.
  • Відсутні стандартні інструменти ідентифікації та керування системою DLL користувачами і адміністраторами.
  • Використання окремих DLL для забезпечення зв'язку між завданнями призводить до нестабільності складних застосунків.

Для уникнення конфліктів зазвичай використовують безліч надлишкових копій DLL для кожної програми, що зводить нанівець початкову ідею отримання переваги від DLL як стандартних модулів, що зберігаються один раз в пам'яті і поділюваних багатьма завданнями. Крім того, при такому досвіді після виправлення помилок в DLL або відновлення системи з архіву кількість різних DLL, що носять одне і те ж ім'я і виконують ті ж функції, зростає, а самочинне оновлення версії або виправлення помилок стає неможливим.

Див. також

  • Side-by-side assembly[en]
  • Global Assembly Cache

Примітки

  1. What does DLL Hell mean?. techopedia.com. Архів оригіналу за 23 березня 2019. Процитовано 23 березня 2019.

Посилання

  • DLL Hell, the Inside Story [Архівовано 18 серпня 2019 у Wayback Machine.]
  • Как избежать кошмара библиотек DLL [Архівовано 4 березня 2016 у Wayback Machine.]
  • Simplifying Deployment and Solving DLL Hell with the .NET Framework [Архівовано 31 жовтня 2018 у Wayback Machine.]
  • .NET and DLL Hell


PROG Це незавершена стаття про програмування.
Ви можете допомогти проєкту, виправивши або дописавши її.