DLL hell

DLL hell

DLL hell (DLL-кошмар, буквально: DLL-ад) — тупиковая ситуация, связанная с управлением динамическими библиотеками DLL в операционной системе Microsoft Windows.

Аналогичная проблема в других ОС носит название Dependency hell.

Сущность проблемы заключается в конфликте версий DLL, призванных поддерживать определённые функции. DLL hell — пример плохой концепции программирования, которая, подобно скрытой мине, приводит к резкому возрастанию трудностей при усложнении и совершенствовании системы.

Содержание

Описание проблемы

По исходному замыслу, DLL должны быть совместимыми от версии к версии и взаимозаменяемыми в обе стороны.

Реализация механизма DLL такова, что несовместимость и невзаимозаменяемость становится скорее правилом, чем исключением, что приводит к большому количеству проблем.

  • Отсутствие стандартов на имена, версии и положение DLL в файловой структуре приводит к тому, что несовместимые DLL легко замещают или отключают друг друга
  • Отсутствие стандарта на процедуру установки приводит к тому, что установка новых программ приводит к замещению работающих DLL на несовместимые версии
  • Отсутствие поддержки DLL со стороны компоновщиков и механизмов защиты приводит к тому, что несовместимые DLL могут иметь одинаковые имя и версию
  • Отсутствуют стандартные инструменты идентификации и управления системой DLL пользователями и администраторами
  • Использование отдельных DLL для обеспечения связи между задачами приводит к нестабильности сложных приложений

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

История проблемы

Эта проблема возникла в ранних версиях Microsoft Windows.

С подобными же проблемами сталкивались ранние версии Mac OS X, но с использованием других технологий. Не избегают подобных проблем дистрибуторы библиотек Open Source.

Поэтому, когда речь идёт о не-майкрософтовской среде, эту ситуацию называют dependency hell (кошмар зависимостей).

Проблема постоянно повторяется, когда программу пытаются запустить не с той DLL, c которой она тестировалась, что показывает изначальную порочность общей концепции, позволяющей произвольную замену версий модулей.

Меры против DLL hell

Данные меры рекомендуют предпринимать одновременно для получения наилучшего результата:

  • подсчитать контрольную сумму кода функции вызываемой из DLL - сравнить с контрольной суммой функции используемой при написании программы.
  • Операционная система должна поставляться совместно с менеджером пакетов, чтобы иметь возможность прослеживать все взаимозависимости DLL, при этом использование менеджера пакетов должно поощряться, а индивидуальная инсталляция DLL — по возможности отвергаться.
  • Централизованное распространение библиотек
  • Допустить возможность параллельного использования нескольких версий одной и той же DLL [1].
  • При модификации программного обеспечения для частного использования поставлять также модифицированные версии DLL.
  • Во время проектирования DLL должна тщательно продумываться концепция функций и версий. DLL не должны использоваться без необходимости, а библиотеки, связанные только с одним приложением, должны подключаться статически (в EXE-файл).

DLL hell как мотивация проекта .NET

В 2001 корпорация Майкрософт определила подсистему .NET Framework для разработки пакетов (assemblies: см. здесь). Эта подсистема стала поддерживать общую библиотеку времени исполнения, присоединяя DLL к основному исполняемому классу.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "DLL hell" в других словарях:

  • DLL Hell — Saltar a navegación, búsqueda El término DLL Hell (infierno de las DLL) se refiere a los problemas ocasionados por las DLL (bibliotecas de enlace dinámico). Estas bibliotecas consisten en un conjunto de código común que puede estar compartido… …   Wikipedia Español

  • DLL hell — In computing, DLL hell is a colloquial term for the complications that arise when working with dynamic link libraries, (DLLs), used with Microsoft Windows operating systems.Although the term is Windows specific, and the more general term is… …   Wikipedia

  • DLL Hell — In computing, DLL Hell is a term for the complications that arise when working with dynamic link libraries (DLLs) used with Microsoft Windows operating systems,[1] particularly legacy 16 bit editions which all run in a single memory space. While… …   Wikipedia

  • DLL Hell — Der Ausdruck DLL Konflikt (auch DLL Hell, deutsch: „DLL Hölle“ genannt) bezeichnet ein Problem, das durch die Installation von Dynamic Link Library (DLLs) auf den Betriebssystemen der Windows Reihe (Windows 3.x, Windows 9x, Windows ME, Windows NT …   Deutsch Wikipedia

  • DLL Hell — El término DLL Hell (El infierno de las DLLs) se refiere a los problemas ocasionados por las DLLs (Bibliotecas de enlace dinámico). Estas bibliotecas consisten en un conjunto de código común que puede estar compartido entre varias aplicaciones.… …   Enciclopedia Universal

  • DLL hell — noun Problems caused by incompatible versions of a DLL (dynamic link library). A more succinct way to say this is that the versioning the CLR enforces for strong named assemblies means the end of DLL hell …   Wiktionary

  • DLL — (англ. Dynamic link library  динамически подключаемая библиотека)  понятие операционных систем Microsoft Windows и IBM OS/2; динамическая библиотека, позволяющая многократное применение различными программными приложениями. K DLL… …   Википедия

  • Hell (disambiguation) — Hell, according to many religious beliefs, is a place of suffering during afterlife where the wicked or unrighteous souls are punished.* Hell in Christian beliefs * Hell in popular culture * Problem of Hell, a variant of the problem of evil *… …   Wikipedia

  • DLL-Hölle — Der Ausdruck DLL Konflikt (auch DLL Hell, deutsch: „DLL Hölle“ genannt) bezeichnet ein Problem, das durch die Installation von Dynamic Link Library (DLLs) auf den Betriebssystemen der Windows Reihe (Windows 3.x, Windows 9x, Windows ME, Windows NT …   Deutsch Wikipedia

  • DLL-Konflikt — Der Ausdruck DLL Konflikt (auch DLL Hell, deutsch: „DLL Hölle“ genannt) bezeichnet ein Problem, das durch die Installation von Dynamic Link Library (DLLs) auf den Betriebssystemen der Microsoft Windows Reihe entstehen kann. Vorwiegend sind ältere …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»