Реферат: Разработка приложений в рамках COM

 TOC o «1-3»

1.       Введение… PAGEREF_Toc440979042 h 3

2.       ОбзорCOM-технологии… PAGEREF_Toc440979043 h 3

2.1.    СоставCOM-объекта… PAGEREF_Toc440979044 h 4

2.2.    Интерфейсы… PAGEREF_Toc440979045 h 4

2.3.    СвойстваCOM-объектов… PAGEREF_Toc440979046 h 6

2.4.    COM-серверы… PAGEREF_Toc440979047 h 7

2.5.    Механизммаршаллинга… PAGEREF_Toc440979048 h 7

2.6.    Фабрикиклассов… PAGEREF_Toc440979049 h 8

2.7.    Библиотекитипов… PAGEREF_Toc440979050 h 9

2.8.    Диспетчерскийинтерфейс… PAGEREF_Toc440979051 h 10

2.9.    Привязкаидентификаторов… PAGEREF_Toc440979052 h 11

2.10. Пользовательские интерфейсы… PAGEREF_Toc440979053 h 11

2.11. Двойные интерфейсы… PAGEREF_Toc440979054 h 12

3.       РасширенияCOM… PAGEREF_Toc440979055 h 12

3.1.    OLE/Activedocument… PAGEREF_Toc440979056 h 13

3.2.    Automation… PAGEREF_Toc440979057 h 13

3.3.    ActiveXcontrol… PAGEREF_Toc440979058 h 14

3.4.    Межпроцессныевизуальные объекты… PAGEREF_Toc440979059 h 14

3.5.    OPC… PAGEREF_Toc440979060 h 14

4.       Средстваразработки COM-приложений… PAGEREF_Toc440979061 h 15


1.<span Times New Roman"">  

В данной работе кратко рассмотрена технология COM, которая в настоящеевремя широко применяется при разработке программного обеспечения, интеграциипрограммных продуктов в единые информационные системы. Целью разработкиCOM-технологии являлось стремление к интеграции программного обеспечения черезстандартизацию механизмов взаимодействия программных модулей между собой. Наоснове данной технологии, которая является масштабируемой, разработано огромноечисло технологий, которые стали стандартами в разнообразных сферах примененияинформационных технологий – от управления технологическими процессами впромышленности до домашних персональных компьютеров. Массовое применение COMотчасти связано с мощью ее разработчика, фирмы Microsoft. С этим приходитсясчитаться, и каждый программный продукт, выпущенный под платформу Windows,  для достижения коммерческого успеха обязансоответствовать инновациям Microsoft.

2.<span Times New Roman"">  

Технология COM (ComponentObject Technology) – объектно-ориентированная программная спецификация,предложенная Microsoft. COM предназначена для повышения надежности взаимодействия программных продуктов между собой.Данная технология не определяет структуру программного продукта, языкпрограммирования и прочие детали реализации. COM является стандартом, которыйрегламентирует модель программного объекта, соответствующий требованиямCOM-технологии. Программный объект, созданный согласно спецификации COMназывается COM-объектом. Даннаятехнология определяет механизм взаимодействия COM-объектов между собой. COMотносится к так называемым двоичным стандартам, т.к. прилагается коттранслированному в двоичный код программному объекту. Взаимодействие COM-объектов обеспечивается наборомпредопределенных подпрограмм, называемыми интерфейсами, доступ к которымобеспечивается через уникальные идентификаторы интерфейсов GUID (Global Unique Interface Identifyer), уникальность которыхгарантирует операционная система. Такой механизм схож с использованиемуказателей при доступе к объектам в объектно-ориентированных языкахпрограммирования, что дает возможность прозрачного управления объектами, т.к.доступ к ним обеспечивается через указатели. COM-технология расширяет этотмеханизм, перенося применение указателей (в виде GUID) для доступа к объектамна уровень операционной системы. Таким образом, COM-объекты могут бытьпрозрачно друг для друга модифицироваться, т.к. доступ к объектамобеспечивается через GUID. COM технология включает в себя также библиотеку, вкоторой содержится набор стандартных интерфейсов, которые определяют ядрофункциональности COM и небольшой набор API функций, разработанных для созданияCOM-объектов и управления ими.

Архитектура COM является расширяемой, и на ней базируются другиетехнологии Microsoft, такие как OLE иActiveX. Эти технологии в настоящеевремя являются расширениями операционной системы, и определяют свои собственныеправила работы и предлагают свои библиотеки для создания объектов и дляуправления объектами на основе данных технологий. Используя COM как основу,разработчики программного обеспечения получают возможность создавать своисобственные расширения таким образом, что программные объекты созданные, поправилам COM-технологии могут работать с другими COM-объектами черезунифицированный механизм взаимодействия, который предлагает COM.

