ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.06.2023

Просмотров: 53

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
  • CLSID, выступающий как ключ для поиска записи;
  • указание типа доступного сервера («в процессе», локальный или удаленный);
  • для серверов «в процессе» и локальных (т.е. для выполняемых на той же машине, что и клиент) должно быть задано полное имя DLL или исполняемого файла сервера; для удаленных серверов (доступных через DCOM) - указание, где искать исполняемый файл сервера.[12]

Обычно приложение добавляет записи к этой таблице при установке. После этого объекты приложения могут создаваться и использоваться клиентами.

Рассмотрим самый простой способ создания одного неинициализированного экземпляра объекта. Вначале клиент вызывает функцию библиотеки СОМ CoCreateInstance. Кроме других параметров, данный вызов задает CLSID объекта, который должен быть создан, а также IID некоторого интерфейса, поддерживаемого объектом. Далее библиотека СОМ по CLSID находит в системном реестре запись, соответствующую классу данного объекта. Эта запись содержит информацию о местоположении сервера, способного создать экземпляр класса объекта. После того как сервер найден, ОС запускает его.

Вместе с CLSID и IID первого интерфейса, указатель которого необходим клиенту, параметры CoCreateInstance позволяют также клиенту указать, какой тип сервера должен быть запущен библиотекой СОМ - например, «в процессе» или локальный. Клиент имеет право сказать, что тип сервера ему безразличен, либо задать любую комбинацию допустимых типов серверов.

Запущенный сервер создает экземпляр класса объекта и возвращает указатель на запрошенный интерфейс библиотеке СОМ. Последняя, в свою очередь, передает данный указатель клиенту, который затем может выполнять вызовы методов этого интерфейса. Так как результатом данного процесса является создание неинициализированного объекта, то клиент обычно запрашивает интерфейс, через который объект может быть инициализирован, хотя это и не обязательно.[6]

До этого места подразумевалось, что создаваемый объект реализован в сервере «в процессе» или локальном, т.е. будет выполняться на той же машине, что и клиент. Что же происходит в случае удаленного сервера? Как создается удаленный экземпляр объекта?

Поддержка удаленных объектов обеспечивается DCOM. Процесс во многом аналогичен созданию локального объекта: клиент выполняет тот же вызов библиотеки СОМ, она просматривает системный реестр и т.д. Если же указан удаленный сервер, СОМ установит для создания экземпляра объекта связь с удаленной машиной. Как и все межмашинные коммуникации в DCOM, данный запрос выполняется вызовом удаленной процедуры. Просмотрев свой реестр, удаленная система находит исполняемый файл сервера и создает экземпляр объекта. Так же, как и в случае локального сервера, возвращается указатель на интерфейс, после чего клиент может вызывать методы вновь созданного объекта. Для клиента запуск объекта выполняется одинаково, независимо от того, каким сервером реализован объект: «в процессе», локальным или удаленным; данное различие должно учитываться клиентом, лишь когда он сам считает это необходимым.[11]


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

Если клиенту нужен только один объект, то проще всего создать его с помощью CoCreateInstance. И все же случается, что клиенту может понадобиться много экземпляров объектов одного и того же класса. Чтобы их создание выполнялось эффективно, клиент может получить доступ к фабрике класса (class factory) - объекту, способному создавать другие объекты. Каждая фабрика класса знает, как создавать объекты одного конкретного класса. Фабрики классов - полноценные объекты СОМ: доступ к ним осуществляется через интерфейсы, они поддерживают IUnknown и т.д. И все же они необычные объекты, так как могут создавать другие объекты СОМ. Дело в том, что все объекты, с которыми мы встречались до сих пор, созданы фабрикой класса. Даже когда клиент просто вызывает CoCreateInstance, реализация этой функции в библиотеке СОМ создает объект с помощью фабрики класса. CoCreateInstance скрывает эти детали от клиента. Но на самом деле она использует методы интерфейса IClassFactory, описываемые ниже.

Чтобы называться фабрикой класса, объект должен поддерживать интерфейс IClassFactory. Этот простой интерфейс содержит только 2 метода: CoCreateInstance создает новый экземпляр класса, объекты которого может создавать данная фабрика.

