Добавлен: 29.06.2023
Просмотров: 77
Скачиваний: 2
Клиенты не знают как СОМ-объект выполняет свои непосредственные действия. СОМ-объект предоставляет свои услуги при помощи практического использования специализированных интерфейсов. В дополнение, прикладному программному приложению-клиенту не нужно знать, где именно находится СОМ-объект. Технология СОМ обеспечивает прозрачный доступ независимо от местонахождения СОМ-объекта.
Когда клиент запрашивает необходимую услугу от конкретного СОМ-объекта, он передает СОМ-объекту идентификатор класса (CLSID). CLSID - всего лишь GUID, который применяется при организации непосредственного обращения к СОМ-объекту. После передачи CLSID, СОМ-сервер должен обеспечить так называемую фабрику класса, которая создает экземпляры СОМ-объектов.
В общих чертах, СОМ-сервер должен выполнять следующие функциональные возможности:
– регистрировать данные в системном реестре операционной системы Windows для организации связывания модуля сервера с идентификатором класса (CLSID);
– предоставлять фабрику СОМ-класса, создающую экземпляры СОМ-объектов;
– обеспечивать механизм, который обеспечивает процессы выгрузки из памяти серверы СОМ, которые в текущий момент времени не предоставляют услуг клиентам.
С использованием СОМ клиент не должен беспокоиться о том, где располагается объект, он просто делает вызов интерфейса данного объекта. Технология СОМ обеспечивает все необходимые шаги для того, чтобы сделать этот вызов. Шаги могут отличаться, в зависимости от местонахождения объекта.
Объект может находиться в том же процессе, где и клиент, в другом процессе на том же компьютере, где расположен клиент, или на другом компьютере в сети.
В зависимости от определенной ситуации применяются различные типы серверов:
– внутренний сервер (In-process server);
– локальный сервер или сервер вне процесса (Local server, Out-of-process server);
– удаленный сервер (Remote server).
Внутренний сервер - это библиотека DLL, которая запущена в одном процессе вместе с клиентом. Например, элемент управления ActiveX, который внедрен на Web-страницу и просматривается при помощи Internet Explorer или Netscape Navigator.
В данном случае элемент управления ActiveX загружен на клиентскую машину и находится в том же процессе, что и обозреватель Web. Приложение-клиент связывается с сервером внутри процесса при помощи прямых вызовов СОМ-интерфейса.
На рис. 3. представлена схема взаимодействия клиента с внутренним сервером.
Рисунок 3 – Схема взаимодействия клиента с внутренним сервером
На рис. 4 изображена схема, показывающая методику взаимодействия клиента и сервера в случае, когда приложения работают на одном компьютере, но в разных приложениях.
Рисунок 4 – Схема взаимодействия клиента с сервером в разных процессах на одном компьютере
Локальный СОМ-сервер должен быть зарегистрирован в системном реестре операционной системы Windows так же, как и внутренний СОМ-сервер.
Удаленный сервер представляет собой библиотеку DLL или иное прикладное программное приложение, которое было запущено на другом персональном компьютере. То есть клиент и сервер работают на разных компьютерах в сети.
Например, приложение базы данных, написанное с помощью Delphi, соединяется с сервером на другом компьютере в сети. Удаленный сервер использует распределенные СОМ-интерфейсы (Distributed COM, DCOM) для связи с клиентом.
Удаленный сервер работает также с помощью прокси. Различие в работе между локальным и удаленным сервером заключается в типе используемой межпроцессной связи.
В случае локального сервера - это СОМ, а в случае удаленного сервера - DCOM. Схема взаимодействия клиента и удаленного сервера показана на рис. 5.
Рисунок 5 – Схема взаимодействия клиента с сервером на разных компьютерах
Таким образом, COM-сервер это специальным образом оформленное и зарегистрированное приложение, которое позволяет клиентам создавать реализованные на сервере объекты. Модель СОМ предоставляет возможность создания многократно используемых компонентов, независимых от языка программирования.
Такие компоненты называются СОМ-серверами и представляют собой исполняемые файлы (ЕХЕ) или динамически загружаемые библиотеки (DLL), специальным образом оформленные для обеспечения возможности их универсального вызова из любой программы, написанной на поддерживающем СОМ языке программирования.
При этом СОМ-сервер может выполняться как в адресном пространстве вызывающей программы (внутрипроцессный сервер - in-process server), так и в виде самостоятельного процесса (внепроцессный сервер - out-of-process server) или даже на другом компьютере (в этом случае говорят о распределенной модели СОМ - Distributed СОМ, а сервер называют удаленным).
2.3. COM-клиент
Очень важным в процессе практической разработки СОМ-приложений является непосредственное создание программных приложений, которые называются СОМ-клиентами, которые могут запрашивать интерфейсы объектов, чтобы определить те услуги, которые может предоставить некоторый СОМ-объект.
Типичным СОМ-клиентом является диспетчер автоматизации (Automation Controller). Диспетчер автоматизации представляет собой некоторую часть прикладного программного приложения, которая знает какой тип информации необходим ему от разных программных объектов сервера, и она запрашивает данную информацию по мере необходимости процесса обработки информации.
Технология СОМ изначально разрабатывалась как программное ядро для непосредственного осуществления необходимого спектра операций межпрограммного взаимодействия. Уже на этапе практической разработки предполагалось реализовать возможность расширения возможностей технологии при помощи практического использования, так называемых расширений СОМ.
СОМ позволяет выполнить расширение собственной функциональности, за счет непосредственного создания специализированных наборов программных интерфейсов для решения конкретных задач программирования и представления данных.
Технология ActiveX представляет собой технологию, которая в своей работе использует программные компоненты СОМ, особенно это может быть реализовано за счет элементов управления.
Технология ActiveX - не единственное расширение СОМ. В табл. 3.2 представлены некоторые из используемых в настоящее время расширений СОМ.
Перечисленные в табл. 1 расширения СОМ – это далеко не все из имеющихся. Постоянно идет планомерная доработка старых и создание новых, более совершенных технологий межпрограммного взаимодействия в программных системах.
Таблица 1
Список расширений СОМ
Расширение СОМ |
Краткое описание |
Серверы автоматизации (Automation servers) |
Серверы автоматизации- это объекты, которыми можно управлять из других приложений во время работы приложения. Таким образом, автоматизация- это способность приложения программно контролировать объекты других приложений |
Диспетчеры автоматизации или СОМ-клиенты (Automation Controllers, COM Clients) |
Диспетчеры автоматизации- это клиенты серверов автоматизации. Они позволяют разработчику или пользователю писать сценарии для управления серверами автоматизации |
Элементы управления ActiveX (ActiveX Controls) |
Элементы управления ActiveX предназначены для серверов внутри процесса (in-process COM servers). Элементы ActiveX обычно используются путем встраивания в приложение-клиент |
Библиотеки типов (Type Libraries) |
Библиотеки типов представляют собой статичные структуры данных, которые часто сохраняются как файлы ресурсов. Они содержат детализированную информацию об объекте и его интерфейсах. Клиенты серверов автоматизации и элементы управления ActiveX используют данную информацию и всегда считают ее доступной |
Страницы активного сервера (Active Server Pages) |
Активные серверные страницы- это компоненты ActiveX, которые позволяют вам создавать динамически изменяющиеся Web-страницы |
Активные документы (Active Documents) |
Активные документы - это объекты, которые поддерживают связывание и внедрение, визуальное редактирование, перенос (drag-and-drop). В качестве примера таких документов можно представить документы Microsoft Word и книги Microsoft Excel |
Визуальные межпроцессные объекты (Visual Cross-process Objects) |
Визуальные межпроцессные объекты- это визуальные объекты, которыми можно управлять из других процессов |
На рис. 6 представлена диаграмма, которая показывает связь некоторых расширений СОМ и их связь с технологией СОМ.
Использование СОМ-объектов имеет как преимущества, так и некоторые ограничения. СОМ-объекты могут быть как визуальными, так и невизуальными. Какие-то СОМ-объекты должны быть запущены в одном процессе с клиентом, другие - в разных процессах либо на разных компьютерах.
Рисунок 6 – Технологии, основанные на СОМ
Таким образом, СОМ-клиент это аппаратный или программный компонент вычислительной системы, посылающий запросы серверу. Программа, являющаяся клиентом, взаимодействует с сервером, используя определённый протокол. Она может запрашивать с сервера какие-либо данные, манипулировать данными непосредственно на сервере, запускать на сервере новые процессы и т.п. Полученные от сервера данные клиентская программа может предоставлять пользователю или использовать как-либо иначе, в зависимости от назначения программы. Программа-клиент и программа-сервер могут работать как на одном и том же компьютере, так и на разных. Во втором случае для обмена информацией между ними используется сетевое соединение.
3. Практическая часть
3.1. Постановка задачи
RSS – российская компания, владелец розничной сети, специализирующейся на продаже компьютерной, цифровой и бытовой техники, а также производитель компьютеров, в том числе ноутбуков, планшетов и смартфонов (сборочное производство). На середину 2018 года сеть насчитывает более 1400 магазинов в 540 городах России. Штаб-квартира компании находится во Владивостоке.
Анализ деятельности компании и информационных потоков была установлена необходимость автоматизации ключевых бизнес-процессов по средствам разработки информационной системы учета основных учетных операций, осуществляемых менеджером.
Система разрабатывается с надлежащим учетом всех требований, которые выдвигаются к программному обеспечению специфичному в рамках данной предметной области.
Главной целью этого проекта автоматизации является разработка автоматизированного рабочего места сотрудника отдела продаж исследуемой компании.
Не менее важной целью для разработки системы является уменьшение времени на проведение главных операций сотрудником отдела продаж, что, само собой, должно повлечь за собой качественные улучшения в деятельности специалиста.
В результате разработки должны быть достигнуты следующие показатели:
– организация учета информации, основанная на применении системы управления базами данных;
– разработка пользовательского интерфейса для работы с информационной системой, обеспечивающего интуитивно-понятные процедуры вызова основных функций системы и быстрый доступ к базе данных;
– надежное хранение информационных массивов, реализованное посредством обеспечения целостности данных;
– сокращение времени на проведение основных операций сотрудником кафедры, что, безусловно, должно повлечь за собой качественные улучшения в деятельности специалиста.
Пользователями данной системы являются сотрудники отдела продаж; администратор.
Данная информационная система будет хранить:
– информацию о материалах;
– информацию о типах работ;
– информацию о отделах;
– информацию о складах;
– информацию о заказчиках;
– информацию о сотрудниках;
– информацию о должностях;
– информацию о семейном положении.
– информацию о заявках.
– информацию о договорах.
– информацию о графиках выполнения работ.
Основные функции, которые будет выполнять разрабатываемая система:
– ввод и редактирование информации;
– поиск и просмотр информации;
– добавление и удаление данных справочников и документов;
– оформление ведомостей;
– расширенный поиск информации.
3.2. Алгоритмизация программы
Рассмотрим основные алгоритмические решения, которые были реализованы в процессе разработки программной системы и в частности, реестра договоров
Объявление имени формы
unit o_reestrdogovorov;
Секция интерфейсных объявлений программной системы реализована через interface
interface
Подключение необходимых библиотек, например, ADODB – для доступа к объектам ADO и пр.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Unit1, DBGrids, DB, ADODB, StdCtrls, Buttons, DBCtrls;
Объявление используемых классов разрабатываемой программной системы и процедур
type
TForm14 = class(TForm)
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
DBLookupComboBox1: TDBLookupComboBox;
procedure BitBtn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
Объявление необходимых переменных
var
Form14: TForm14;
implementation