- •107 Методические указания «Программное обеспечение сетей эвм. Часть 4. Версия 2. Развитие схемы «клиент-сервер» в com и corba»
- •Введение
- •1.1. Необходимость использования компонент
- •1.2. Методы встраивания компонентов
- •1.3. Основы com
- •1.4. Типы компонентов
- •1.5. Размещение управляющих элементов при помощи cWnd
- •1.6. Использование директивы #import
- •1.7. Компоновка тестовой программы
- •1.7.1 О компонентах
- •1.7.2 Регистрация компонентов
- •1.7.3 Импортирование библиотеки типов
- •1.7.4 Определение членов cDemoClientView
- •1.7.5 Создание компонентов
- •1.7.6 Создание точек взаимодействия
- •1.7.7 Синхронизация параметров
- •1.7.8 Обработка событий от компонентов
- •1.7.9 Очистка
- •1.7.10 Шаблонный код
- •1.9. Индивидуальные задания на работу
- •2.1. Проект. Основные принципы
- •2.2. Как создать компонент
- •Шаг 2: Создание компонента:
- •2.3. Значения по умолчанию
- •2.5. Индивидуальные задания на работу
- •3.1. Cоздание сервера com
- •3.2. Использование com-объектов
- •3.3. Индивидуальные задания на работу
- •Лабораторная работа № 4. Использование atl
- •4.1 Создание dcom-сервера с использованием atl
- •4.1.1 Введение в atl
- •4.1.2 Что такое atl?
- •4.1.3 Разделение труда
- •4.1.4 Создание хранилища компонентов с помощью atl Com AppWizard
- •4.1.5 Вставка кода заглушки/прокси-объекта.
- •4.1.7 Atl com-карта
- •4.1.9 Класс cComModule
- •4.1.10 Язык скриптов реестра в atl
- •4.1.11 Распределенная com (dcom)
- •4.1.12 Dcom и службы nt
- •4.1.13 Структура службы nt
- •4.1.14 Основанный на службах nt сервер сом
- •4.1.15 Создание проекта при помощи atl
- •4.1.16 Добавление функциональных средств
- •4.1.17 Функция CacheQuotes (dcomServiceXdcomService.Cpp)
- •4.1.18 Функция GetQuote (dcomServiceXdcomService.Cpp)
- •4.2 Создание dcom сервера
- •4.3 Создание dcom клиента
- •4.4 Индивидуальные задания на работу
- •Лабораторная работа № 5. Разработка corba приложений
- •5.1. Конфигурирование
- •5.2. Порядок действий
- •5.3. Объектно-ориентированный анализ и моделирование
- •5.4. Описание и трансляция объектов
- •5.5. Создание сервера
- •5.6. Создание клиента
- •5.7. Отладка объектов
- •5.8. Индивидуальные задания на работу
- •Лабораторная работа № 6. Адаптер роа
- •6.1. Архитектура poa
- •6.2. Политики poa
- •Политика обработки запросов
- •6.3. Создание серверов на основе poa
- •6.4. Индивидуальные задания на работу
- •Лабораторная работа № 7. Прикладная задача связи
- •7.1. Постановка задачи
- •7.1.1. Сотовая станция
- •7.1.2. Телефоны
- •7.1.3. Система
- •7.2. Функционирование системы
- •7.3. Индивидуальные задания на работу
- •Лабораторная работа № 8. Работа по умолчанию
- •8.1. Сервер с сервантом по умолчанию
- •8.2. Индивидуальные задания на работу
- •Лабораторная работа № 9. Создание менеджеров сервантов
- •9.1. Менеджеры сервантов
- •ServantActivator
- •ServantLocator
- •9.2. И снова практика
- •9.3. Индивидуальные задания на работу
- •Лабораторная работа № 10. Сервис именования
- •10.1. Сервис для именования (Naming Service)
- •10.2. Индивидуальные задания на работу
4.1.2 Что такое atl?
Физически ATL представляет собой набор заголовочных файлов (и нескольких cpp-файлов), инсталлированных в каталоге Atl\lnclude среды MS Visual Studio. Поскольку будут рассматриваться эти файлы, то в таблице 4.1 собрана информация о том, какого рода код можно найти в наборе файлов ATL (сгруппировано по функциональности).
Содержимое файлов ATL Таблица 4.1.
ATL-файл с исходным кодом |
Содержание |
<atlwin.h> <altwin.cpp> <atlhost. h> |
Поддержка окон и диалогов. <atlhost.h> впервые включен в ATL 3.0, определяет поддержку для окон, содержащих элементы управления ActiveX |
<atldb.h> <atldbcli.h> <atldbsch.h> |
Поддержка OLE DB |
<atlsnap.h> |
Поддержка разработки ММС Snap In |
<atlctl.h> <atlctl.cpp> |
Поддержка разработки элементов управления ActiveX |
<atliface.idl> <atliface.h> |
IDL-код для определяемых в ATL интерфейсов СОМ и сгенерированный MIDL заголовочный файл |
<altconv.h> <atlconv.cpp> |
Определяет функции преобразования типа и макросы для работы со строками в СОМ |
<atldef.h> |
Символы препроцессора (#defines) |
<statreg.h> <statreg.cpp> |
Поддержка саморегистрации |
<atlbase.h> |
Базовый файл ATL, определяющий поддержку СОМ-серверов, «упаковочных» классов и отладки |
<atlcom.h> |
Поддержка IUnknown, автоматизации, перечислений и постоянства обьектов COM (persistence). Поддержка агрегации, объекты класса по умолчанию, макросы СОМ также определяются в <altcom.h> |
<atlimpl.cpp> |
Реализации различных классов ATL. Операторы размещения в "куче" (используются, если вы не связываетесь с С Run Time) |
В большинстве случаев нужные файлы будут включены в проект, основываясь на конфигурации ATL COM AppWizard и типе кокласса, выбранного из ATL Object Wizard. Однако иногда придется включать файлы вручную, поскольку ATL предоставляет "минимальный полный" набор заголовочных файлов. Например, если разрабатывается основанный на GUI кокласс (такой как элемент управления ActiveX), то не получится доступ к поддержке Windows, содержащейся в файле <atlwin.h>, пока не будет включен этот файл в прекомпилированный заголовочный файл.
4.1.3 Разделение труда
Когда разработчик решает воспользоваться существующим кодом, предоставляемым библиотекой, первый вопрос, который нужно решить: где заканчивается поддержка библиотеки и начинается собственная работа. ATL — это компонентная библиотека, составленная из мастеров, шаблонов C++, классов и макросов. Библиотека предоставляет реализацию стандартных СОМ-интерфейсов, поддержку хранилищ для сервера и различные типы коклассов. Кроме того, кокласс может поддерживать некоторые функциональные возможности СОМ, такие как точки соединения, диагностика ошибок, потоковые модели и т. д.
4.1.4 Создание хранилища компонентов с помощью atl Com AppWizard
Мастер ATL COM AppWizard предлагает на выбор три конфигурации типа сервера, используемые для создания хранилища:
Dynamic Link Library (DLL). Мастер ATL COM AppWizard генерирует хранилище для COM DLL-сервера (внутрипроцессного). Все экспортируемые функции DLL полностью реализуются и предоставляются через ассоциированный DEF-файл.
Executable (EXE). Мастер ATL COM AppWizard генерирует хранилище для СОМ ЕХЕ-сервера. Предоставляется реализация WinMain().
Service (EXE). Мастер ATL COM AppWizard генерирует код хранилища для ЕХЕ-сервера, который может запускаться как сервис NT, локальный сервер или удаленный сервер.