ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 836
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
245 ступ к которым обеспечивается через уникальные идентификаторы интерфейсов GUID (Global Unique Interface Identifyer), уникальность которых гарантирует операционная система. Такой механизм схож с использованием указателей при доступе к объектам в объектно- ориентированных языках программирования, что дает возможность прозрачного управления объектами, т.к. доступ к ним обеспечивается через указатели. COM-технология расширяет этот механизм, перено- ся применение указателей (в виде GUID) для доступа к объектам на уровень операционной системы. Таким образом, COM-объекты могут быть прозрачно друг для друга модифицироваться, т.к. доступ к объ- ектам обеспечивается через GUID. COM технология включает в себя также библиотеку, в которой содержится набор стандартных интер- фейсов, которые определяют ядро функциональности COM и не- большой набор API функций, разработанных для создания COM- объектов и управления ими.
Архитектура COM является расширяемой, и на ней базируются другие технологии Microsoft, такие как OLE и ActiveX. Эти техноло- гии в настоящее время являются расширениями операционной систе- мы, и определяют свои собственные правила работы и предлагают свои библиотеки для создания объектов и для управления объектами на основе данных технологий. Используя COM как основу, разработ- чики программного обеспечения получают возможность создавать свои собственные расширения таким образом, что программные объ- екты созданные, по правилам COM-технологии могут работать с дру- гими COM-объектами через унифицированный механизм взаимодей- ствия, который предлагает COM.
COM использует такое понятие как «класс», которое по смыслу означает то же самое, что и в объектно-ориентированных средствах разработки. COM-объект является объектом COM-класса (COM
class). COM-классы, для различия с классами в объектно- ориентированных языках, с помощью которых может создаваться приложение, обычно называются соклассами (CoClass).
246
Терминология СОМ
Всякая новая технология приносит с собой новые термины для ее описания.
СОМ-объект представляет собой двоичный код, который вы- полняет какую-либо функцию и имеет один или более интерфейс.
СОМ-объект содержит методы, которые позволяют приложению пользоваться СОМ-объектом. Эти методы доступны благодаря СОМ- интерфейсам. Клиенту достаточно знать несколько базовых интер- фейсов СОМ-объекта, чтобы получить полную информацию о составе свойств и методов объекта. СОМ-объект может содержать один или несколько интерфейсов.
СОМ-интерфейс применяется для объединения методов СОМ- объекта. Интерфейс позволяет клиенту правильно обратиться к СОМ- объекту, а объекту - правильно ответить клиенту. Названия СОМ- интерфейсов начинаются с буквы I. Клиент может не знать, какие ин- терфейсы имеются у СОМ-объекта. Для того чтобы получить их спи- сок, клиент использует базовый интерфейс lunknown, который есть у каждого СОМ-объекта.
Пользователем СОМ-объекта называется приложение или часть приложения, которое использует СОМ-объект и его интерфейсы в своих собственных целях. Как правило, СОМ-объект находится в другом приложении.
СОМ со-классы (coclass) - это классы, которые содержат один или более СОМ-интерфейс. Вы можете не обращаться к СОМ- интерфейсу непосредственно, а получать доступ к СОМ-интерфейсу через со-класс. Со-классы идентифицируются при помощи идентифи- каторов класса (CLSID).
СОМ-объекты часто используют библиотеки типов. Библиотека типов - это специальный файл, который содержит информацию о
СОМ-объекте. Данная информация содержит список свойств, мето- дов, интерфейсов, структур и других элементов, которые содержатся в СОМ-объекте. Библиотека типов содержит также информацию о
247 типах данных каждого свойства и Типах данных, возвращаемых ме- тодами СОМ-объекта.
Технология DCOM (Distributed COM) - это распределенная
СОМ-технология. Она применяется для предоставления средств до- ступа к СОМ-объектам, расположенным на других компьютерах в се- ти (в том числе и сети Internet).
Каждый СОМ-объект имеет счетчик ссылок. Данный счетчик содержит число процессов, которые в текущий момент времени ис- пользуют СОМ-объект. Под процессом здесь подразумевается любое приложение или DLL, которые используют СОМ-объект, т. е. пользо- ватели СОМ-объекта. Счетчик ссылок на СОМ-объект нужен для то- го, чтобы высвобождать процессорное время и оперативную память, занимаемую СОМ-объектом, в том случае, когда он не используется.
После создания и обращения к СОМ-объекту счетчик ссылок увели- чивается на единицу. Всякий раз, когда новое приложение подключа- ется к СОМ-объекту - счетчик увеличивается. Когда процесс отклю- чается от СОМ-объекта - счетчик уменьшается. При достижении счетчиком нуля память, занимаемая СОМ-объектом, высвобождается.
При создании СОМ-приложения необходимо обеспечить сле- дующее:
СОМ-интерфейс;
СОМ-сервер;
СОМ-клиент.
Рассмотрим эти три составляющие СОМ-приложения более по- дробно.
Клиенты СОМ связываются с объектами при помощи СОМ- интерфейсов. Интерфейсы -- это группы логически или семантически связанных процедур, которые обеспечивают связь между поставщи- ком услуги (сервером) и его клиентом.
По правилам обозначения СОМ-объектов, интерфейсы СОМ- объекта обозначаются кружками справа или слева от СОМ-объекта.
Базовый интерфейс lUnknown рисуется кружком сверху от СОМ- объекта.
248
Для примера, каждый СОМ-объект всегда поддерживает основ- ной СОМ-интерфейс lUnknown, который применяется для передачи клиенту сведений о поддерживаемых интерфейсах.
Как уже говорилось выше, СОМ-объект может иметь несколько интерфейсов, каждый из которых обеспечивает какую-либо свою функцию.
Ключевыми аспектами СОМ-интерфейсов являются следую- щие:
Однажды определенные, интерфейсы не могут быть изме- нены. Таким образом, вы можете возложить на один интерфейс опре- деленный набор функций. Дополнительную функциональность мож- но реализовать с помощью дополнительных интерфейсов.
По взаимному соглашению, все имена интерфейсов начи- наются с буквы I, например IPersist, IMalloc.
Каждый интерфейс гарантированно имеет свой уникаль- ный идентификатор, который называется глобальный уникальный идентификатор (Globally Unique Identifier, GUID). Уникальные иден- тификаторы интерфейсов называют идентификаторами интерфейсов
(Interface Identifiers, IIDs). Данные идентификаторы обеспечивают устранение конфликтов имен различных версий приложения или раз- ных приложений.
Интерфейсы не зависят от языка программирования. Вы можете воспользоваться любым языком программирования для реа- лизации СОМ-интерфейса. Язык программирования должен поддер- живать структуру указателей, а также иметь возможность вызова функции при помощи указателя явно или неявно.
Интерфейсы не являются самостоятельными объектами, они лишь обеспечивают доступ к объектам. Таким образом, клиенты не могут напрямую обращаться к данным, доступ осуществляется при помощи указателей интерфейсов.
Все интерфейсы всегда являются потомками базового ин- терфейса Iunknown.
Указатель интерфейса - это 32-битный указатель на экземпляр объекта, который является, в свою очередь, указателем на реализацию
249 каждого метода интерфейса. Реализация методов доступна через мас- сив указателей на эти методы, который называется vtable. Использо- вание массива vtable похоже на механизм поддержки виртуальных функций в Object Pascal.
СОМ-сервер представляет собой приложение или библиотеку, которая предоставляет услуги приложению-клиенту или библиотеке.
СОМ-сервер содержит один или более СОМ-объектов, где СОМ- объекты выступают в качестве наборов свойств, методов и интерфей- сов.
Клиенты не знают, как СОМ-объект выполняет свои действия.
СОМ-объект предоставляет свои услуги при помощи интерфейсов. В дополнение, приложению-клиенту не нужно знать, где находится
СОМ-объект. Технология СОМ обеспечивает прозрачный доступ независимо от местонахождения СОМ-объекта.
Когда клиент запрашивает услугу от СОМ-объекта, он передает
СОМ-объекту идентификатор класса (CLSID). CLSID - всего лишь
GUID, который применяется при обращении к СОМ-объекту. После передачи CLSID, СОМ-сервер должен обеспечить так называемую фабрику класса (см. следующий раздел), которая создает экземпляры
СОМ-объектов.
В общих чертах, СОМ-сервер должен выполнять следующее:
регистрировать данные в системном реестре Windows для связывания модуля сервера с идентификатором класса (CLSID);
предоставлять фабрику СОМ-класса, создающую экзем- пляры СОМ-объектов;
обеспечивать механизм, который выгружает из памяти серверы СОМ, которые в текущий момент времени не предоставляют услуг клиентам.
СОМ-объекты представляют собой экземпляры coclass. Напом- ним, что Coclass - это класс, поддерживающий один или более интер- фейс. СОМ-объекты могут предоставлять только те услуги, которые определены в интерфейсах coclass. Экземпляры Coclass создаются при помощи специального типа объекта, называемого фабрикой клас- са.
250
Фабрика класса - это специальный СОМ-объект, который под- держивает интерфейс IclassFactory и отвечает за создание экземпля- ров того класса, с которым ассоциирована данная фабрика класса.
Всякий раз, когда услуги СОМ-объекта запрашиваются клиен- том, фабрика класса создает и регистрирует экземпляр объекта для конкретного пользователя. Если услуга того же СОМ-объекта запра- шивает другой клиент, фабрика класса создает второй экземпляр объ- екта для обслуживания второго клиента. Coclass должен иметь фаб- рику класса и идентификатор класса CLSID. Использование CLSID для cociass подразумевает, что они могут быть откорректированы всякий раз, когда в класс вводятся новые интерфейсы. Таким образом, в отличие от DLL, новые интерфейсы могут изменять или добавлять методы, не влияя на старые версии.
С использованием СОМ клиент не должен беспокоиться о том, где располагается объект, он просто делает вызов интерфейса данного объекта. Технология СОМ обеспечивает все необходимые шаги для того, чтобы сделать этот вызов. Шаги могут отличаться, в зависимо- сти от местонахождения объекта. Объект может находиться в том же процессе, где и клиент, в другом процессе на том же компьютере, где расположен клиент, или на другом компьютере в сети. В зависимости от этого применяются разные типы серверов:
внутренний сервер (In-process server);
локальный сервер или сервер вне процесса (Local server,
Out-of-process server);
удаленный сервер (Remote server).
Внутренний сервер - это библиотека DLL, которая запущена в одном процессе вместе с клиентом. Приложение-клиент связывается с сервером внутри процесса при помощи прямых вызовов СОМ- интерфейса.
Локальный СОМ-сервер регистрируется в системном реестре
Windows так же, как и внутренний СОМ-сервер.
Удаленный сервер - это библиотека DLL или иное приложение, запущенное на другом компьютере. То есть клиент и сервер работают на разных компьютерах в сети.
251
Удаленный сервер работает также с помощью прокси. Различие в работе между локальным и удаленным сервером заключается в типе используемой межпроцессной связи. В случае локального сервера - это СОМ, а в случае удаленного сервера - DCOM.
Очень важным при разработке СОМ-приложений является со- здание приложений, называемых СОМ-клиентами, которые могут за- прашивать интерфейсы объектов, чтобы определить те услуги, кото- рые может предоставить СОМ-объект.
Типичным СОМ-клиентом является диспетчер автоматизации
(Automation Controller). Диспетчер автоматизации - это часть прило- жения, которая знает какой тип информации необходим ему от раз- ных объектов сервера, и она запрашивает данную информацию по мере надобности.
1 ... 8 9 10 11 12 13 14 15 ... 18
5.2. Технология CORBA
Технология CORBA, разрабатываемая с 1989 года консорциу- мом OMG (Object Management Group), является результатом работы ведущих специалистов из более чем 800 компаний и организаций.
Четкий процесс стандартизации, включая аспекты взаимодействия реализаций CORBA от разных поставщиков (интероперабельность), независимость от языков программирования и операционных сред, фундаментальная поддержка ООП и многие другие уникальные ха- рактеристики, сделали CORBA ведущим стандартом в области ин- фраструктурного middleware.
Основой технологии CORBA являются:
• IDL (Interface Definition Language) - язык, позволяющий опи- сать все аспекты удаленного взаимодействия; схемы отображения
IDL-объявлений на конкретные языки программирования;
• ORB (Object Request Broker) - объектная магистраль, позволя- ющая передавать запросы от клиентов к серверам и обратно;
• Сервисы (Common Object Services) CORBA;
Распределенная система, использующая CORBA, не ориентиро- вана на применение конкретных операционных систем, двоичных
252 стандартов, сетевых протоколов и языков программирования. Факти- чески, это единственная технология, которая обеспечивает возмож- ность использования практически любых языков программирования и функционирование программного обеспечения практически на лю- бых аппаратно-программных платформах
Архитектура комплекса
При использовании технологии CORBA вся система представ- ляет собой набор работающих в сети приложений, предоставляющих друг другу какие-либо ресурсы или обеспечивающие выполнение ка- ких-либо задач. При этом отдельными независимыми приложениями могут являться компоненты доступа к базе данных, служебные серви- сы системы (типа сервиса хранения настроек объектов или сервиса безопасности), драйверы работы с оборудованием, функциональные модули (работы с планами помещений, генерации отчетов, работы с
БД пользователей и др.), а также пользовательские приложения, обеспечивающие отображение состояния объектов системы и воз- можность управления ими.
Данная технология обеспечивает четкое разделение модулей си- стемы на клиентские (пользовательские приложения) и серверные
(драйверы оборудования). Технология обеспечивает удаленную сты- ковку модулей.
Благодаря использованию стандартной технологии стыковки между собой всех модулей системы сторонним разработчикам предо- ставляется возможность расширения системы за счет разработки сво- их собственных модулей, реализующих дополнительные возможно- сти системы или поддержку нового специализированного оборудова- ния.
Технология CORBA позволяет вести разработку практически на любом языке программирования (C++, Java, Delphi и др.) и под лю- бую аппаратно-программную платформу (Microsoft Windows – Intel,
Linux, Sun Microsystems Solaris – SPARC). Однако использование язы- ка программирования Java позволяет получить дополнительное пре-