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

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

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

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

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

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

типа информации:

[ object, uuid(E7CDODOO-1827-llCF-

9946-444553540000)]

interface ISpellChecker : lUnknown {

import "unknown.idl";

HRESULT LookUpWord([in] OLECHAR word[31],

[out] boolean *found);

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

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

}

[ object, uuid(5FBDD020-1863-11CF-

9946-444553540000) ]

interface IThesaurus : IUnknown {

HRESULT ReturnSynonym([in] OLECHAR word[31], [out] OLECHAR synonym[31]);

}

[uuid(B253E460-1826-HCF-9946-

444553540000), version(1.0)]

library TextToolsLib {

importlib ("stdole32.tib") ;

[uuid(B2ECFAAO-1827-llCF-9946-444553540000)

coclass CoTextTools {

interface ISpellChecker;

interface IThesaurus;

}

}

Рис. 3.5. Библиотека типа и ее клиент.

• Библиотека типа имеет GUID (глобальный уникальный идентификатор)

• Класс компонентного объекта, или сокласс, содержит список всех интерфейсов, которые объект поддерживает

• Библиотека типа содержит описание сокласса и каждый интерфейс

- Доступ к библиотеке типа

• Интерфейсы ITypeLib и ITypeInfo позволяют доступ к библиотеке типа и ее элементам

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

• Доступ к библиотеке типа осуществляется через ItypeLib

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

• Используя методы в ITypeInfo, клиент может узнать о специфических элементах в библиотеке типа

- Использование информации типа

• В настоящее время библиотеки типа в основном используются с IDispatch

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

  • RPC - вызов удаленной процедуры

  • Marshaling - пакование

  • Unmarshaling - распакование

  • IDL (interface definition language) – язык описания интерфейса

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

1. Что такое marshaling?

2. Для чего используется marshaling?

3. Информация типов. Библиотека типов

Литература:

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

Тема 4. Автоматизация

План:

1.Что понимается под автоматизацией

2. Дуальный интерфейс

1.Что понимается под автоматизацией

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

• Макро язык приложения делает это, но только ограниченным способом

• Что требуется - это стандартный способ сделать любое приложение программируемым

• Обеспечение этой программируемости, использующей COM называется Автоматизацией

Точка зрения пользователя на Автоматизацию

• Автоматизация широко поддерживается сегодня

•С Автоматизацией, Вы можете записывать программы, которые автоматизируют повторные задачи

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

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

Обеспечение программируемости

•Методы в vtable сложны, чтобы вызвать их из Visual Basic


Рис. 4.1. Автоматизация создания ежемесячного сообщения.

IDispatch and Dispinterfaces

• IDispatch был первоначально определен, чтобы позволить приложениям быть программируемым из Visual Basic

• Через одиночный метод IDispatch::Invoke, клиент может вызывать любое число методов

• Dispinterface это группа методов которая может быть вызвана с использованием IDispatch: :Invoke

• Используя IDispatch, программа Visual Basic может легко вызывать методы в Dispinterface

• Программы на других языках типа C++ могут также вызывать методы, использующие IDispatch

• Большинство приложений сегодня программируемые, с

использованием IDispatch и одной или более dispinterfaces

- Клиенты и Серверы

ActiveX компоненты, действующие как серверы, были первоначально известны как серверы автоматизации

Рис. 4.2. Вызов метода в dispinterface с использованием IDispatch: :Invoke

• ActiveX компоненты, действующие как клиенты были первоначально известен как контролеры автоматизации

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

- Описывая Dispinterface

• Типы параметра, позволенные в методах dispinterface более простые, чем когда они позволены в методах интерфейса vtable

• Методы Dispinterface могут быть определены чтобы явно получить и установить свойства

• Как интерфейсы vtable, интерфейсы dispinterface могут быть определены в IDL

- Dispinterface и Marshaling

• Интерфейс Vtable может полагаться на proxy и stub для marshaling (выстраивание в определенном порядке)

• dispinterface не требует свой собственный proxy и stub

• Параметры для метода dispinterface запакованы в вариант

• Dispinterface позволяет позднее связывание, даже если никакая библиотека типов не доступна

- Пример Visual Basic

• вызов методов dispinterface из Visual Basic легкий


Рис 4.3. Приложения обычно обеспечивают программируемость путем выполнения объектов, которые поддерживают IDispatch

Sub SpellCheckO

Dim Obj As Object

Set Obj = CreateObject("Excel.Application")

Word = InputBox("Enter Word")

If Object.CheckSpelling(Word) Then

MsgBox ("Valid Word")

Else

MsgBox ("Word not found")

End If End Sub

• Visual Basic скрывает все детали

• ProgID это читаемый для людей синоним CLSID

• Документация приложения говорит программистам., какие методы приложение открывает

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

- Интерфейс IDispatch

• Методы : Invoke, GetIDsOfNames, GetTypeInfo, GetTypeInfoCount

- Поддержка множественных интерфейсов Dispinterface как одного объекта

• Как и другие интерфейсы vtable, IDispatch имеет идентификатор интерфейса (IID)

• Объект может позволить доступ к более, чем к одному dispinterface через Idispatch

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

2. Дуальный интерфейс

Двойные интерфейсы

• Методы в dispinterface проще для клиентов Visual Basic для вызова, чем клиентов С++ предпочитающих vtables

• Двойной интерфейс обеспечивает выгоды, от обоих интерфейсов dispinterfaces и vtable

• Двойной интерфейс - по существу IDISPATCH vtable, который расширен, чтобы включить прямые указатели на методы dispinterface


Рис. 4.4. Двойной интерфейс открывает свои методы и через vtable, и через IDispatch.

Interface ISpellChecker : IDispatch {

import "unknown.idl" ;

import "oaidl.idi";

[propget] HRESULT BritishSpellings([out, retval] boolean *sp) ;

[propput] HRESULT BritishSpellings([in] boolean sp) ;

HRESULT LookUpWordt[in] BSTR word, [out] boolean *found) ;

HRESULT AddToDictionary([in] BSTR word)

}

