Реферат Розробка додатків у рамках COM

Страница 1 из 3 | Следующая страница

1. Запровадження............................................................................................................................................................................... 3

2. Огляд COM-технологии............................................................................................................................................. 3

2.1. Склад COM-объекта...................................................................................................................................................... 4

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

2.3. Властивості COM-объектов............................................................................................................................................... 6

2.4. COM-серверы....................................................................................................................................................................... 7

2.5. Механізм маршаллинга.............................................................................................................................................. 7

2.6. Фабрики класів............................................................................................................................................................... 8

2.7. Бібліотеки типів............................................................................................................................................................ 9

2.8. Диспетчерский інтерфейс......................................................................................................................................... 10

2.9. Прив'язка ідентифікаторів...................................................................................................................................... 11

2.10. Пользовательские інтерфейси................................................................................................................................ 11

2.11. Подвійні інтерфейси................................................................................................................................................... 12

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

3.1. OLE/Active document................................................................................................................................................... 13

3.2. Automation....................................................................................................................................................................... 13

3.3. ActiveX control............................................................................................................................................................. 14

3.4. Межпроцессные візуальні об'єкти................................................................................................................. 14

3.5. OPC........................................................................................................................................................................................ 14

4. Кошти розробки COM-приложений.................................................................................................. 15


1. Запровадження

У цьому роботі коротко розглянута технологія COM, що у час широко застосовується розробки програмного забезпечення, інтеграції програмних продуктів в єдині інформаційні системи. Метою розробки COM-технологии було прагнення інтеграції програмного забезпечення через стандартизацію механізмів взаємодії програмних модулів між собою. За підсумками даної технології, що є масштабируемой, розроблено величезну кількість технологій, котрі почали стандартами у різних сферах застосування інформаційних технологій – від керівництва технологічними процесами у промисловості до домашніх персональних комп'ютерів. Масове застосування COM почасти пов'язані з міццю її розробника, фірми Microsoft. З цією доводиться вважатися, й у програмний продукт, випущений під платформу Windows, задля досягнення комерційного успіху зобов'язаний відповідати інноваціям Microsoft.

2. Огляд COM-технологии

Технологія COM (Component Object Technology) – объектно-ориентированная програмна специфікація, запропонована Microsoft. COM варта підвищення надійності взаємодії програмних продуктів між собою. Ця технологія не визначає структуру програмного продукту, мову програмування й інші деталі реалізації. COM є стандартом, який регламентує модель програмного об'єкта, відповідний вимогам COM-технологии. Програмний об'єкт, створений відповідно до специфікації COM називається COM-объектом. Ця технологія визначає механізм взаємодії COM-объектов між собою. COM належить до так званим двоичным стандартам, т.к. додається до оттранслированному в двоїчний код програмному об'єкту. Взаємодія COM-объектов забезпечується набором визначених підпрограм, званими інтерфейсами, доступом до яким забезпечується через унікальні ідентифікатори інтерфейсів GUID (Global Unique Interface Identifyer), унікальність яких гарантує операційна система. Такий механізм схожий із використанням покажчиків при доступі до об'єктів в объектно-ориентированных мовами програмування, що дозволяє прозорого управління об'єктами, т.к. доступу до них забезпечується через покажчики. COM-технология розширює цей механізм, переносячи застосування покажчиків (як GUID) для доступу до об'єктів до рівня ОС. Отже, COM-объекты може бути прозоро друг для друга модифікуватися, т.к. доступом до об'єктах забезпечується через GUID. COM технологія включає у собі також бібліотеку, у якій міститься набір стандартних інтерфейсів, які визначають ядро функціональності COM та її невеличкої набір АПІ функцій, розроблених до створення COM-объектов і ними.

Архітектура COM є розширюваної, і ній базуються інші технології Microsoft, такі як OLE і ActiveX. Ці технології нині є розширеннями ОС, визначають свої власні правила праці та пропонують свої бібліотеки до створення об'єктів й у управління об'єктами з урахуванням даних технологій. Використовуючи COM є основою, розробники програмного забезпечення отримують унікальну можливість створювати свої власні розширення в такий спосіб, що програмні об'єкти створені, за правилами COM-технологии можуть працювати коїться з іншими COM-объектами через уніфікований механізм взаємодії, який пропонує COM.

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

2.1. Склад COM-объекта

У COM-технологии різняться такі будівельні блоки, використовувані до створення об'єктів:

·     Interface (COM-интерфейс) - безліч прототипів функцій (методів), суто певних. Термін «суто певний метод» чи «абстрактний метод» виходить теорії объектно-ориентированного аналізу, і означає, що у визначенні класу відсутня реалізація методу, а присутній його визначення. Від такої класу не можна створювати об'єкти. Її призначення – описати фундаментальні спільності всім похідних класів;

·     COM object (COM-объект) – об'єкт класу CoClass, який містить реалізацію COM інтерфейсу;

·     COM/ActiveX server (COM сервер чи ActiveX сервер)– модуль, а саме EXE, DLL чи OCX, який містить машинний код COM чи ActiveX об'єктів;

·     Class factory (фабрика класів)– об'єкт, котрі можуть створювати COM-объекты з CoClass;

·     Type library (бібліотека типів) – файл, у якому інформацію про типах даних, які COM/ActiveX сервер.

 

 

2.2. Интерфейсы

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


COM визначає такі ключові аспекти, пов'язані з COM-интерфейсами:

·     Методи інтерфейсу абстрактні (суто визначено). Інтерфейс є набір прототипів методів, чиє призначення полягає у визначенні інтерфейсу. Визначення прототипів методів включає у собі визначення числа і типів переданих значень, возвращаемого значення, і навіть очікуваного поведінки об'єкта. Як методи реалізовані, в визначення інтерфейсу не включається. Отже, реалізується поліморфізм інтерфейсу, т.к. кожен нащадок, наследующий інтерфейс, може охоплювати власну реалізацію методу;

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


З GUID система пов'язує покажчик на інтерфейс. Покажчик на інтерфейс, своєю чергою є покажчиком на vtable, якою забезпечується покажчик на таблицю покажчиків на код з реализациями методів. Безліч об'єктів одного класу у системі використовують одну загальну vtable, й у кожної такої об'єкта створюється структура із приватними даними, необхідні коректного виклику функцій.

·     Інтерфейс включає у собі певну функціональність. Методи інтерфейсу семантично пов'язані за функціональністю та призначення. Відповідно до цього, методи інтерфейсу зазвичай іменується відповідно до свого призначенню, й ім'я розпочинається головній I. Наприклад, метод IMalloc призначений розміщувати та звільнення пам'яті;

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

·     Інтерфейс неспроможна змінитися після реєстрації у системі. Кожен інтерфейс призначений до виконання певної завдання, яких і визначає, які дані надходять на обробку та які дані виводяться. Отже, по тому, як інтерфейс опубліковано у системі, і став доступний використання, вона повинна змінюватися. Будь-яка зміна в семантикою інтерфейсу веде до потреби оявления нового інтерфейсу. Проте є можливість безпечної реалізації многоинтерфейсных об'єктів з використання для доступу до найрізноманітніших версіям інтерфейсу різні IID.

·     Интерфейсы успадковують функціональність від однієї базового предка.  Усі інтерфейси безпосередньо чи опосередковано є інтерфейсу IUnknown. Цей інтерфейс забезпечує базову функціональність інтерфейсу, що включає у собі динамічний опитування об'єкта (dynamic quering) і управління життєвим циклом об'єкта (lifetime managment). Ця функціональність забезпечується трьома методами інтерфейсу IUnknown: QueryInterface, AddRef і Release. Кожен клас, який реалізує інтерфейс, повинен реалізувати ці три методу, поруч із методами, успадковані від іншого інтерфейсу, і власними власними методами. Нижче представлено стисле опис функціонального призначення згаданих методів:

-      QueryInetrface забезпечує опитування об'єкту і доступом до покажчику на інтерфейс. QueryInerface є першою записом в vtable, й уряд пропонує ефективний шлях до визначення можливостей об'єкта, в найпростішому разі через його під час встановлення зв'язку забезпечується передача покажчика на інтерфейс IUnknown тому об'єкту, що намагається одержати доступ даному об'єкту. Він також уможливлює відновлення COM об'єкта без втрат відновлення інших залежних об'єктів, т.к. об'єкт то, можливо динамічно опитано клієнтами через покажчик на IUnknown. Це функція називається dynamic quering;

-      AddRef і Release перебувають у другому й третьому місцях в vtable. Це прості лічильні функції, які надаються керувати часом життя об'єкта. Поки внутрішній лічильник об'єкта, який відбиває кількості раз виклику AddRef і Release більше нуля (виклик AddRef може збільшувати його значення), об'єкт залишається у пам'яті. Щойно значення лічильника сягає нуля (виклик Release може зменшувати його значення), реалізація інтерфейсу може безпечно видалити все залежні нижележащие об'єкти. Це функція називається lifetime managment;

2.3. Властивості COM-объектов

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

· COM-объект захищений від прямого зміни зовнішніми програмами у даних, т.к. доступом до COM-объекту можлива лише через покажчик на інтерфейс;

· COM-объект можна використовувати додатками, реалізованими на будь-яких сучасні засоби розробки додатків (алгоритмічних мовами), з кожного внутрішньої організацією докладання, головне, щоб засіб розробки дозволяло працювати з покажчиками на структури, на масиви і функції.

2.4. COM-серверы

           

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

            COM-сервер – це додаток, чи бібліотека, надає певний набір сервісних функцій для клієнтських додатків чи бібліотек.

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

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

·     In-process server (внутрішній сервер) – програмний DLL модуль, працював у робочому просторі пам'яті клієнтського докладання:

 

 

 

 

 

 

 

 


·     Local server (локальний сервер) – програмний EXE модуль, працював у окремому адресному просторі;

·     Remote server (віддалений сервер) – програмний EXE модуль, працюючий на віддаленій машині:

 

 

2.5. Механізм маршаллинга

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

 

 

 

 

 

 

 

 

 


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

2.6. Фабрики класів

            Фабрики чи виробники класів (class factories) - спеціальний тип COM-объектов, використовуваний до створення та державній реєстрації COM-объектов. Виробники класів реалізують стандартний механізм створення об'єктів COM-классов. Класи без ідентифікаторів класу (CLSID) і фабрики класів можна створити у вигляді виклику конструктора. Використання фабрики класів до створення об'єктів означає, що з клієнтського докладання, якому необхідно створити об'єкт класу, непотрібно знати про це класі нічого, крім його ідентифікатора CLSID. Фабрика класів візьме виклик конструктора він, включаючи передачу аргументів на її конструктор й інші специфічні дії. Клас фабрики класів то, можливо об'єднаний із багатьма COM-классами, кожного з яких можна створювати об'єкти. Під час створення ж об'єкта фабрики класів, в конструктор передається ідентифікатор CLSID класу, до створення об'єктів якого призначається фабрика. Цей ідентифікатор визначає, об'єкти якого класу можна створити з допомогою даної фабрики класів. Отже, кожен примірник фабрики класів у системі можна використовувати до створення об'єктів лише одну певного класу.

            Створення об'єкта класу виробляється у вигляді наступних дій:

· виклику глобальної API-функции CoGetClass, яка шукає в системному реєстрі зареєстрований клас з цим CLSID, визначає шлях до сервера, завантажує сервер видає покажчик на інтерфейс виробника класів (зазвичай IClassFactory);

· Покажчик на IСlassFactory можна використовувати для виклику методів виробника класів, наприклад: CoCreateInstance (створення об'єкта);

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

2.7. Бібліотеки типів

            Бібліотека типів (type library) надає інформацію про використовуваних типах об'єктів і інтерфейсах, які надаються ActiveX-серевером. Бібліотека типів за змістом аналогічна, наприклад, заголовочному файлу (header) для розробок мовою З будь-якому іншому модулю, який містить інформацію про використовуваних типах даних, і об'єктах. Більшість інформації такого роду то, можливо записано до бібліотеки типів. Одержати інформацію з бібліотеки типів можна шляхом опитування запущеного об'єкта або ж у вигляді завантаження безпосередньо бібліотеки типів. Після створення бібліотеки

Страница 1 из 3 | Следующая страница

Схожі реферати:

Навігація