DLL hell

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

Опис важкості[ред. | ред. код]

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

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

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

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

Примітки[ред. | ред. код]

  1. What does DLL Hell mean?. techopedia.com.