Создание внутрипроцессных серверов автоматизации. Создание и использование DLL. Преимущества реализации кода в DLL

   
На этом шаге мы перечислим преиущества использования DLL.

   
Начиная с 27 шага мы рассматривали создание сервера автоматизации, выполненного в виде исполняемого файла. Однако нередко сервер
автоматизации размещается в динамически загружаемой библиотеке (DLL). При обращении к такому серверу происходит загрузка библиотеки
(если ранее она не была загружена) и запуск вызываемой функции. Начиная с этого шага сначала мы рассмотрим создание традиционных библиотек, не содержащих
СОМ-объектов, а затем обсудим особенности реализации сервера автоматизации в виде DLL.

   
Сейчас речь пойдет о традиционных библиотеках, которые не содержат СОМ-объектов. Большая часть из сказанного далее верна и для DLL с
СОМ-объектами, отличия же будут специально выделяться.

   
Динамически загружаемые библиотеки являются, пожалуй, одним из наиболее мощных средств создания приложений в Windows. По структуре данных DLL
напоминает исполняемый файл (ЕХЕ-файл), но в отличие от исполняемого файла код, содержащийся в DLL, не может выполняться самостоятельно. Зато
библиотека (так же как и ЕХЕ-файл) может быть загружена в память компьютера, и работающие приложения могут вызвать экспонируемые в DLL функции.
На основе DLL создаются элементы управления ActiveX.

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

   
Второе преимущество - возможность хранения общих ресурсов. Опять же, если несколько приложений работают с одними и теми же ресурсами (например,
с большими растровыми изображениями - BMP-файлами), то достаточно сохранить в DLL единственную копию этих ресурсов.

   
Третье преимущество - поддержка новых версий приложений. Если программистом были сделаны какие-либо изменения в реализациях функций, определенных
в DLL, то конечному пользователю достаточно передать новую версию DLL - ЕХЕ-файл можно оставить прежним. Это особенно актуально
сейчас, когда версии многих приложений можно изменять через Интернет, и важно минимизировать объем данных, передаваемых при таком обновлении. Естественно,
если часть кода реализована в виде DLL, то при загрузке с сервера только этой библиотеки сетевой трафик окажется ниже, чем при загрузке приложения целиком.

   
Четвертое преимущество заключается в возможности использования различных языков программирования для создания ЕХЕ- и DLL-файлов.
Например, ЕХЕ-файл может компилироваться из кода, написанного на Delphi, a DLL-файл, который им используется, из кода, написанного на
Microsoft Visual C++. Если приложение использует несколько библиотек, то они могут быть созданы на различных языках программирования. Это значительно
упрощает перенос кода в другие приложения.

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

   
На следующем шаге мы рассмотрим создание простейшей библиотеки.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий