zhChinese    enEnglish
  ПМ-ПУ  » Образование  » Программы курсов » Технология компонентного программирования

Технология компонентного программирования

Курс по выбору

Лектор: к.ф.-м.н., доц. Антонов С.А.
Объектно-ориентированный подход.
  • Объединение полей в структуре, типы определенные пользователем, функции-утилиты.
  • Тривиальное понимание инкапсуляции.
  • Отделение реализации от поведения, точное понимание инкапсуляции.
  • Понятие класса, экземпляр класса как объект.
  • Наследование как способ повторного использования кода.
  • Раздельная компиляция как способ защиты кода.
  • Одиночное и множественное наследование преимущества и недостатки.
  • Идентичность поведения при различиях в реализации.
  • Два подхода к обеспечению полиморфного поведения.
  • Сигнатурный полиморфизм.
  • Механизм виртуальных функций.
  • Чистая виртуальность, абстрактные классы, интерфейсы.
Предпосылки компонентного подхода.
  • Проблемы распространения программного обеспечения, различные подходы к их решению.
  • Проблемы межязыкового и межплатформенного взаимодействия.
  • Программные библиотеки, динамическое и статическое связывание, экспорт функций.
  • Библиотеки MFC и возможность экспорта классов.
  • Таблица виртуальных функций как универсальный способ обращения к интерфейсу объекта.
  • Языки поддерживающие работу с таблицами виртуальных функций.
  • Принцип решения этой проблемы в скриптовых языках.
Пишем свой COM.
  • Косвенные обращения.
  • Умные указатели, ведущие указатели, дескрипторы.
  • Подсчет объектов и управление временем жизни объекта, прототипы функций AddRef и Release.
  • Идиома интерфейсных указателей.
  • Дублирование интерфейса.
  • Маскировка указываемого объекта.
  • Изменение интерфейса.
  • Идея граней и кристаллов.
  • Инкапсуляция указываемого объекта, проверка граней.
  • Способы извлечения граней, прототип функции QueryInterface.
  • Классы посредники.
Пишем свой COM (продолжение)
  • Подстановочный критерий Лисков.
  • Гомоморфные иерархии классов.
  • Нормальное наследование и интерфейсы как вырожденный случай.
  • Производящие функции, использование символических классов для поддержки инкапсуляции.
  • Объекты классов, информация о классе и создание экземпляров по имени.
  • Прототип фабрики классов.
Как это делает Microsoft.
  • Коклассы, COM объекты, интерфейсы и серверы.
  • GUID как способ идентификации интерфейсов и коклассов.
  • Размещение объектов в памяти, внутрипроцессный сервер, локальный сервер, удаленный сервер, динамические библиотеки и выполняемые файлы.
  • Подсистема COM, SCM, реестр системы.
  • Стандартный интерфейс IUnknown.
  • Фабрики классов и интерфейсы IClassFactory, IClassFactory2.
  • Как технология COM поддерживает инкапсуляцию, наследование и полиморфизм.
  • Языковая независимость.
Проектируем внутрипроцессный сервер.
  • Полный цикл работы с COM объектом в случае использования inproc сервера.
  • Пример создания простейшего кокласса, создание и реализация интерфейса, создание фабрики класса, экспорт функций DllGetClassObject и DllCanUnloadNow.
  • Основные принципы управления временем жизни объекта и сервера, порядок вызова функций AddRef и Release, блокировка сервера.
  • Регистрация сервера на локальной машине.
  • Типичный пример кода стороны клиента на языке С++.
Информация о типе и языковая независимость.
  • Решение проблемы описания интерфейсов, Microsoft Interface Definition Language, компилятор MIDL.
  • Базовые и универсальные типы данных IDL.
  • Операторы и ключевые слова языка IDL, определение пользовательских интерфейсов.
  • Атрибуты параметров, библиотек и вызова функций.
  • Определение коклассов.
  • Определения интерфейсов и библиотеки типов.
  • Файлы генерируемые компилятором MIDL.
  • Регистрация информации о типе.
  • Утилиты для работы с библиотеками типов.
  • Использование Visual Basic для работы с COM.
Информация о типе и прозрачность местонахождения.
  • Процессы и потоки.
  • Проблема передачи указателей за границы процессов.
  • Еще раз о посредниках.
  • Механизмы обеспечения прозрачности местонахождения в COM, объекты представители (proxy) и объекты заместители (заглушки).
  • Менеджеры прокси объектов.
  • Обзор работы протоколов LRPC и RPC.
  • Объекты канала.
  • Идентификаторы приложений.
  • Размещение COM DLL в суррогатном процессе.
