Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные определения. Бинарный стандарт обеспечивает средства, с помощью которых объекты и компоненты (в различных средах) могут взаимодействовать между собой

СТАНДАРТ БИНАРНОГО ИНТЕРФЕЙСА COM

Бинарный стандарт обеспечивает средства, с помощью которых объекты и компоненты (в различных средах) могут взаимодействовать между собой.

COM является бинарным стандартом по следующим причинам:

1. COM позволяет создавать бинарные компоненты, которые могут быть использованы как локально, так в распределенном сетевом окружении;

2. При описании CoClass каждого COM-объекта используется уникальный бинарный идентификатор CLSID, который может принадлежать только данному COM-объекту;

3. Использование IDL не обязательно для описания интерфейсов (в отличие от CORBA).

Очень важный момент при описании бинарного стандарта – то что он позволяет повторно использовать компоненты, не переписывая их кода (так называемое свойство COM-объекта – агрегация).

Написанные программные компоненты будут соединяться вместе, но при этом их внутренняя реализация ничем не ограничена. Также наличие бинарного стандарта полагает, что ЛЮБАЯ реализация модели COM 100% совместима с другими моделями COM (это является необходимым условием того, чтобы модель была бинарна).

В бинарный стандарт входят:

1. Клиент поддерживает указатель на интерфейс, который в свою очередь является указателем на указатель массива указателей на реализации методов;

2. На данной платформе реализация данного метода конкретного интерфейса имеет фиксированное соглашение о вызове.

3. К примеру, в Win32 используется стандартное соглашение о вызове (обозначается __stdcall), которое является гибридом C- и Pascal соглашений. Аргументы засылаются в стек, справа налево, но очищает стек сама вызываемая функция. Имена функций, следующих стандартному соглашению, предваряются символом _, а заканчиваются суффиксом @, за которым следует количество байт, передаваемых функции.

4. Все строки, передаваемые через все интерфейсы COM-объектов, обязаны быть в формате Unicode.

При создании COM-объектов на C++ использование MIDL является стандартной практикой. Некоторые среды программирования (Delphi, VB) обходятся без MIDL. Delphi имеет свой, Паскале-подобный синтаксис, а в VB любой класс априори является COM-объектом и дополнительное описание не требуется. MIDL является развитием OSF DCE IDL и имеет обратную совместимость с ним.

Как видно из примера, MIDL-описание очень похоже на C++. Главные отличия MIDL от C++ в том, что MIDL позволяет задать только описание интерфейса, и в том, что MIDL содержит дополнительные атрибуты, помещаемые в квадратные скобки. Самым главным атрибутом интерфейса является uuid. Он задает IID интерфейса.

Ниже приведен пример описания интерфейса на MIDL.

[

uuid(F3792A83-69C9-11D2-AC8C-525400DDA17A),

helpstring("Этот интерфейс определяет методы работы со стеком.")

]

interface IStack: IUnknown

{

HRESULT Push([in] VARIANT Val);

HRESULT Pop([out, retval] VARIANT *pVal);

}

Основные функции idl:

· Связь с языком;

· Двоичный интерфейс приложения;

· Сетевой интерфейс.

<== предыдущая лекция | следующая лекция ==>
Возврат информации об ошибках | Интерфейс IUnknown
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 1038; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.