COM использует такое понятие как «класс», которое по смыслу означает тоже самое, что и в объектно-ориентированных средствах разработки. COM-объектявляется объектом COM-класса (COMclass). COM-классы, для различия с классами в объектно-ориентированных языках,с помощью которых может создаваться приложение, обычно называются соклассами(CoClass). Далее в тексте будет использоваться терминология, исходящая изобъектно-ориентированного программирования.

2.1.<span Times New Roman"">       

В COM-технологии различаются следующие строительные блоки, используемыедля создания объектов:

·<span Times New Roman"">        

Interface(COM-интерфейс) -  множество прототиповфункций (методов), чисто определенных. Термин «чисто определенный метод» или «абстрактныйметод» исходит теории объектно-ориентированного анализа, и означает, что вопределении класса отсутствует реализация метода, а присутствует только егоопределение. От такого класса нельзя создавать объекты. Его предназначение –описать фундаментальные общности для всех производных классов;

·<span Times New Roman"">        

COM object(COM-объект) – объект класса CoClass, который содержит реализацию COMинтерфейса;

·<span Times New Roman"">        

COM/ActiveXserver (COM сервер или ActiveX сервер)– модуль, такой как EXE, DLL или OCX,который содержит машинный код COM или ActiveX объектов;

·<span Times New Roman"">        

Classfactory (фабрика классов)– объект, который может создавать COM-объектыиз  CoClass;

·<span Times New Roman"">        

Typelibrary (библиотека типов) – файл, содержащий информацию о типах данных,которые использует COM/ActiveX сервер.2.2.<span Times New Roman"">        Интерфейсы

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

<img src="/cache/referats/2032/image001.gif" v:shapes="_x0000_s1026">

COM определяет следующие ключевые аспекты, связанныес COM-интерфейсами:

·<span Times New Roman"">        

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

·<span Times New Roman"">        

Интерфейсподчиняется двоичному стандарту. Так как все методы интерфейса абстрактны,интерфейс представлен как указатель на vtable(virtual table). Каждая запись в vtable представляет собой ссылку насоответствующий метод класса, который содержит реализацию интерфейса.Определение интерфейса как указателя устанавливает протокол для доступа кCOM-объекту, который является двоичным. Таким образом, получение доступа креализации метода интерфейса объекта представляет собой через последовательнуюпроцедуру получения указателей:

<img src="/cache/referats/2032/image002.gif" v:shapes="_x0000_s1027">

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

·<span Times New Roman"">        

Интерфейсвключает в себя определенную функциональность. Методы интерфейсасемантически связаны по функциональности и назначению. Согласно этому, методыинтерфейса обычно именуется согласно своему назначению, и имя предваряетсязаглавной I. Для примера, метод IMalloc предназначен для размещения и освобождения памяти;

·<span Times New Roman"">        

Интерфейсимеет уникальный идентификатор. Интерфейсы различаются посредствомиспользования глобальных идентификаторов GUID, которые используются для ссылкина идентификаторы конкретных интерфейсов IID(Interface Identifier). Каждыйинтерфейс имеет свой IID, и при регистрации в системе получает связанный с нимGUID. Использование GUID более совершенно, чем использование символьных имен,т.к. гарантирует отсутствие конфликтов имен при обновлении программныхпродуктов (выхода новых версий) и при использовании программного обеспечения отразличных производителей;

·<span Times New Roman"">        

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

·<span Times New Roman"">        

Интерфейсынаследуют функциональность от одного базового предка.  Все интерфейсы прямо или косвенно являютсяпотомками интерфейса IUnknown. Этотинтерфейс обеспечивает базовую функциональность интерфейса, которая включает всебя динамический опрос объекта (dynamicquering) и управление жизненным циклом объекта (lifetime managment). Эта функциональность обеспечивается тремяметодами интерфейса IUnknown: QueryInterface,AddRef и Release. Каждый класс, который реализует интерфейс, долженреализовать эти три метода, наряду с методами, унаследованные от другогоинтерфейса, и своими собственными методами. Ниже представлено краткое описаниефункционального назначения упомянутых методов:

<span Times New Roman",«serif»">-<span Times New Roman"">         

