- •Понятие компонента. Преимущества и недостатки использования компонентного подхода к проектированию программ.
- •Использование статических библиотек к проектированию программ: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
- •Динамические библиотеки с неявным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
- •Разработка динамических библиотек с явным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
- •Разработка клиентов динамических библиотек с явным связыванием. Функции, используемые для разработки клиента. Функция DllMain().
- •Основы com: понятие клиент-серверных систем, этапы взаимодействия клиента и сервера. Задачи, решаемые в com-технологии.
- •Именование com-объектов. Guid. Использование guid. Хранение guid в системе.
- •Теория интерфейсов. Виртуальная функция. Таблица виртуальных функций. Интерфейс iUnknown.
- •Интерфейс iUnknown. Метод QueryInterface(): параметры, возвращаемое значение, пример использования. Использование QueryInterface().
- •Реализация метода QueryInterface(). Правила использования QueryInterface().
- •Время жизни компонента. Метод AddRef() и Release(). Правила подсчета ссылок.
- •Время жизни компонента. Метод Release(). Правила подсчета ссылок.
- •Реализация компонента в виде динамической библиотеки. Диаграмма компонент.
- •Обработка ошибок в com. Hresult. Макросы succedeed() и fail().
- •Хранение guid в реестре. Информация о классе, хранимая в реестре. Инициализация com-библиотеки в клиенте.
- •Создание объектов при помощи функции CoCreateInstance(). Использование. Достоинства, недостатки.
- •Фабрика классов. Интерфейс iClassFactory(). Методы этого интерфейса. Метод GetClassObject().
- •Фабрика классов. Протокол использования фабрики классов с использованием интерфейса iClassFactory().
- •Функции, обеспечивающие работу динамической библиотеки с компонентом.
- •Регистрация классов в реестре. Способы регистрации компонент в реестре.
- •Динамическая библиотека с явным подключением
Разработка динамических библиотек с явным связыванием: создание библиотеки, использование, распространение библиотек, достоинства и недостатки.
Динамическая библиотека - Часть основной программы, которая загружается в ОС по запросу работающей программы в ходе её выполнения, то есть динамически.
Динамические библиотеки должны быть созданы как специальный проект, который содержит экспортируемые функции, подключаемые на разных этапах выполнения программы.
Один и тот же набор функций (подпрограмм) может быть использован сразу в нескольких работающих программах, из-за чего они имеют ещё одно название — библиотеки общего пользования.
Динамические библиотеки хранятся обычно в определенном месте и имеют стандартное расширение.
Существует два способа подключения динамических библиотек:
С неявным подключением (Implicit Linking)
С явным подключением (Explicit Linking)
Для того, чтобы объявить элементы библиотеки, доступные для использования другими компонентами. Они либо помечаются объявлениями
Недостатки (явное)
Код клиента сильно изменяется
в случае, если модуль, который содержит в себе критическую часть, отсутствует, программа не сможет продолжить работу.
Достоинства
Вызываются нужные компоненты в нужное время
Если динамическая библиотека загружена в адресное пространство самой ОС (System Library), то единственная копия может быть использована множеством работающих с нею программ.
Динамическая библиотека может быть использована в качестве плагина, расширяющего функциональность программы.
В начало
Разработка клиентов динамических библиотек с явным связыванием. Функции, используемые для разработки клиента. Функция DllMain().
При разработке с явным связыванием библиотека загружается не автоматически, а по команде из кода именно тогда, когда это необходимо.
Для загрузки библиотеки используется функция LoadLibrary(). Эта функция возвращает значение HMODULE – указатель на библиотеку в памяти.
Для выгрузки библиотеки из файла и освобождения ресурсов, занимаемых библиотекой используется функция FreeLibrary. Как аргумент эта функция получает HMODULE.
Для нахождения адреса нужной функции используется функция GetProcAddress. GetProcAddress возвращает указатель на функцию в библиотеки. Ей передаётся HMODULE и строка с именем функции.
Функция DllMain - дополнительная точка входа в динамически-подключаемую библиотеку (DLL). Если функция используется, то она вызывается системой тогда, когда процессы и потоки инициализированы и завершили работу или при вызове функции LoadLibrary и FreeLibrary.
В начало
Основы com: понятие клиент-серверных систем, этапы взаимодействия клиента и сервера. Задачи, решаемые в com-технологии.
COM-технология – одна из технологий компонентного программирования под Windows.
COM- Component Object Model – модель компонентных объектов.
Клиент-сервер— вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами.
Этапы
1)Создание компонента с помощью функции CreateInstance(), который возвращает указатель на компонент.
2)При помощи метода QueryInterface() запросить указатель на нужный интерфейс
3)Получив указатель на интерфейс, вызываем его методы.
В COM-технологии обеспечивается взаимодействие компонента на уровне двоичных кодов.
Для этого компилятор создаёт двоичную структуру, при помощи которой реализуется абстрактный базовый класс.
В начало