Клиент не передает этому методу в качестве параметра CLSID, так как класс объекта неявно определяется самой фабрикой. И все же клиент задает IID, чтобы получить указатель на нужный ему интерфейс. LockServer позволяет клиенту сохранить сервер загруженным в память. Объект-фабрика, как и другие объекты, поддерживает собственный счетчик ссылок, для учета количества использующих его клиентов. Однако, по разным соображениям, этого счетчика недостаточно, чтобы удерживать сервер загруженным в память. Чтобы сервер гарантированно продолжал работать, можно использовать IClassFactory::LockServer.

Чтобы получить доступ к фабрике класса, клиент вызывает функцию библиотеки СОМ CoGetClassObject. Этой функции передается CLSID класса объектов, которые будут создавать фабрики, а не CLSID самой фабрики. Клиент задает также IID интерфейса, нужного ему для работы с фабрикой. Конечно, обычно это IID интерфейса IClassFactory. Кроме того, как и в случае с CoCreateInstance, клиент может также задать тип сервера, который должен быть запущен для фабрики и ее объектов. Если для фабрики запрашивается, например, сервер «в процессе», то и объекты, созданные фабрикой, тоже будут выполняться данным сервером "в процессе". Допустим, клиент уже вызвал CoGetClassObject, библиотека СОМ запустила фабрику класса и возвратила указатель на интерфейс IClassFactory этой фабрики. Получив указатель, клиент вызывает метод IClassFactory::Createlnstance данного интерфейса. Среди параметров этого вызова клиент передает IID интерфейса, указатель на который ему необходим. В ответ фабрика класса создает объект и возвращает клиенту указатель на заданный интерфейс. Теперь клиент может использовать возвращенный ему указатель для вызовов методов интерфейса.[12]


3 Программы, использующие технологию СОМ

3.1 Microsoft Visio

Microsoft Visio — это решение при создании диаграмм, позволяющее упрощать и связывать информацию, а также делиться ей. Microsoft Visio имеет мощный интерфейс со множеством команд для создания своих методов организации данных.

Оно хорошо подходит для разработчиков , ИТ-специалистов и аналитиков (например, которые связаны с бизнес-процессом, кадрами и управлением), которым необходимо интерпретировать, изменять и передавать сложные данные о процессе, инфраструктуре и приложении.

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

Visio имеет большое количество наборов элементов и шаблонов, используемых для создания центра обработки информации, инженерной задачи, управления, системного проектирования, планирования системы безопасности, разработки приложений, дизайна веб-сайтов и многого другого. 

Visio — это чертежное средство, являющееся полезным каждому, кому требуется создать диаграмму для формализации данных и передачи информации о процессе, инфраструктуре и приложении.

Например, Visio помогает ИТ-специалисту создать диаграммы, которые связаны с проектированием системы, разработкой приложения, инженерным проектированием, планированием пространства, устранением неполадок, обслуживанием, управлением активами, технической поддержкой, ИТ-операциями, бизнес-процессами и т. д.[8]

Для упрощения анализа сложной информации в MS Visio имеется широкий спектр средств, которые направлены на технические и деловые аспекты.

Кроме этого, диаграммы Visio можно связать с разными источниками информации для детального отображения данных в режиме реального времени.

Приложения Microsoft Word и PowerPoint дают возможность использования базовых функций для создания диаграммы.

Visio — это специальное средство, которое является эффективным при содании широкого спектра диаграмм и позволяет сэкономить много времени.

Visio дает возможность выполнять следующие операции:

  • создание диаграмм на основе информации и информацию на основе диаграммы (в том числе выполнять экспорт данных в отчеты);
  • использование средства соединения для привязывания объектов (например, соединение фигур оборудования с линиями, которые предоставляют кабели);
  • связывание диаграммы с внешней информацией;
  • масштабирование диаграммы до необходимого уровня точности;
  • импортирование САПР-чертежей для применения в качестве основы для точного чертежа;
  • создание интерактивной панели показателей.

