Интересности по COM, страница 2

2015-08-23СтудИзба

Описание файла

Документ из архива "Интересности по COM", который расположен в категории "". Всё это находится в предмете "проектирование программного обеспечения автоматизированных систем" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "проектирование по автоматизированных систем" в общих файлах.

Онлайн просмотр документа "Интересности по COM"

Текст 2 страницы из документа "Интересности по COM"

Object Linking and Embedding (OLE) - Связь и Внедрение объектов

Контрольные вопросы:

1. Технология ActiveX и OLE

2. Что такое COM и как он работает

3. Как работает распределенный COM. Схема распределенного COM

4. Сложные документы OLE

Литература:

1.David Chappell “Understanding Active X and OLE”.Microsoft Press, 1996

Тема 2. Модель компонентных объектов (COM)

План :

1. Описание СОМ объектов

2. Интерфейсы в COM

3. Создание COM объектов

1. Описание СОМ объектов

• Понимание ActiveX и OLE требует понимания COM

• Описание COM объектов

• Сервисы COMобъекта доступны через методы, входящие в его интерфейсы

  • Интерфейсы

• Интерфейс является контрактом между объектом и его клиентами

• Каждый интерфейс имеет два имени, одно используется людьми, а другое используется программным обеспечением

• Читаемый для людей интерфейс начинается с буквы I

• Имя интерфейса не гарантирует, что оно уникально

• Имена интерфейсов, используемых программным обеспечением являются глобально-уникальными

• Каждый GUID (Globally Unique Identifier) является уникальным во времени и пространстве

• IID (interface identifier) является GUID

• COM не передает мандат определенному языку нотацию для описания интерфейса

• Язык описания интерфейса COM часто используется для определения интерфейса


Рис. 2.1. A COM объект, его интерфейс и его клиент

[ object, uuid(E7CDODOO-1827-llCF-9946-444553540000)]

interface ISpellChecker :IUnknown {

import "unknown.idl" ;

HRESULT LookUpWord([in] OLECHAR word[31], [out] boolean *found);

HRESULT AddToDictionary([in] OLECHAR word[31]);

HRESULT RemoveFromDictaionary([in] OLECHAR word[31]);

}

2. Интерфейсы в COM

• Определение интерфейса включает его IID

• Каждый интерфейс наследует из IUnknown интерфейса

• Определение метода специфицирует имя метода, возвращаемое значение и (необязательно) список параметров

• Интерфейсы неизменны – однажды объявленные public (общие), они не могут быть изменены

• Добавление новой функциональности требует определение нового интерфейса

• COM определяет стандартный бинарный интерфейс для каждого своего метода

• vtable интерфейса содержит указатель на каждый из его методов

• Все vtables начинаются с указателя на методы IUknown

• Объект должен принадлежать этому бинарному формату для каждого интерфейса

Формат бинарного интерфейса COM похож на то, что компилятор C++ производит для класса C+

• Программисту, пишущему клиентские части может понадобиться знать этот бинарный формат

• Инструменты, такие как Visual Basic могут скрыть детали от программиста, пишущего клиентскую часть - IUnknown, Фундаментальный интерфейс

• Каждый COM объект должен поддерживать IUnknown

• Метод Querylnterface позволяет клиенту спросить указатель на другой интерфейс

• Querylnterface помогает решить проблемы версий

• Новые версии программного обеспечения с дополнительными характеристиками могут преподнести проблемы

• Раскрытие новых характеристик требует добавление нового интерфейса

• Querylnterface позволяет Вам начать использовать новые характеристики плавно

• Изменение характеристик требует добавление нового интерфейса

• Querylnterface может быть самым важным элементом в COM

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


Рис. 2.2. На что похож интерфейс в объекте


Рис. 2.3. Использование IUnknown:: QueryInterface.

• Подсчет Reference выполнен с помощью IUnknown методов AddRef и Release

• Подсчет Reference контролирует время жизни объекта

- Классы

• Каждый COM объект является примером класса, и каждому классу может быть назначен идентификатор класса

• Класс определяет выполнение группы интерфейсов

- Сервисы для COM Объектов

COM объект выполнен на сервере (в процессе, локально или удаленно)

• Клиенту необходимо знать какой тип сервера, на котором объект выполнен

- COM и Многопоточность

• Многопоточный процесс содержит несколько видимых одновременных потоков выполнения

• В начале COM поддерживал многопоточность, используя раздельную модель


Рис. 2.4 : Три типа серверов

• Сейчас COM также поддерживает три потока

•Свободные потоки требуют большего от программиста

3. Создание COM объектов

• Создание COM Объектов

-Библиотека COM

• Библиотека COM обеспечивает основные сервисы, которые необходимы объектам и клиентам

• Библиотека COM использует системную регистрацию, чтобы установить необходимый сервер для индивидуального класса

• Объект, созданный с использованием только COM библиотеки, является неинициализированным экземпляром класса

• Если необходимо, клиент может явно инициализировать новый экземпляр объекта

-Создание Единственного объекта

• Клиент может вызвать CoCreateInstance, чтобы создать новый экземпляр объекта

• Клиент определяет CLSID, IID, и тип сервера, который он хочет, чтобы библиотека COM запустила


