Ревунков Г.И. - Методические указания к лабораторному практикуму по курсу «Базы данных» (1075664), страница 12
Текст из файла (страница 12)
• TDdeClientConv - устанавливает связь с сервером.
• TDdeClientItem - конкретный объект, содержимое которого принимается или передается за один сеанс связи с сервером.
• TDdeServerConv - сервер.
• TDdeServerItem - конкретный объект сервера , подлежащий обмену.
Для посылки данных серверной программе используется метод:
function PokeData (Item: string; Data: PChar): Boolean;
Для приема данных от программы сервера используют метод:
function RequestData ( const Item: string): PChar;
В качестве недостатков технологии DDE отмечается отсутствие единого подхода к работе с различными серверами. Порядок обращения к данным сервера индивидуален и конкретен и находится в его документации (например, порядок обращения к ячейкам электронной таблицы).
1.2.10.2. ТЕХНОЛОГИЯ OLE
Технология OLE (Object Linking and Embedding) реализует связывание и внедрение объектов.
Типовой пример использования этой технологии - добавление рисунка в документ Word 97 (рис. 1.50):
Вставка РисунокИз файлаСвязать с файломДобавить.
Рис.1.50. Пример технологии OLE.
Объединение двух объектов, т.е. реализация действия "вставка" рисунка в документ Word 97, может быть выполнена двумя вариантами:
• Вариант "связывание".В документ добавляется только ссылка на рисунок, указывающая его местоположение на диске и формат. Внешне в технологии ОLE это реализуется установкой флажка "Связать с файлом" в диалоговом окне выбора рисунка (рис. 1.50). Если в дальнейшем этот файл удалить, то программа не сможет ничего отобразить. Если же в исходный файл будут внесены изменения, то они отобразятся и в документе. Объем документа увеличивается незначительно, но требуется следить за состоянием файла рисунка.
• Вариант "внедрение". В документ вставляется сам рисунок (копируется). Внешне в технологии ОLE это реализуется сбросом флажка "Связать с файлом" в диалоговом окне выбора рисунка (рис. 1.50). Если теперь удалить или изменить исходный файл, то рисунок в документе останентся без изменений. Объем документа существенно увеличивается, так как изображение находится в документе.
Технология ОLE расширяет возможности технологии DDE. Вводится понятие объекта, обладающего свойствами и методами, к которым можно обращаться. Работой приложений можно управлять программно. Это называется "автоматизация ОLE" (OLE Automation). При этом и управляющее и управляемое приложения должны поддерживать технологию ОLE.
В качестве недостатков технологии OLE отмечается отсутствие общего программного интерфейса и необходимость ознакомления по документации с описанием доступных средств и методов обрабатываемых объектов. Эти проблемы были сняты в технологии СOM.
Объект, который встраивается, называется контейнером OLE (OLE Container) В нашем примере это рисунок.
В IDE Delphi 5 на странице System имеется компонент TOleContainer для поддержки технологии OLE:
1.2.10.3. ДИНАМИЧЕСКИ ПОДКЛЮЧАЕМЫЕ БИБЛИОТЕКИ DLL
Динамически подключаемые библиотеки DLL представляют собой способ обмена информацией между программами. Сама DLL не программа, а библиотека - хранилище программного кода. Например, функций (программных кодов) и форм (ресурсов). DLL подключается к программе после того, когда последняя запущена, т.е. динамически.
Технология использования библиотек DLL следующая. При создании программы, имеющей сложный алгоритм функционирования, целесообразно общий алгоритм функционирования представить совокупностью алгоритмов, каждый из которых затем оформляется в отдельную функцию и помещается в библиотеку DLL, подключаемую к программе. Теперь, если в дальнейшем в каком либо из алгоритмов произошли изменения, нет необходимости менять всю программу, пользовательский интерфейс. Достаточно поменять только DLL.
В IDE Delphi для работы с библиотеками DLL применяются следующие команды и действия.
I. Создание библиотеки DLL. Выполняются команды File | New . В открывшемся окне New Items выбирается компонент DLL. В результате создается пустая заготовка библиотеки. Исходный текст модуля библиотеки начинается со слова library. В текст модуля библиотеки как обычно вносится описание функции. В конец модуля добавляется ключевое слово exports с указанием имени этой экспортируемой функции (или списка экспортируемых функций, которые должны быть доступны другим приложениям):
library Project1;
uses
SysUtils,
Classes;
{$R *.RES}
function Multiply (X1, X2: integer): integer;
begin
Y:=X1*X2;
end;
exports Multiply;
begin
end.
Модуль должен быть откомпилирован. Его файл должен будет присутствовать в том же каталоге, в котором будет создаваться ЕХЕ-файл приложения, которое будет импортировать эту функцию.
II. Вызов библиотеки DLL. В создаваемом новом проекте, который будет использовать библиотеку DLL, в разделе interface необходимо описать импортируемую функцию с ключевым словом external, в вкотором в апострофах указывается имя файла модуля библиотеки DLL, например:
function Multiply (X1, X2: integer): integer;
external 'Project1.dll';
Директива external указывает компилятору, что исходный текст находится в файле Project1.dll.
Следует помнить, что сама DLL не выполняется, а предоставляет в распоряжение приложения свой програмный код.
1.2.10.4. РАБОТА С ПОТОКАМИ
Речь идет об "одновременном" выполнении нескольких нескольких программ или функций в одной программе. Реально одновременное выполнение возможно при наличии нескольких процессоров. Однако операционная система Windows имитирует одновременнойсть выполнения программ, используя идею так называемого режима разделения времени. Общий циклический квант времени работы компьютера, например сто миллисекунд, разбивается на несколько более мелких квантов. Затем каждой программе по очереди, циклически, предоставляется для работы свой небольшой квант времени, например, в несколько миллисекунд. Например, сначала запускается PROG1. Затем, когда она исчерпала свой квант времени, она прерывается и управление передается PROG2. Затем PROG3 и т.д. После последней программы управление передается снова PROG1 и далее процесс циклически повторяется. Обычно общий квант дробится по числу выполняемых программ. Это позволяет реализовать приоритетность выполнения, увеличивая или уменьшая кванты времени соответствующих программ.
Однако при таком подходе часть компьютерного времени тратится на обеспечение управления процессом распределения времени между программами. Есть рекомендации (корпорации Inprise ) не создавать в программе более 16 процессов при работе на однопроцессорном компьютере [ Л16 ].
Потоком называют код, который входит в состав программы, использует ее ресурсы и выполняется в ее адресном пространстве. Любая программа представляет собой один главный поток и может иметь несколько вспомогательных (может и не иметь). Например, в главном потоке реализуется ввод исодных данных, а другом потоке, реализующий фоновый режим, выполняется какой то алгоритм их обсчета.
Потоки, как и обычные программы, могут также выполняться псевдопараллельно.
Под многозадачностью обычно понимают возможность параллельной работы нескольких программ. А под многопоточностью - возможность параллельной работы нескольких фрагментов программы (потоков).
В IDE Delphi для создания дополнительного потока используется компонент TThread Object (его можно найти в репозитории). После выбора этого модуля запрашивается имя класса, который будет дочерним для TThread. После этого раскрывается модуль с заготовкой для дочернего класса:
unit Unit1;
interface
uses
Classes;
type
MyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
implementation
{ ...
... }
procedure MyThread.Execute;
begin
{ В это место необходимо поместить код потока }
end;
end.
При программировании потока нельзя использовать методы и свойства визуальных компонентов, которые могут приводить к изменению внешнего вида программы. Однако если это требуется, то поток должен обращаться к специальному методу Synchronize.
1.2.10.5. ТЕХНОЛОГИЯ СОМ
Технология COM обеспечивает возможность автоматического общения между компонентами СОМ и другими приложениями на основе базового интерфейса, с помощью которого программа сама может выяснить, поддерживает ли конкретный объект требуемую конкретному приложению конкретную СОМ-функию или нет.
Объект СОМ представляет собой законченный объект со свойствами и методами, который можно легко встраивать в приложения или распространять как продукт. Одно из наиболее известных расширений технологии СОМ - это компоненты АсtiveX. На основе технологии СОМ создаются серверы автоматизации, активные серверные страницы с расширением АSP (Active Server Pages ).
Для создания объектов, которые должны функционировать в сети на разных компьютерах, разработана распределенная технология СОМ - DCOM (Distributed COM).
Составные части технологии СОМ.
I. Интерфейс СОМ. Описание методов и свойств объекта СОМ. Последний может содержать несколько интерфейсов.
Кленты СОМ общаются с сервером СОМ на основе стандартного механизма публикации интерфейса СОМ. После того, как интерфейс СОМ стандартным способом зарегистрирован в операционной системе - опубликован, его уже нельзя изменять, иначе будет нарушена гарантия нормального функционирования объекта СОМ.
Каждый объект СОМ имеет свой IID - Interface Identifier. IID строится на основе уникального глобального идентификатора GUID - Globally Unique Identifier. GUID обеспечивает уникальность идентификатора интерфейса СОМ.
Каждый объект СОМ содержит базовый интерфейс IUnknown, который позволяет узнать какие интерфейсы СОМ доступны клиенту СОМ. Все они наследуют характеристики IUnknown. Интерфейс IUnknown содержит метов QueryInterface, который возвращает ссылки на другие доступные интерфейсы. Название каждого интерфейса должно начинаться с заглавной буквы I (Interface).
II. Сервер СОМ. Законченный модуль (EXE или DLL), в котором хранится программный код объекта СОМ (возможно - нескольких). Сервер СОМ создает объект, который занимается созданием и загрузкой экземпляров требуемых объектов СОМ. Экземпляр выполняет конкретные действия своего интерфейса, затребованные в запросе клиента СОМ.
В IDE Delphi 5 для создания сервера СОМ необходимо выполнить:
File | New | страница ActiveX
и на странице ActiveX выбрать значок ActiveX Library. Это библиотека объектов ActiveX, которая представляет собой сервер СОМ, хранящий набор объектов СОМ.
Теперь в эту библиотеку необходимо добавить объект СОМ. Выполняются те же команды и выбирается значок СОМ Object. В появившемся окне задаются характеристики объекта СОМ.
После создания серверного объекта СОМ он регистрируется в Windows. Для этого вызывается окно редактирования интерфейсов сервера СОМ - Project.tlb (например, командой Viev | Type Library ), в котором надо щелкнуть на пиктограмке Register Type Library. Происходит компиляция. Создается библиотека DLL, содержащая сервер СОМ и одновременно происходит его регистрация в операционной системе.
III. Клиент СОМ. Программный код, в котором происходит обращение к интерфейсу СОМ с запросом на выполнение определенных услуг сервера СОМ.
Клиентские программы могут обращаться к серверу СОМ после того, как он будет зарегистрирован.
1.2.10.6. ТЕХНОЛОГИЯ СОRBA
Технология СОRBA (Common Object Request Broker Architecture - общая архитектура брокеров объектных запросов) позволяет создавать распределенные приложения, работающие в сети и способные выполняться под управлением разных операционных систем. Технология организует совместную работу объектов, предоставляющих другим программам свои интерфейсы. Эти интерфейсы характеризуют возможности объектов.
Отличительная особенность технологии СОRBA заключается в обеспечении совместной работы объектов, созданных для разных систем.
Серверные объекты СОRBA могут быть запущены на любом компьютере сети, однако прежде в сети должен быть установлен брокер объектных запросов (Object Request Broker). Это специальная система, включающая в себя библиотеку стандартных функций СОRBA и набор сетевых ресурсов, которые позволяют:
• организовать распределенную работу, написанных на разных языках;
• отслеживать и синхронизировать работу программ;
• перезапускать в случае сбоев;
• получать и анализировать требования от клиентских программ;
• распределять от клиентских программ по соответствующим серверным объектам на основании зарегистрированных интерфейсов;
• дожидаться результата выполнения требования и возвращать его клиентской программе, установившей связь с серверным объектом СОRBA и др.
С помощью IDE Delphi 5 можно создавать объекты СОRBA только для операционных систем Windows.
1.2.11. МНОГОУРОВНЕВЫЕ ПРИЛОЖЕНИЯ
В IDE Delphi 5 реализованы следующие аспекты многоуровневых приложений:
• Технология MIDAS.
• Многоуровневые приложения с доступом через сервер MTS.