Также с помощью Visio легко создавать диаграммы с помощью встроенных интеллектуальных фигур и шаблонов, которые созданы корпорацией Майкрософт и ее партнерами.

Visio предоставляется с предварительно указанными темами, которые моментально меняют цвет и стили текста в диаграммах.

При выборе темы, она автоматически изменяет форматирование в области «Фигуры» и на странице.

Можно легко улучшить внешний вид диаграммы, применив привлекательные фоновые изображения, границы и заголовки с одинаковой стилистикой.[9]

3.2 Delphi

Среда разработки Delphi 1 была создана в конце 1994 года, тогда вышла первая версия данной программы. В основе данного программного продукта лежит концепция объектно-ориентированного программирования (ООП), основанная на языке Object Pascal, и визуального подхода к разработке приложения.

После выхода Delphi 1 каждое компьютерное издание писало об этой среде, называемой «убийцей Visual Basic». Разработка Delphi 2 (32-разрядная) ознаменовало новую эру, – появление доступа к возможностям программного интерфейса Windows NT и Windows 95. Среда Delphi 2 стала использоваться для разработки полноценного клиент-серверного приложения. Вскоре Delphi 3 дала разработчикам средство создания распределенного многоуровневого приложения и полноценный инструментарий для проектирования приложения для Internet и Intranet. Была создана полноценная поддержка com, т.е. модели объектов, которая стала краеугольным камнем программирования настоящего времени. Четвертая версия Delphi дает возможность полностью интегрировать разработки с объектом com. Поддержка технологии corba (common object request broker architecture) открывает перед приложением, созданным в delphi для платформы wintel (windows + intel), возможности другой операционной системы (unix, os/2, wms).[1, 2]

Delphi предоставляет следующие свойства и новшества:

– новое расширение языка. В Delphi в язык программирования Object Pascal добавлены динамические массивы, метод обработки переполнений, установка значений параметра по умолчанию, и другое;

– менеджер Проекта. Усовершенствованный менеджер проекта дает возможность объединять проекты, работающие вместе в общую проектную группу. Данное новшество дает возможность организовывать как работу взаимозависимых проектов, таких как однозадачное и многозадачное приложение или dll, так и совместную работу исполняемых программ;[3]

– новый проводник. Он поддерживает выполняемый класс, навигацию по модулям, а также браузер кодов. Проводник кода осуществляет создание класса проще. При этом проводник дает возможность быстро перемещаться по файлам модуля, а также между интерфейсами и их реализациями;


– закрепляемое окно инструментов. IDE (Интегрированная Среда разработки) содержит перенастраиваемую совокупность окон инструментов, закрепляемые с редактором кодов;

– улучшенная отладка. Встроенный отладчик имеет большое количество новых свойств, в том числе удаленную и многопроцессорную отладку, просмотр кодов центрального процессора, инспектора, усовершенствованную точку прерывания, отладчик специфического подменю и закрепленного окна;

– усовершенствование Activex;

– усовершенствование VCL. Расширена иерархия объектов Delphi для того, чтобы можно было включить новые компоненты для Nt Service приложения. Кроме того, новые компоненты выполняемого списка (на Стандартной странице палитры), позволяют централизовать управление меню и команд от кнопок. Управление VCL расширено, чтобы поддерживать drag-and-drop перетаскивания, обеспечивать дополнительный контроль над размещением окна, и многое другое.[3]

Delphi – это представляет собой комбинацию нескольких важных технологий:

– высокопроизводительный компилятор программного кода в машинные коды;

– объектно-ориентированная модель компонентов;

– визуальное построение приложения из программного прототипа;

– масштабируемые средства для разработки базы данных.[4]

Компилятор, который встроен в Delphi, дает высокую производительность, которая необходима для построения приложения в клиент-серверной архитектуре. Он дает возможность легко разрабатывать и быстро проверять готовый программный блок, который характерен для языка программирования четвертого поколения. Кроме этого, Delphi дает возможность быстро разрабатывать приложения без написания вставки на Си или ручного написания кодов (хотя это возможно).[5]

В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы – после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10-20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения.[5]