Маршалинг в модели COM.
  • Как передавать данные за границы процесса, понятие маршалинга.
  • Реализуем свой собственный механизм маршалинга, пользовательский маршалинг, интерфейс IMarshal.
  • Стандартный маршалинг, передача пользовательских интерфейсов.
  • Маршалинг библиотеки типов.
  • Регистрация заглушек/прокси.
Особенности построения локальных и удаленных серверов.
  • Предоставление фабрик класса из локального сервера, функции CoRegisterClassObject, CoRevokeClassObject.
  • Плавный переход к удаленному серверу.
  • DCOM, механизм обмена информацией между менеджерами подсистемы COM.
  • Утилита DCOMCNFG.
  • Различие в работе клиентов с локальным или удаленным сервером.
Введение в технологию ATL.
  • Работа с шаблонами, что может ATL.
  • Работа мастера проектов ATL.
  • Объекты ATL и их категории.
  • Создание коклассов, добавление и реализация интерфейсов, реализация методов и свойств, COM-карты.
  • Основные классы ATL, макросы преобразования, тип CComBSTR.
  • Файлы генерируемые мастером ATL, библиотеки классов, модификация реестра, язык скриптов.
Потоковая модель COM.
  • Синхронизация потоков.
  • Концепция апартаментов, однопотоковый и многопотоковый апартаменты, что выбрать.
  • Маршалинг при работе с апартаментами.
  • Поддержка работы с потоками в ATL.
  • Базовые потоковые классы.
  • Шаблоны CComObject.
  • Виртуальные конструкторы.
  • Механизм обработки исключений.
Механизмы повторного использования в COM.
  • Почему не подходит наследование в COM.
  • Контейнеры и делегирование.
  • Поддержка контейнеризации в ATL.
  • Использование контейнеризованных объектов.
  • Агрегация в модели COM, поддержка в ATL, автоагрегация.
  • Условия налагаемые на клиенты и сервера.
  • Мастера ATL и конфигурирование объектов.
Хранилища компонентов.
  • Вопросы связанные с экспонированием фабрик классов, управлением временем жизни, регистрацией сервера.
  • Класс CComModule, карта объектов, элементы карты объектов, макросы ATL.
  • Класс-создатель _ClassFactoryCreatorClass.
  • Фабрика классов CComClassFactory.
  • Обзор и классификация категорий COM, карты категорий.
Скриптовые языки.
  • Языки не поддерживающие виртуальные таблицы.
  • Методы посредники, интерфейс IDispatch, интерфейс диспетчеризации, идентификаторы DISPID.
  • Реализация интерфейса IDispatch на языке С++.
  • Ограничения накладываемые интерфейсом IDispatch, тип CComVariant ATL.
  • Дуальные интерфейсы.
  • Использование информации о типе.
  • Средства ATL, шаблон IDispatchImpl<>.
  • Код стороны клиента.
Перечисления и коллекции в COM.
  • Использование безопасных массивов, структур и COM-интерфейсов в качестве параметров методов.
  • Перечисления и стандартные интерфейсы.
  • Создание и использование объектов перечислений с применением ATL, шаблоны CComIEnum и CComEnumImpl, код стороны клиента.
  • Коллекции, стандартные методы коллекций COM.
  • Создание коллекции средствами ATL.
Косвенно-вызываемые интерфейсы и соединяемые объекты.
  • Идея поддержки коммуникации с клиентом, механизм косвенного вызова.
  • Использование косвенного вызова из Visual Basic и C++.
  • Механизм двустороннего обмена, соединяемые объекты, интерфейсы IConnectionPointContainer и IEnumConnectionPoints, события и уведомления.
  • Построение соединяемых объектов с применением ATL.
  • Использование соединяемых объектов из Visual Basic и C++.
Разработка элементов управления ActiveX.
  • Элементы управления и страницы свойств.
  • Структура стандартного элемента управления ActiveX.
  • Использование мастера ATL.
  • Элементы управления и категории COM.
  • Постоянства свойств.
  • Код стороны клиента.
  • Пример разработки элемента управления ActiveX с помощью ATL.

Рекомендуемая литература и источники

  1. Трельсен Э. Модель COM и применение ATL 3.0. - BHV, 2000 г.
  2. Frank E., III Redmond Dcom: Microsoft Distributed Component Object Model
  3. D. Box Essential COM (Component Object Model)
  4. http://www.swtech.com/tp/dcom/