Добавлен: 22.04.2023
Просмотров: 93
Скачиваний: 1
Введение
В данной работе нами будет детально рассмотрена технология COM, которая на данном этапе довольно много где используется при разработке программного обеспечения, интеграции программных продуктов в единые информационные системы. Целью для разработки COM-технологии явилось стремление к интеграции программного обеспечения через стандартизацию механизмов взаимодействия программных модулей между друг другомС этим приходится считаться, и каждый программный продукт, выпущенный под платформу Windows, для достижения коммерческого успеха обязан соответствовать инновациям Microsoft.
Актуальность курсовой работы состоит в том, что на данный момент времени существует огромное количество программ, которые имеют подобное происхождение, как и у COM- технологии и предназначение такое же, но именно эта программа пользуется популярностью и как мы уже сказали, все это напрямую зависит от ее разработчика. Поэтому я выбрала имеемо эту тему для своего исследования, так как хотела полностью обозначить все факторы данного программного обеспечения и более подробно ее изучить.
Предметом является детальный анализ COM – технологии.
Объектом выступает - COM – технология.
Целью является описать данную технологию, раскрыть ее сущность и основные функции.
Задачи:
- Описание COM – технологии
- Описание используемых интерфейсов
- Описание COM – объектов
- Рассмотрение и описание расширений для COM
- Описание COM – клиентов.
Структура курсовой работы состоит из введения, трех глав, включающих три параграфа к каждой главе, заключения, списка использованных источников. Мы определили основные положения нашей курсовой работы. Следующим этапом будет рассмотрение и анализ всех вышеперечисленных аспектов. Для подтверждения своей информации будут приведены источники литературы, которые будут оформлены в виде сносок, а так же приведены в списке литературы, который будет находиться в конце нашей работы. Они будут состоять из учебников, а так же ресурсов электронного характера из сети – интернет.
Общая характеристика COM-технологии
Общие положения COM- технологии и ее характеристика
Технология COM – представляет собой объектно-ориентированную программу, которую нам предлагает Microsoft. Такой вид программы, как COM была разработана именно для повышения надежности взаимодействия программных обеспечений между собой. Представленная технология не определяет структуру программного продукта, язык программирования и прочие детали реализации. COM является стандартной программой, которая преобразует модель программного объекта, который в свою очередь соответствует требованиям COM-технологии. [1]
Программный объект, который был создан согласно спецификации данного программного обеспечения называется COM-объектом. Данная технология устанавливает основные показатели того, как COM-объекты взаимодействуют между собой. Данную программу мы можем отнести к так называемым двоичным стандартам, т.к. прилагается к оттранслированному в двоичный код программному объекту.[2] Взаимодействие COM-объектов обеспечивается набором предопределенных подпрограмм, которые называются интерфейсы. Доступ к ним мы можем наблюдать через такие идентификаторы интерфейсов GUID (Global Unique Interface Identifyer), уникальность которых гарантирует операционная система. Но о них мы поговорим чуть позже.[3]
Такой механизм работы имеет общие черты с использованием указателей при доступе к объектам в объектно-ориентированных языках программирования, что дает нам с вами возможность легкого управления объектами, т.к. доступ к ним обеспечивается через указатели. COM-технология расширяет этот механизм, перенося применение указателей (в виде GUID) для доступа к объектам на уровень операционной системы.
Давайте подведем итоги первого раздела нашей работы и еще раз отметим те важные моменты, о которых мы упоминали выше, но уже в более сжатом изложении. [4]
Таким образом, мы можем сделать вывод, анализируя вышеописанные показатели и опираясь на собственные знания, объекты, программного обеспечения COM, могут быть прозрачно друг для друга модифицироваться, т.к. доступ к объектам обеспечивается через GUID. COM технология может включать в себя также библиотеку, которая будет содержать в себе стандартный набор интерфейсов, которые в свою очередь могут определять ядро функциональности COM и небольшой набор API функций, разработанных для создания COM-объектов и управления ими.[5]
Архитектура COM является расширяемой, и на ней базируются другие технологии Microsoft, такие как OLE и ActiveX.[6] Данные технологии в настоящем времени служат дополнительными расширениями операционной системы, и определяют свои собственные правила работы и предлагают свои библиотеки для создания объектов и для управления объектами на основе данных технологий.
Используя COM как основу, разработчики программного обеспечения имеют возможность создавать свои собственные расширения таким образом, что программные объекты созданные, по правилам COM-технологии могут работать с другими COM-объектами через унифицированный механизм взаимодействия, который предлагает COM.
COM использует такое понятие как «класс», которое по своему смыслу означает то же самое, что и в объектно-ориентированных средствах разработки. COM-объект является объектом COM-класса (COM class). COM-классы, для различия с классами в объектно-ориентированных языках, с помощью которых может создаваться приложение, обычно называются соклассами (CoClass). Далее в тексте будет использоваться терминология, исходящая из объектно-ориентированного программирования.
Интерфейсы
Интерфейс в данной программе является основной строительной единице в программном обеспечении COM. Они объединяются на семантически связанные группы подпрограмм, через которые COM-объекты осуществляют взаимодействие:
В данном разделе мы с вами рассмотрим основные положения интерфейсов в программной технологии «COM». Определим их виды, значения, как они устроены их функции и дадим общую характеристику значимости их работы.[7]
Начнем мы с ключевых аспектов, которые COM определяет для интерфейсов:
· Методы интерфейса абстрактны. Данный интерфейс представляет собой набор прототипов методов, назначение которых заключается только в определении интерфейса. Определения методов включает в себя определения числа и типов передаваемых значений, возвращаемого значения, а также ожидаемого поведения объекта.[8] Как методы реализованы, в определение интерфейса не включается.[9] Таким образом, реализуется полиморфизм интерфейса, т.к. каждый потомок, наследующий интерфейс, может включать собственную реализацию метода;
· Интерфейс подчиняется двоичному стандарту. Так как все методы интерфейса абстрактны, интерфейс представлен как указатель на vtable (virtual table). Каждая запись в vtable представляет собой ссылку на соответствующий метод класса, который содержит реализацию интерфейса. Определение интерфейса как указателя устанавливает протокол для доступа к COM-объекту, который является двоичным. Таким образом, получение доступа к реализации метода интерфейса объекта представляет собой через последовательную процедуру получения указателей:
С GUID система связывает указатель на интерфейс. Указатель на интерфейс, в свою очередь является указателем на vtable, через которую обеспечивается указатель на таблицу указателей на код с реализациями методов. Множество объектов одного класса в системе используют одну общую vtable, и для каждого такого объекта создается структура с частными данными, необходимыми для корректного вызова функций.
· Интерфейс включает в себя определенную функциональность. Методы интерфейса семантически связаны по функциональности и назначению. Согласно этому, методы интерфейса обычно именуется согласно своему назначению, и имя предваряется заглавной I. Для примера, метод IMalloc предназначен для размещения и освобождения памяти;
· Интерфейс имеет уникальный идентификатор. Интерфейсы различаются посредством использования глобальных идентификаторов GUID, которые используются для ссылки на идентификаторы конкретных интерфейсов IID (Interface Identifier). Каждый интерфейс имеет свой IID, и при регистрации в системе получает связанный с ним GUID. Использование GUID более совершенно, чем использование символьных имен, т.к. гарантирует отсутствие конфликтов имен при обновлении программных продуктов (выхода новых версий) и при использовании программного обеспечения от различных производителей;
· Интерфейс не может измениться после регистрации в системе. Каждый интерфейс предназначен для выполнения определенной задачи, и определяет, какие данные поступают на обработку и какие данные выводятся. Таким образом, после того, как интерфейс опубликован в системе, и стал доступен для использования, он не должен меняться. Любое изменение в семантике интерфейса ведет к необходимости оявления нового интерфейса.
· Интерфейсы наследуют функциональность от одного базового предка. Все интерфейсы прямо или косвенно являются потомками интерфейса IUnknown. Этот интерфейс обеспечивает базовую функциональность интерфейса, которая включает в себя динамический опрос объекта (dynamic quering) и управление жизненным циклом объекта (lifetime managment) . Эта функциональность обеспечивается тремя методами интерфейса IUnknown: QueryInterface , AddRef и Release . Каждый класс, который реализует интерфейс, должен реализовать эти три метода, наряду с методами, унаследованные от другого интерфейса, и своими собственными методами. Ниже представлено краткое описание функционального назначения упомянутых методов:
- QueryInetrface обеспечивает опрос объекта и доступ к указателю на интерфейс. QueryInerface является первой записью в vtable, и предлагает эффективный путь для определения возможностей объекта, в простейшем случае через этот метод при установлении связи обеспечивается передача указателя на интерфейс IUnknown тому объекту, который пытается получить доступ к данному объекту. Данный метод также делает возможным обновление COM объекта без потерь на обновление остальных зависимых объектов, т.к. объект может быть динамически опрошен клиентами через указатель на IUnknown.
- AddRef и Release находятся на втором и третьем местах в vtable. Это простые счетные функции, которые предоставляются для управления временем жизни объекта. Пока внутренний счетчик объекта, отражающий количества раз вызова AddRef и Release больше нуля (вызов AddRef может увеличивать его значение), объект остается в памяти. Как только значение счетчика достигает нуля, реализация интерфейса может безопасно удалить все зависимые нижележащие объекты. Это функция носит название lifetime managment.
На данный момент времени СОМ применяется практически во всех серьезных для работы программах. [10]
Давайте приведем пример, для более детального и подробного изучения нашей темы. Давайте представим, что пользователю в одной из своих работ придется расположить электронный вид таблицы с расчетными данными, которые имеют ссылки на определенные параметры в тексте. Чтобы выполнить какие либо вычисления не прибегая к технологиям СОМ, приходилось бы постоянно переключаться между двумя программами (Word и Excel), а информацию копировать (вырезать и вставлять). Вот для этого и нужна такая программа, при помощи ее технологий можно применять функции электронной таблицы прямо в текстовом редакторе и автоматически форматировать полученный результат. Возможность реализовать операции такого рода называется автоматизацией.[11]
Цель данной операции состоит в том, чтобы дать возможность программе предоставлять в использование сервисы, которые в ней присутствуют.[12] Основной особенностью и задачей автоматизации является возможность комбинировать функции различных специализированных приложений в одном модуле. СОМ дает возможность программам передавать свою информацию в другие приложения и модули. Если бы каждая программа или приложение-сценарий могли бы поддерживать указатели и процедуру обхода указателей, то проблема была бы решена. Однако в некоторых языках программирования есть определенная трудность с процедурой обхода таблицы указателей. Некоторые из них, например Vіsual Basіc, не поддерживают указатели напрямую. Для решения этой проблемы был разработан специальный интерфейс, который разрешает любым языкам программирования, в том числе таким, как Vіsual Basіc, обращаться к методам COM-компонентов. Этот интерфейс получил название ІDіspatch.