Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





ActiveX-библиотека (ActiveX DLL)

Начинающие разработчики Visual Basic, Delphi или другой RAD-системы, впервые запустив графическую оболочку среды программирования и увидев в окне все многообразие типов создаваемых программ, среди которых им надо выбрать только один желаемый тип, зачастую теряются в догадках — какой шаблон для своей будущей программы выбрать, — потому что на панели выбора они видят картину, подобную показанной на рис. 1.15.

Рис. 1.15. Окно выбора типа программы в VB 6

Чем, например, отличается стандартный ЕХЕ-файл от ActiveX ЕХЕ-файла, а тот, в свою очередь от файла ActiveX DLL? Какая между ними разница? Если внимательно посмотреть на рисунок, то можно увидеть еще ActiveX Document D11 и Active Document Exe. Только одних типов ActiveX — 5 штук, в самом деле голова может пойти кругом!

Однако это вовсе не недостаток, а достоинство современных средств разработки, темп развития которых определяет в настоящее время Сеть (имеется в виду Интернет), только Сеть и ничего больше.
Программисту предлагается такое разнообразие типов создаваемых программ, только потому, что сама ткань Web и множество переплетающих ее объектов становятся все более и более разнообразными. А ведь мы пока ведем речь только о технологиях Microsoft. Что будет дальше, когда мы с головой окунемся в еще более разнообразный мир технологий Java?

Давайте сначала все-таки разберемся с тонкостями отличий программ и модулей ActiveX.

 

Ключевые понятия: in-process и out-of-process
Разница между файлами DLL и ЕХЕ по отношению к ActiveX всегда одна — это контекст, в котором они выполняются. Если ActiveX-компонент выполняется в адресном пространстве приложения, которое его использует, то это всегда DLL, или in-process.

Естественно, что это самые быстрые и эффективные процессы, ибо им не требуется маршаллинг, т. е. выход за границы процесса, их породившего, и разрешение связанных с этим проблем.

Спрашивается, а чем же тогда отличается библиотека ActiveX DLL от обычной DLL?
Ответ — ничем не отличается, это такая же обычная библиотека DLL, функции которой можно вызывать из скомпонованных готовых программ без их перекомпоновки — гениальное изобретение Microsoft.
Что касается out-of-process, то это, чаще всего, программы ActiveX ЕХЕ, которые выполняются на удаленных машинах (но не обязательно) и реализуют логику сервера приложений. Об этом мы расскажем чуть ниже, а пока на рис. 1.16 показана взаимосвязь различных типов ActiveX-компонентов, используемых в одном проекте.

 

Рис. 1.16. Использование нескольких типов ActiveX в одном проекте

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

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

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

К сожалению, способы программирования с использованием DLL выходят за пределы настоящей книги, но тысячи примеров содержатся и в Интернете (см. ссылки в фирменной документации по Visual C++, Visual Basic и Delphi).

 

     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru