DLL это супер фаил
30.01.2017
Фактически полных преимуществ от внедрения динамически подключаемых библиотек получить не удалось по причине явления, называемого DLL hell («DLL-ад»). DLL hell возникает, когда несколько приложений требуют одновременно различные, не полностью совместимые версии библиотек, что приводит к сбоям в этих приложениях и к конфликтам типа DLL hell, резко снижая общую надёжность операционных систем. Поздние версии Microsoft Windows стали разрешать параллельное использование разных версий DLL (технология Side-by-side assembly), что свело на нет преимущества изначального принципа модульности.
Создано на конструкторе сайтов Okis при поддержке Flexsmm - вк накрутка
Распространённость версий Windows
Хронология
График выхода и поддержки Windows
- Windows — семейство проприетарных операционных систем корпорации Microsoft, ориентированных на применение графического интерфейса при управлении. Изначально Windows была всего лишь графической надстройкой для MS-DOS. По состоянию на август 2014 года под управлением операционных систем семейства Windows по данным ресурса Net Applications работает около 89%персональных компьютеров. Windows работает на платформах x86, x86-64, IA-64 и ARM. Существовали также версии для DEC Alpha, MIPS, PowerPC и SPARC.
Первоначально предполагалось, что введение DLL позволит эффективно организовать память и дисковое пространство, используя только один экземпляр библиотечного модуля для различных приложений. Это было особенно важно для ранних версий Microsoft Windows с жёсткими ограничениями по памяти.
Далее предполагалось улучшить эффективность разработок и использования системных средств за счёт модульности. Замена DLL-программ с одной версии на другую должна была позволить независимо наращивать систему, не затрагивая приложений. Кроме того, динамические библиотеки могли использоваться разнотипными приложениями — например, Microsoft Office, Microsoft Visual Studio и т. п.
В дальнейшем идея модульности выросла в концепции Component Object Model и System Object Model.
Это семейство операционных систем реального времени было специально разработано для мобильных устройств. Поддерживаются процессоры ARM, MIPS, SuperH и x86. В отличие от остальных операционных систем Windows, операционные системы этого семейства продаются только в составе готовых устройств, таких как смартфоны, карманные компьютеры, GPS-навигаторы, MP3-проигрыватели и другие. В настоящее время под термином «Windows CE» понимают только ядро операционной системы. Например, Windows Mobile 5.0 включает в себя ядро Windows CE 5.0.
Для операционных систем Microsoft Windows, перечисленных в разделе «Данная статья применима к» большая часть функциональных возможностей операционной системы обеспечивается библиотеки динамической компоновки (DLL). Кроме того при запуске программы на одной из этих операционных систем Windows, большинство функций программы может предоставляться библиотеками DLL. Например некоторые программы могут содержать множество различных модулей и каждый модуль программы содержится и распределенные в библиотеках DLL.
Использование библиотек DLL способствует модульная структура кода, повторное использование кода, эффективного память и дисковое пространство. Таким образом операционная система и программы загружаются быстрее, работают быстрее и занимают меньше места на диске на компьютере.
Когда программа использует библиотеку DLL, проблема, которая называется зависимость может привести к не на выполнение программы. Когда программа использует библиотеку DLL, создается зависимость. Если другая программа перезаписывает и разбивает эту зависимость, исходная программа может перестать функционировать.
С внедрением в Microsoft платформы.NET Framework большинство проблем зависимости были устранены с помощью сборок.
Дополнительные сведения
Что такое библиотека DLL?
DLL — это библиотека, содержащая код и данные, которые могут использоваться более чем одной программы одновременно. Например, в операционных системах Windows, библиотека Comdlg32 выполняет общие функции, связанные с диалоговыми окнами. Таким образом каждая программа может использовать функцию, которая содержится в этой библиотеке DLL для реализации диалогового окна Открыть . Это помогает повысить уровень повторного использования кода и эффективности память.
С помощью библиотеки DLL программы может быть модульности на отдельные компоненты. Например, программа учета может продаваться по модулям. Каждый модуль может быть загружен в основной программе во время выполнения при установке данного модуля. Поскольку отдельные модули, время загрузки программы выполняется быстрее и модуль загружается только при вызове этой функции.
Кроме того обновления, проще применять для каждого модуля, не влияя на другие части программы. Например имеется программа по зарплате и изменении ставок налога каждый год. Когда эти изменения изолированы с библиотекой DLL, можно применить обновление без необходимости создания или установить программу целиком.
Ниже перечислены некоторые из файлов, которые реализованы в виде библиотеки DLL в операционных системах Windows.
- Файлы элементов управления ActiveX (.ocx)
Примером элемента управления ActiveX является элемент управления календаря, который позволяет выбрать дату с помощью календаря. - Файлы панели (.cpl) элементов управления
Пример файла .cpl — элемент, который расположен на панели управления. - Файлы драйвера (.drv) устройства
Пример драйвера устройства — драйвер принтера, управляет печати на принтере.
Преимущества DLL
Ниже перечислены некоторые преимущества, которые предоставляются, когда программа использует библиотеку DLL.
- Использует меньше ресурсов
При нескольких программ с помощью той же библиотеки функций, библиотеки DLL можно уменьшить дублирование кода, который загружается на диске и в оперативной памяти. - Обеспечивается модульная архитектура
Библиотека DLL способствует разработке модульные программы. - Облегчает развертывание и установку
Если функции в библиотеке DLL требуется обновление или исправление, развертывания и установки библиотеки DLL не требуется программа повторно связать с библиотекой DLL.
Зависимости библиотек DLL
Когда программа или библиотека DLL использует функцию DLL в другой библиотеке DLL, создается зависимость. Таким образом программа больше не является самодостаточной и у программы могут возникнуть проблемы, если зависимость не работает. Например программа может не работать, если произойдет одно из следующих действий:
- Зависимые DLL обновляется до новой версии.
- Исправлена зависимая библиотека DLL.
- Зависимый DLL-файл перезаписывается более ранней версией.
- Зависимые библиотеки DLL удалены с компьютера.
Эти действия обычно называются конфликты DLL-Библиотек. Если не обеспечивается обратная совместимость, программа не может успешно запущена.
Ниже перечислены изменения, которые были представлены в Microsoft Windows 2000 и более поздних операционных систем Windows, чтобы свести к минимуму проблемы с зависимостями.
- Защита файлов Windows
В з