QueryInetrfaceобеспечивает опрос объекта и доступ к указателю на интерфейс. QueryInerfaceявляется первой записью в vtable, и предлагает эффективный путь для определениявозможностей объекта, в простейшем случае через этот метод при установлениисвязи обеспечивается передача указателя на интерфейс IUnknown тому объекту,который пытается получить доступ к данному объекту. Данный метод также делаетвозможным обновление COM объекта без потерь на обновление остальных зависимыхобъектов, т.к. объект может быть динамически опрошен клиентами через указательна IUnknown. Это функция носит название dynamic quering;

<span Times New Roman",«serif»">-<span Times New Roman"">         

AddRefи Release находятся на втором итретьем местах в vtable. Это простые счетные функции, которые предоставляютсядля управления временем жизни объекта. Пока внутренний счетчик объекта,отражающий количества раз вызова AddRef и Release больше нуля (вызов AddRefможет увеличивать его значение), объект остается в памяти. Как только значениесчетчика достигает нуля (вызов Release может уменьшать его значение),реализация интерфейса может безопасно удалить все зависимые нижележащиеобъекты. Это функция носит название lifetime managment;2.3.<span Times New Roman"">        Свойства COM-объектов

COM-объект – это объект CoClass, который является классом, реализующимодин или более интерфейсов. COM-объект предоставляет функции, которые доступнычерез указатель на один из его интерфейсов. Всвязи с этим, COM-объект обладаетследующими особенностями:

·<span Times New Roman"">          

·<span Times New Roman"">          

2.4.<span Times New Roman"">       

           

            Объект COM-класса должен иметь всвоем составе фабрику классов, и идентификатор класса CLSID (Class Identifier),так чтобы COM-объект мог быть создан на основе существующего модуля.

            COM-сервер – это приложение, илибиблиотека, предоставляющее определенный набор сервисных функций для клиентскихприложений или библиотек.

            COM-сервер состоит из COM-объектов.Например, COM-сервер, который включает в себя код элементов управления ActiveX(ActiveX control)– является ActiveX-сервером. Для разработчика имеется большоечисло библиотек, которые можно использовать для создания COM-объектов. Вкачестве примера можно привести библиотеку Microsoft Active Template Library,предоставляющую набор шаблонов, на основе которых можно создавать своисобственные программные продукты, построенные по COM-технологии. Например,шаблон для COM-сервера включает в себя код для основных функций, которые долженобеспечивать COM-сервер: регистрация сервера в системе, загрузка/выгрузкасервера, создание объектов, управления фабриками классов, обеспечение выдачиинформации о сервере, включая: тип сервера, help-файл, имя сервера, библиотекатипов и т.д.

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

·<span Times New Roman"">        

In-processserver (внутренний сервер) – программный DLL модуль, работающий в рабочемпространстве памяти клиентского приложения:

<img src="/cache/referats/2032/image004.jpg" v:shapes="_x0000_s1028">


·<span Times New Roman"">        

Localserver (локальный сервер) – программный EXE модуль, работающий в отдельномадресном пространстве;

·<span Times New Roman"">        

Remoteserver (удаленный сервер) – программный EXE модуль, работающий на удаленноймашине:2.5.<span Times New Roman"">        Механизм маршаллинга

           Разница между внутренним и удаленнымсерверами в том, какой тип межпроцессной связи используется. В данном случаесуществует необходимость использования посредников, которые обеспечиваютпередачу параметров и вызов функций. Такой механизм называется маршаллингом (marshalling). Т.к. вслучае, когда клиент и сервер находятся в разных адресных пространствах, доступк ресурсам не может быть осуществлен непосредственно через указатели. Поэтомупосредники со стороны клиента (proxy) осуществляют упаковку аргументов в пакеты маршаллинга (marshallingpackets), и обеспечивают  удаленный вызовпроцедур (Remote Procedure Call). Посредник со стороны сервера (stub) реализуютраспаковку параметров, и помещение их в стек. Далее осуществляется вызовнепосредственно реализации метода. По сути, сервер создает клиентский вызовпроцедуры в своем собственном адресном пространстве.

<img src="/cache/referats/2032/image005.gif" v:shapes="_x0000_s1029">


            Посредники используют COM-средства,для осуществления взаимодействия в разных процессах. Для взаимодействияобъектов, находящихся на разных машинах, используются средства расширения COM –распределенная COM (Distributed COM или DCOM). COM предлагает стандартныймеханизм маршаллинга – интерфейс диспетчеризации (Dispatch Interface).

