Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб. раб. 1

.doc
Скачиваний:
17
Добавлен:
06.05.2017
Размер:
93.18 Кб
Скачать

Лабораторная работа №1

Создание и использование внутрипроцессного COM-сервера

Цель: получить навыки создания внутрипроцессного СОМ-сервера и СОМ-клиента.

Краткие теоретические сведения

Технология Component Object Model (COM) описывает способ взаимодействия программ любого типа, при этом одна часть программного обеспечения предоставляет для использования собственные службы (сервер), а другая получает к ним доступ (клиент).При этом клиент и сервер могут располагаться в одном процессе, в разных процессах на одном компьютере или на разных компьютерах.

Для созданных на основе спецификации СОМ приложений не имеет значения, какой язык программирования или средство разработки использовано при их создании, так как если стандарт СОМ соблюден, межпрограммное взаимодействие осуществляется без помех.

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

Сервер СОМ представляет собой исполняемый файл приложения или динамическую библиотеку, который содержит один или несколько объектов одного или разных классов. Различаю следующие виды серверов. Внутрипроцессный сервер – реализуется динамическими библиотеками, которые подключаются к клиенту и работают в одном адресном пространстве. Внепроцессный сервер – создается отдельным процессом, который работает на одном компьютере с клиентом. Удаленный сервер – создается процессом, который работает на другом компьютере по отношению к клиенту.

Ход работы

1 Создать внутрипроцессный сервер в виде динамической библиотеки, для чего выбрать на странице ActiveX Репозитория Delphi значок ActiveX Library, в результате чего будет создан новый проект DLL-библиотеки.

2 Из Репозитория выбрать значок COM Object на странице ActiveX. В результате будет открыт диалог установки начальных параметров нового объекта: в поле ввода текста Class Name необходимо ввести имя нового класса (например, New), выбор в списке Instancing в данном случае не имеет значения, выбор в списке Threading Model – желательно Apartment, флажок «Include Type Library» необходимо выключить.

3 Создать новый модуль, в котором выполнить описание интерфейса СОМ-объекта.

4 Выполнить реализацию методов интерфейса согласно индивидуальному заданию.

5 Откомпилировать СОМ-сервер в виде DLL-библиотеки. Зарегистрировать сервер в реестре операционной системы с помощью команды «RegSvr32».

6 Создать проект клиентского приложения, реализующего функциональность согласно индивидуального задания и вызывающего методы созданного СОМ-сервера. Добавьте в него созданный ранее модуль, содержащий описание разработанного интерфейса. Для вызова СОМ-сервера необходимо использовать стандартную функцию

function CreateComObject(var ClassID: TGUID): IInterface;

Для определения параметра ClassID (идентификатор запрашиваемого интерфейса) удобно использовать функцию

function ProgIDToClassID(const ProgID: string): TGUID;

Эта функция возвращает GUID интерфейса с символьным именем, определенным в параметре ProgID.

7 В ходе защиты лабораторной работы необходимо продемонстрировать знания основ технологии СОМ, классов и интерфейсов, создаваемых при ее реализации.

Индивидуальные задания

Разработать СОМ-сервер, реализующий вычисление значения заданной функции в точке. Разработать клиентское приложение, осуществляющее построение графика функции на отрезке.

Вариант

Функция

Отрезок оси

1

[1; 20]

2

[1; 10]

3

[-2; 10]

4

[5; 15]

5

[1; 15]

6

[-5; 5]

7

[-5; 5]

8

[-10; 10]

9

[-10; 10]

10

[5; 15]

11

[0; 15]

12

[-10; -1]

13

[1; 10]

14

[-10; -5]

15

[2; 10]

16

[0; 10]

17

[2; 10]

18

[2; 15]

19

[-5; 5]

20

[1; 20]

21

[1; 20]

22

[-10; 10]

23

[-10; 10]

24

[2; 20]

25

[0; 10]

Соседние файлы в предмете Кросс-платформенное программирование