[uuid(B623E460-1837-HCF-9946-444553 540000) ,

version(1.0)]

library SpellCheckerLib {

importlib("stdole32.tlb") ;

[uuid(B623E460-1837-llCF-9946-444553540000)],

coclass CoSpellChecker {

interface ISpellChecker

}

}

Рис. 4.5. Иллюстрация удаленной автоматизации

• Все двойные интерфейсы наследуются от IDispatch

• DISPID могут быть назначены автоматически

• Обычно определяются новые интерфейсы как двойные

Удаленная автоматизация

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

• Удаленная автоматизация это не тоже самое что DCOM

• Удаленная автоматизация использует RPC между proxy и stub

• Все вызовы методов проходят через proxy и stub на серверной машине, вызывающей

менеджера автоматизации

Автоматизация сегодня

• Автоматизация сейчас означает программируемость, не просто использование IDispatch и dispinterfaces

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

  • Создание программируемых приложения позволяет другому программному обеспечению, также как и людям, использовать его сервисы. Обеспечение этой программируемости, использующей COM называется Автоматизацией

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

1.Что понимается под автоматизацией

2. Взгляды на автоматизацию: пользовательский, разработчика ПО

3.Дуальный интерфейс

Литература:

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

Тема 5. Постоянство

План:

1. Понимание постоянства

2. Структурная память для файлов

3. Контроль и постоянство объекта

1. Понимание постоянства

• Постоянные данные объекта - информация о состоянии объекта, которая сохранена между созданиями экземпляра объекта

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

•Клиент объекта обычно контролирует, когда постоянные данные объекта загружаются и сохраняются

• Структурная память это постоянный сервис, основанный на COM

•Интерфейсы IPersist* позволяют клиентам контролировать постоянство объекта

2. Структурная память для файлов

Структурная память

• Объект COM может сохранить свои постоянные данные многими способами

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

• Приложениям, создающим сложные документы, также необходимо разделять файл

• Структурная память – это важный постоянный сервис в мире COM

  • Память и потоки

• В структурной памяти, один дисковый файл становится сложным файлом, состоящим из памяти и потоков

• Структурная Память по существу создает иерархическую файловую систему внутри каждого сложного файла

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

•Потоки и только потоки байтов с не системно определенной внутренней структурой

• Каждая память и поток доступны через интерфейсы IStorage и IStream

• Владелец памяти может свободно назначать названия потокам и памяти, которые он содержит содержит

• Имя корня памяти – это тоже самое что название файла

• Названия, начинающиеся с определенных символов зарезервированы для использования другим программным обеспечением

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


Рис. 5.1. Дисковый файл , содержащий память и потоки


Рис 5.2. COM объект, использующий память и два потока

3. Контроль постоянства объекта

Контролирование постоянства объекта

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

•Клиент обычно просит объект загрузить его постоянные данные через один из интерфейсов IPersist*

• Объект может поддерживать один или более интерфейсов IPersist*

• Объект обычно не знает где найти свои постоянные данные. Это должно быть сказано его клиентом

- Интерфейсы IPersistStream и IPersistStreamInit

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

- Интерфейс IPersistStoragen

• Объект поддерживает IPersistStorage, если его постоянные данные сохранены в одном или более потоках ниже памяти


Рис. 5.3 Иллюстрация интерфейсов IPersistStream и IPersistSreamInit


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