2.6.<span Times New Roman"">       

            Фабрики или производители классов(class factories)  — специальный типCOM-объектов, используемый для создания и регистрации COM-объектов. Производителиклассов реализуют стандартный механизм создания объектов COM-классов. Классыбез идентификаторов класса (CLSID) и фабрики классов могут быть созданыпосредством вызова конструктора. Использование фабрики классов для созданияобъектов означает, что для клиентского приложения, которому необходимо создатьобъект класса, не нужно знать об этом классе ничего, кроме его идентификатораCLSID. Фабрика классов возьмет вызов конструктора на себя, включая передачуаргументов в конструктор и остальные специфичные действия. Класс фабрикиклассов может быть объединен со многими COM-классами,  для каждого из которых могут создаватьсяобъекты. При создании же  объекта фабрикиклассов, в конструктор передается идентификатор CLSID класса, для созданияобъектов которого предназначается фабрика. Этот идентификатор определяет,объекты какого класса могут быть созданы с помощью данной фабрики классов.Таким образом, каждый экземпляр фабрики классов в системе может бытьиспользован для создания объектов только одного определенного класса.

            Создание объекта класса производитсяпосредством следующих действий:

·<span Times New Roman"">        

  ищет в системном реестрезарегистрированный  класс с данным CLSID,определяет путь к серверу, загружает сервер и выдает указатель на интерфейспроизводителя классов (обычно IClassFactory);

·<span Times New Roman"">        

            Альтернативойрассмотренному методу может служить вызов глобальной API-функцииCoCreateInstance, которая выполняет перечисленный выше действия и создаетобъект класса с идентификатором CLSID, но таким образом можно создать толькоодин объект данного класса, т.к. функция не возвращает указатель на интерфейспроизводителя классов.

2.7.<span Times New Roman"">       

            Библиотека типов(type library) предоставляет информацию об используемых типах объектов иинтерфейсах, которые предоставляются ActiveX-серевером. Библиотека типов посмыслу аналогична, например, заголовочному файлу (header) для разработок наязыке C и любому другому модулю, содержащему информацию об используемых типахданных и объектах. Большинство информации подобного рода может быть записано вбиблиотеку типов. Получить информацию из библиотеки типов можно путем опросазапущенного объекта или  же посредствомзагрузки непосредственно библиотеки типов. После создания библиотеки типов, кней обеспечивается доступ через специальный тип интерфейсов: ITypeLib, ITypeInfoи ITypeComp. Интерфейс ITypeLib обеспечивает доступ к информации о типах вбиблиотеке типов, а также к описаниям конкретных объектов, которые, в своюочередь, могут быть получены  черезинтерфейс ITypeInfo.

            Библиотека типовсодержит информацию о том, какой интерфейс, в каком COM-объекте содержится,количество и тип методов интерфейсов и их параметров. Эти описания включают всебя уникальные идентификаторы классов (CLSID) и их интерфейсов (IID), черезкоторые осуществляется корректный доступ к объектам. В библиотеке типов такжеможет содержаться следующая информация:

·<span Times New Roman"">        

·<span Times New Roman"">        

·<span Times New Roman"">        

·<span Times New Roman"">        

            Использованиебиблиотеки типов очень важно для объектов, которые предназначены дляраспространения и последующего использования многими пользователями. Такжесуществует еще ряд причин использования библиотек типов:

·<span Times New Roman"">            

·<span Times New Roman"">            

  являются типизированными COM-объектами, т.к.предоставляют информацию  об используемыхтипах (из библиотеки типов);

·<span Times New Roman"">            

·<span Times New Roman"">            

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

·<span Times New Roman"">            

2.8.<span Times New Roman"">        Диспетчерский интерфейс