Рис. 2.5. Создание объекта с CoCreateInstance

• DCOM позволяет создание удаленных объектов

• Механизм COM контролирует, какие клиенты могут начать какие сервисы

-Создание множественных объектов одного класса : Производящий класс

• Производящий класс может создать множественные объекты для одного класса

• CoCreateInstance использует производящий класс, который скрыт от клиента

• Каждый производящий класс поддерживает интерфейс IClassFactory

• IClassFactory2 интерфейс добавляет методы, которые поддерживают лицензирование

• Клиент вызывает CoGetClassObject, чтобы получить указатель на производящий класс

• Клиент может использовать IClassPactory::CreateInstance чтобы создать новый экземпляр объекта

- Эмуляция

• Эмуляция позволяет одному классу играть роль другого

• Эмуляция также позволяет создание генетических компонент

  • Инициализация COM объектов


Рис. 2.6. Создание объекта с помощью производства класса

• Первый указатель интерфейса, который запрашивает клиент, это часто интерфейс, используемый, чтобы запросить инициализацию

Повторное использование объектов

• Один COM объект не может использовать другой код через интерфейс

• COM обеспечивает повторное использование или содержанием или объединением

• В обоих механизмах «внешний» объект повторно использует «внутренний» объект

  • Содержание

• С содержанием внешний объект, проще, клиент внутреннего объекта

• Содержание – просто часто используемое

  • Объединение

• Хотя это просто, содержание не всегда является наиболее эффективным решением

• С объединением, внешний объект представляет интерфейсы внутреннего объекта как свои собственные

• Так как объединение требует специальную поддержку от внутреннего объекта, не все объекты могут быть объединены


Рис. 2.7. Повторное использование объектов через содержание


Рис. 2.8. Повторное использование объекта путем объединения

• Специальная поддержка необходима, чтобы гарантировать IUnknown методы работают так как ожидалось

• Внешний объект передает внутреннему объекту указатель на интерфейс IUnknown

Важность COM

• Пока COM сама по себе проста, она позволяет создание мощного, эффективного программного обеспечения

Новые понятия и термины:

  • GUID (Globally Unique Identifier) глобальный уникальный идентификатор

  • IID (interface identifier) идентификатор интерфейса

Контрольные вопросы:

1. Модель компонентных объектов

2.Интерфейсы в COM: vtable IUnknown интерфейс

3. Создание COM. Клиент/серверная модель COM

Литература:

1.David Chappell “Understanding Active X and OLE”.Microsoft Press, 1996

Тема 3. Пакование и информация типов

План:

1. Что такое пакование

2. Информация типов

1. Что такое пакование

На что действительно указывает указатель интерфейса

• На что указывает указатель интерфейса клиента зависит от того, какой тип сервера, на котором объект выполнен

• Для объекта на внутренне процессном сервере, указатель клиента указывает прямо на интерфейс объекта

• Для объекта на локальном сервере, указатель клиента указывает на объект proxy

• Proxy пакует параметры метода для пересылки

• Stub на локальном сервере распаковывает параметры и вызывает метод в объекте

• Объект на удаленном сервере также полагается на proxy и stub, но использует вызов удаленной процедуры (RPC) для коммуникации

• пакование (Marshaling) и распакование (Unmarshaling)

• Параметры, посылаемые между процессами и машинами, должны быть запакованы для отправления и потом распакованы, когда они прибудут

• Эта пакование и распакование называется marshaling и unmarshaling


Рис. 3.1. Доступ к COM объекту во внутрипроцессном сервере


Рис. 3.2. Доступ к COM на локальном сервере


Рис. 3.3. Доступ к COM объекту на удаленной машине.

• Proxy и stub представляет marshaling и unmarshaling

- Создание Proxy и Stub

• Инструмент, называемый компилятор MIDL может быть использован, чтобы создавать proxy и stub для интерфейса определенного в IDL

-Заказное Marshaling

Разработчики программного обеспечения могут заменить COM стандарты marshaling своим собственным заказным marshaling

• Заказное marshaling может привести к ускорению работы кода

- Связывание Marshalers динамично: Замедление связывания

• Proxy и Stub иногда являются не самым лучшим способом делать marshaling

• Альтернатива, создающая код marshaling динамично, позволяет замедлить соединение

• Замедление соединения позволяет клиенту вызвать методы в интерфейсы, открытые во время выполнения

2. Информация типов

• IDL определяет точно документ интерфейсов объектов

• Proxy и stub для интерфейсов объекта могут быть произведены с определениями IDL

• Тип информации созданные из определений IDL могут быть использованы, чтобы сгенерировать код marshaling динамически

• Выполняемый клиент может иметь доступ к информации типа объекта, который описывает его интерфейс

• Объект может сохранить свой тип информации в библиотеке типов, сгенерированной компилятором MIDL

-Описание IDL

• Пример IDL содержит два определения интерфейса и информацию,

необходимую, чтобы произвести библиотеку типов


Рис. 3.4. Компилятор MIDL может генерировать библиотеки типов, также как и proxy и stub

Пример Marshaling и

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5231
Авторов
на СтудИзбе
425
Средний доход
с одного платного файла
Обучение Подробнее