Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TPiSPP.docx
Скачиваний:
9
Добавлен:
28.10.2018
Размер:
60.69 Кб
Скачать

10.Основи com. Об'єкт com. Інтерфейси com. Сервери com. Фабрика класу. Інтерфейс Iunknown.

В технологии СОМ приложение предоставляет для использования свои службы, применяя для этого объекты СОМ. Одно приложение содержит как минимум один объект. Каждый объект имеет один или несколько интерфейсов.

Клиент получает доступ к службам объекта только через интерфейс и его методы. Этот механизм является ключевым. Клиенту достаточно знать несколько базовых интерфейсов, чтобы получить информацию о составе свойств и методов объекта. Уже созданный интерфейс не может быть изменен.

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

Для доступа к методам объекта клиент должен получить указатель на соответствующий интерфейс. Для каждого интерфейса существует собственный указатель. Доступ к свойствам объектов осущ-ся только через его методы.

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

Интерфейс является средством, кот-е позволяет клиенту правильно обратиться к объекту СОМ, а объекту ответить так, чтобы клиент его понял.

Для идентификации каждый интерфейс имеет два атрибута: имя (начинаться с символа "I"); глобальный уникальный идентификатор. Каждый объект СОМ обязательно имеет интерфейс lUnknown. Метод Queryinterface возвращает указатель на интерфейс объекта. Интерфейс IUnknown обеспечивает работу механизма учета ссылок. Объект должен существовать до тех пор, пока его использует хотя бы один клиент. При этом клиент не может самостоятельно уничтожить объект, ведь с ним могут работать и другие клиенты. При завершении работы с интерфейсом клиент обязан вызвать метод Release. Этот метод уменьшает счетчик ссылок на единицу. После обнуления счетчика объект уничтожает себя.

Основы архитектуры COM.

Все технологии OLE и ActiveX построены на основании, обеспеченном СОМ.

Рассмотрим следующую проблему : одна часть программного обеспечения должна получить доступ к сервисам, предоставляемым другой частью. Но в каждом отдельном случае механизм доступа разный: вызовы локальных функций, передача сообщения средствами связи между процессами, системные вызовы  п или какая-то разновидность сетевых коммуникаций. Зачем все это? Не проще ли определить один общий способ доступа ко всем видам программных сервисов независимо от способа их реализации?

Этим и занимается СОМ. Она определяет стандартный механизм, с помощью которого одна часть программного обеспечения предоставляет свои сервисы другой и который работает во всех описанных выше случаях. Общая архитектура сервисов в библиотеках, приложениях, системном и сетевом Интерфейс – это список ф-й с точки зрения двоичного кода – это таблица, содержащая указатели на ф-ии. Реализуемые ф-ии создают серверную таблицу с указателями на них, а указатели на эту таблицу м.б. получены клиентом.. Именно через эти

указатели клиент получает доступ к ф-ии сервера. Каждый интерфейс имеет уникальный GUID. В названии интерфейса – англ буквы и _. Все интерфейсы явл наследниками Iunknown , кот имеет 3 ф-ии(метода): 1) addRet – увеличить на 1 число ссылок на объект. 2) Release – уменьшить на 1 число ссылок на объект. 3) QueryInterface – для получения указателяна интерфейс.

Можно применять язык IDL для описания интерфейса. MIDL – компилятор, ATL – библиотека.

В СОМ любая часть программного обеспечения реализует свои сервисы как один или несколько объектов СОМ. Каждый такой объект поддерживает один или несколько интерфейсов, состоящих из методов. Метод ≈ это функция или процедура, которая выполняет некоторое действие и может быть вызвана программным обеспечением, использующим данный объект (клиентом объекта). Методы, составляющие каждый из интерфейсов, обычно определенным образом взаимосвязаны. Клиенты могут получить доступ к сервисам объекта СОМ только через вызовы методов интерфейсов объекта ≈ у них нет непосредственного доступа к данным объекта.

Большинство объектов СОМ поддерживают более одного интерфейса. Сам объект всегда реализуется внутри некоторого сервеpa. Сервер может быть либо динамически подключаемой библиотекой (DLL), подгружаемой во время работы приложения, либо отдельным самостоятельным процессом.

Чтобы вызывать методы интерфейса объекта СОМ, клиент должен получить указатель на этот интерфейс. Обычно СОМ-объект предоставляет свои сервисы посредством нескольких интерфейсов, и клиенту требуется отдельный указатель для каждого интерфейса, методы которого он намерен вызывать.

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

Автоматизация OLE(Object Linking and Embedding).

Автоматизация — это одна из возможностей, предоставляемых технологией Microsoft COM (Component Object Model). Эта технология используется приложениями для предоставления доступа к их объектам, а также к свойствам и методам этих объектов другим приложениям, каковыми могут быть и средства разработки. Например, текстовый процессор, будучи COM-сервером, может предоставлять другим приложениям доступ к документу, абзацу, закладке с помощью соответствующих объектов. Примером может служить приложения Microsoft Office . OLE позволяет чрезвычайно быстро создавать приложения , использующие сложные и распространенные форматы без лишних затрат труда.

переменных. К данной группе относятся метрики Чепина.

В простейшем случае сложность системы определяется как сумма мер сложности ее модулей. Сложность модуля вычисляется так:

N » n1log2 (n1) + n2log2(n2), где n1 — число различных операторов, п2 — число различных операндов; объем V модуля: V = N x log2 (n1 + n2).

Метрика цикломатической сложности: V(G) = E-N + 2,где Е — количество дуг, a. N — количество вершин в управляющем графе. С внешними связями сопоставляют характеристику «сцепление», а с внутренними связями — характеристику «связность».

Связность модуля — это мера зависимости его частей. Чем выше связность модуля, тем лучше результат проектирования. Для измерения связности используют понятие силы связности (СС). Существует 7 типов связности: Связность по совпадению (СС=0); Логическая связность (СС=1); Временная связность (СС=3); Процедурная связность (СС=5); Коммуникативная связность (СС=7);

Информационная связность (СС=9); Функциональная связность (СС=10).

Сцепление—мера взаимозависимости модулей по данным. Измеряется степенью сцепления (СЦ). Выделяют 6 типов сцепления: Сцепление по данным (СЦ=1). Модуль А вызывает модуль В; Сцепление по образцу(СЦ=3). В качестве параметров используются структуры данных; Сцепление по управлению (СЦ=4). Модуль А управляет модулем В (с помощью флагов), посылая ему управляющие данные; Сцепление по внешним ссылкам (СЦ=5).

Модули А и В ссылаются на один и тот же глобальный элемент данных; Сцепление по общей области (СЦ=7). Модули разделяют одну и ту же глобальную структуру данных; Сцепление по содержанию (СЦ=9).

Один модуль прямо ссылается на содержание другого модуля.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]