Диспетчерский интерфейс (dispatch interface) – стандартная специальнаяреализация интерфейса IDispatch, которую предлагает COM. Данная реализацияобеспечивает выполнение процедур позднегосвязывания (late binding) и маршаллинга. Диспетчерский интерфейс хранит внутри себя таблицу диспетчерскихидентификаторов (dispID), каждый из которых является уникальным идентификаторомчлена интерфейса, и таблица, по сути, реализует отображение соответствующегоdispID на имя каждого члена интерфейса. Клиент, желающий получить доступ к ресурсу сервера (к методу или ксвойству), должен знать dispID для соответствующего ресурса. Такую информациюможно получить через вызов метода интерфейса IDispatch, который называетсяGetIDsOfNames, и который является первой записью в vtable для интерфейсаIDispatch. Таким образом, клиент получает информацию типах данных, используемыхсервером,  и получает таблицудиспетчерских идентификаторов, с отображением имени каждого ресурса сервера насоответствующий dispID. Данная операция и со стороны клиента, и со сторонысервера, при использовании стандартной реализации интерфейса IDispatchреализуется автоматически. Эта процедура называется поздним связыванием, т.к. осуществляется на этапе выполненияпрограммы, а не на этапе компиляции. Имея для каждого имени ресурса серверасоответствующий dispID, клиент может осуществить обращение к нему, используяметод интерфейса dispID, который именуется Invoke. Метод Invoke имеетсигнатуру, допускающую вызов с любым количеством параметров, чем обеспечиваетсяего универсальность. Реализация Invoke распаковывает параметры и осуществляетвызов соответствующего метода или свойства и осуществляет контроль над выдачейисключений при выполнении метода или свойства. Когда выполнение метода илиобработка свойства заканчивается, возвращаемые значения метода или свойстваотправляются обратно клиенту. Если обращение клиента к серверу переходит черезграницы процесса или машины, то автоматически реализуются все действия поорганизации маршаллинга. Такая прозрачность является основным достоинствомиспользования интерфейса диспетчеризации.

Основным недостатком диспетчерского интерфейса является ограничение натипы данных, которые можно использовать при передаче параметров. Это следует изнеобходимости упаковки и распаковки параметров при осуществлении маршаллинга.Допускается использовать 13 стандартных типов данных. На пользовательские типыданных устанавливаются достаточно строгие ограничения. Если требования задачине укладываются в эти ограничения, разработчик имеет возможность реализовать маршаллиг, путем написаниясвоего proxy/stub кода. Еще одним недостаток проявляется в том, что прикомпиляции программы не выполняется проверка соответствия типов вызываемыхфункций, т.к. связывание диспетчерских интерфейсов осуществляется на этапевыполнения программы, и таким образом, не контролируется вызов Invoke сневерным набором аргументов, что вызывает ошибку выполнения.

2.9.<span Times New Roman"">      Привязка идентификаторов

COM предлагает возможность привязки диспетчерских интерфейсов на этапекомпиляции. Если объект описан в библиотеке типов, то dispID может бытьпрочитан для каждого ресурса объекта, т.к. dispID является для каждого методаили свойства фиксирован, и является частью описания используемых типов данныхобъекта. Такая процедура называется привязкой идентификаторов (ID bindig).Метод GetIDsOfNames вызывается компилятором во время трансляции программы,таким образом, привязка идентификаторов является формой раннего связывания (early binding). В результате, на этапевыполнения, при первом вызове сервера клиентом, не требуется вызов процедурыпривязки интерфейсов, что ускоряет работу. Еще одним достоинством данногоподхода является проверка соответствия типов в обращениях к ресурсам сервера.

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

2.10.<span Times New Roman"">   Пользовательскиеинтерфейсы

Vtable-интерфейсы (vtableinterfaces) или пользовательскиеинтерфейсы -  определяютсяпользователем, и допускают вызывать методы интерфейса, пользуясь ссылками изvtable, при условии, если известен порядок записи ссылок на методы, число и типпередаваемых аргументов. Первые три записи в vtable соответствуют трем методаминтерфейса IUnkown, за которыми следуют ссылки на остальные поддерживаемыеинтерфейсы. Если объект не реализует диспетчерский интерфейс, то следом заIUnkown непосредственно следуют ссылки на методы пользовательских интерфейсов,то есть, становится возможно обращение к методам и свойствам объектовнепосредственно через ссылки из vtable.

В случае если сервер имеет библиотеку типов и реализует диспетчерскийинтерфейс, то клиент может получить информацию из библиотеки типов, безосуществления вызова функций через привязки. Достаточно получить идентификаторыdispID диспетчерского интерфейса, и осуществить привязку непосредственно кvtable. Таким образом, можно осуществить более быстрый доступ к ресурсамобъекта, осуществляя прямой вызов через ссылки в vtable, не используя диспетчерский интерфейс. Код непосредственнойпривязки к vtable может быть автоматически сгенерирован на этапе компиляции.Разумеется, такой метод вызова функций гораздо быстрее, чем методы привязкиидентификаторов (т.к. вызов осуществляется через Invoke, что вызывает процедурыупаковки/распаковки параметров) и позднего связывания (т.к. осуществляетсяполный цикл работы с диспетчерским интерфейсом).

2.11.<span Times New Roman"">  

