Hell in a Cell (2015)
- 1 year ago
- 0
- 0
DLL hell (DLL-кошмар, буквально: DLL -ад) — тупиковая ситуация, связанная с управлением динамическими библиотеками DLL в операционной системе Microsoft Windows . Аналогичная проблема в других ОС носит название ад зависимостей .
Сущность проблемы заключается в конфликте версий DLL, призванных поддерживать определённые функции. DLL hell — пример плохой концепции программирования, которая, подобно скрытой мине, приводит к резкому возрастанию трудностей при усложнении и совершенствовании системы.
По исходному замыслу, DLL должны быть совместимыми от версии к версии и взаимозаменяемыми в обе стороны.
Реализация механизма DLL такова, что несовместимость и невзаимозаменяемость становится скорее правилом, чем исключением, что приводит к большому количеству проблем.
Для избежания конфликтов обычно используют множество избыточных копий DLL для каждого приложения, что сводит на нет исходную идею получения преимущества от DLL как стандартных модулей, хранящихся один раз в памяти и разделяемых многими задачами. Кроме того, при таком опыте после исправления ошибок в DLL или восстановления системы из архива количество различных DLL, носящих одно и то же имя и выполняющих те же функции, возрастает, а автоматическое обновление версии или исправление ошибок становится невозможным.
Эта проблема возникла в ранних версиях Microsoft Windows .
С подобными же проблемами сталкивались ранние версии Mac OS X , но с использованием других технологий.
Проблема постоянно повторяется, когда программу пытаются запустить не с той DLL, c которой она тестировалась, что показывает изначальную порочность общей концепции, допускающей произвольную замену версий модулей.
Данные меры рекомендуют предпринимать одновременно для получения наилучшего результата:
В 2001 корпорация Майкрософт определила подсистему .NET Framework для разработки пакетов ( assemblies : см. ). Эта подсистема стала поддерживать общую библиотеку времени исполнения, присоединяя DLL к основному исполняемому классу.