Несмотря на то, что COM предоставляет возможность обращения к ресурсамсерверов используя vtable-интерфейсы, что повышает скорость взаимодействияклиента и сервера, некоторые клиенты могут быть разработаны таким образом, чтообращаются к объектам только через интерфейс диспетчеризации. Это могут быть,например, интерпретируемые макроязыки, которые включают в себя средства дляработы с COM-объектами, и в которых не реализованы возможности для привязки кvtable. Таким образом, COM предлагает то, что называется двойственным, илидвойным интерфейсом (dual interface). Двойные интерфейсы предлагают два путидля доступа к ресурсам сервера: через диспетчерский интерфейс и черезvtable-интерфейс. Двойной интерфейс определяется как наследник IDispatch.

Преимущества использования двойных интерфейсов:

·<span Times New Roman"">        

·<span Times New Roman"">        

·<span Times New Roman"">        

·<span Times New Roman"">        

·<span Times New Roman"">        

Существуетнабор ограничений по использованию двойных интерфейсов. Они в основном связаныс типами данных, т.к. двойной интерфейс является наследником интерфейсаIDispatch. Однако, существует путь для частичного избежания таких ограничений,определяя не двойной интерфейс, а два отдельных, один из которых –диспетчерский, другой — пользовательский (без ограничений на тип данных). Такимобразом, можно осуществить доступ к ресурсам сервера как через диспетчерский,так и через vtabl-интерфейс.

3.<span Times New Roman"">   Расширения COM

                        Однимиз расширением технологии COM является OLE, представляющая собой библиотекусобственных интерфейсов, типов данных и подпрограмм, предназначенных дляобеспечения функциональности OLE. Каждая функция именуется с префиксом IOle.

                        Ещеодним расширением COM является не так давно созданная технология ActiveX.Основные ответвления ActiveX носят названия ActiveX Documents (документыActiveX) и элементы управления ActiveX (ActiveX controls). ActiveX «моложе»OLE, и была разработана как COM-расширение, оптимизированное по скорости и поразмеру. Однако, OLE с появлением ActiveX уже была неплохо развита, и сейчасразличия между этими двумя технологиями начинают уменьшаться, а ихфункциональности все больше перекрываться.

3.1.<span Times New Roman"">       

Документы OLE (OLE/Active documents) – один из набора сервисов, которыепредлагает технология OLE. Объекты OLE documents имеют все свойства OLE посвязи и внедрению данных, визуального редактирования, поддержки drag-and-drop,активизации по месту (in-place-activation).Используя OLE document можно определить любой количество интерфейсов, черезкоторые обеспечивается стандартное поведения объекта, такое как визуальноередактирования и drag-and-drop. Посредством реализации этих интерфейсов,объекты OLE documents могут быть свободно объединены в единую системувзаимодействующих объектов с разными форматами данных, таких, как звуковыефрагменты, текстовые документы и растровые изображения.

Объект OLE documents может быть реализован как внутренний и внешнийCOM-сервер. Такой объект состоит из двух частей: визуальной (presentationdata), предназначенной для отображения визуальной части объекта и из внутреннейчасти (native data), используемой для редактирования объекта. Объекты OLEdocuments могут быть контейнерами документов (document container) и серверамидокументов (document server). Сервер документов обеспечивает функциональностьобъектов OLE documents. В среде контейнера документов может быть активизированлюбой сервер документов.

3.2.<span Times New Roman"">       

Технология автоматизации (automation) предлагает возможностьпрограммного управления одного приложения другим. В данной технологииразличаются две составные компоненты:

·<span Times New Roman"">        

·<span Times New Roman"">        

Объекты автоматизации могут быть реализованы как внутренние, внешние иудаленные сервера. Технология автоматизации характеризуется двумя положениями:

·<span Times New Roman"">        

·<span Times New Roman"">        

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

3.3.<span Times New Roman"">       

Технология ActiveX расширяет COM и OLE новыми функциями, специфичнымидля элементов управления ActiveX (ActiveX control). ActiveX control –визуальные объекты управления, реализуемые как внутренние COM-сервера, икоторые включаются в OLE-контейнеры, и работают в их среде. Элементы управленияActiveX не являются законченными приложениями, но представляют собой объект, который решаетнекоторую частную задачу и может быть встроен в различные приложения. Основнымихарактерными особенностями ActiveX controls является возможность обработкисобытий, привязки к источникам данных и поддержка лицензирования.

Элементы управления ActiveX особенно широко используются в разработкеWeb-приложений, где ActiveX controls использую

еще рефераты
Еще работы по программированию, базе данных