конспект лекцій (ТСПП). Конспект лекцій з дисципліни 07 технологія створення програмних продуктів напряму 050101 Компютерні науки
Скачать 14.87 Mb.
|
6.4. Ідентифікатори, використовувані в СОМ технологіїЗагальні поняття. СОМ (Component Object Model - компонентна модель об’єктів) – це об’єктно-орієнтована технологія, яка дозволяє одній прикладній програмі користуватися об’єктами іншої прикладної програми або бібліотеки. DCOM (Distributed Object Model – розподілена СОМ) додала можливість прозорого використання цих об’єктів на віддалених вузлах. У чистому вигляді технологія СОМ має практичне використання тільки при програмуванні. Тим не менше розуміння фундаментальних засад дозволяє уникнути проблем при використанні похідних від неї технологій. Технології на базі СОМ. Сама по собі модель СОМ реалізована у вигляді бібліотек, які завантажуються з Процесом. Компонент СОМ – це програмний код, який знаходиться в бібліотеці DLL (ОСХ) або у виконавчій програмі (типу ЕХЕ). Спочатку технологія розроблялася для підтримки складних документів, наприклад для можливості редагування таблиці Excel в документі Word. Це привело до появи технології OLE (Object Linking and Embedding – зв’язування та вміщення об’єктів), перша версія якого базувалася на DDE. Оскільки DDE не забезпечувала необхідну гнучкість, наступна версія вже базувалася на СОМ. Окрім термінів COM та OLE існують також COM+, OLE Automation та ActiveX. COM+ можна вважати як розширений варіант моделі СОМ, який вміщує різноманітні служби, які раніше були корисними доповненнями до СОМ. OLE Automation – реалізація COM, що вимагає наявність спеціального типу DISP-інтерфейсу. DISP-інтерфейс дає можливість реалізувати механізм пізнього зв’язування з об’єктами СОМ, що дає можливість використовувати їх в VB, VBA, VB Script, JAVA script та інших системах програмування. Терміном ActiveX називають все, що відноситься до OLE Automation, плюс деякі допоміжні можливості, зокрема підтримку сценаріїв та використання елементів управління ActiveX. Останні, до речі, дуже широко використовуються у різноманітних програмах із області промислової автоматизації (SCADA-, MES- системи і т.п.). Хоч наведені терміни широко вживаються, на сьогоднішній день немає чіткого визначення терміну ActiveX, тому часто з цим словом пов’язують все, що стосується OLE Automation та ActiveX. СОМ-інтерфейси. Доступ до методів об’єкту СОМ проводиться через СОМ-інтерфейси. Під СОМ-інтерфейсом (надалі інтерфейсом) можна розуміти умовний логічний канал доступу до методів об’єкта. Програма, яка користується цим об’єктом не викликає його методи (методи класу), а викликає методи інтерфейсу. Кожний інтерфейс має унікальний 128-бітний ідентифікатор, який зветься ідентифікатором інтерфейсу (IID - Interface Identifier). Кожний інтерфейс абсолютно унікальний, тобто немає двох інтерфейсів з однаковим ідентифікатором. Якщо два об’єкти підтримують інтерфейси з однаковими ідентифікаторами, вони повинні мати одні і ті самі методи інтерфейсів, які призначені для однієї й тієї ж самої дії. Це значить, що внутрішня реалізація об’єктів може бути різною, а інтерфейси та поведінка - співпадати. 6.5. Технологія DCOM. Технологія COM+Технологія DCOM Технологія DCOM (Distributed COM) - це розподілена СОМ-технологія. Вона застосовується для надання засобів доступу до СОМ-об'єктів, розташованих на інших комп'ютерах в мережі (в тому числі і мережі Internet). Операційні системи Windows NT 4 і Windows 98 мають вбудовану підтримку DCOM. Лічильники посилань Кожен СОМ-об'єкт має лічильник посилань. Даний лічильник містить число процесів, які в поточний момент часу використовують СОМ-об'єкт. Під процесом тут мається на увазі будь-який додаток або DLL, які використовують СОМ-об'єкт, тобто користувачі СОМ-об'єкту. Лічильник посилань на СОМ-об'єкт потрібен для того, щоб вивільняти процесорний час і оперативну пам'ять, займану СОМ-об'єктом, в тому випадку, коли він не використовується. Після створення і звернення до СОМ-об'єкту лічильник посилань збільшується на одиницю. Всякий раз, коли новий додаток підключається до СОМ-об'єкту - лічильник збільшується. Коли процес відключається від СОМ-об'єкту - лічильник зменшується. При досягненні лічильником нуля пам'ять, займана СОМ-об'єктом, вивільняється. OLE-об'єкти Частина даних, що використовується спільно кількома додатками, називається OLE-об'єктом. Ті програми, які можуть містити в собі OLE-об'єкти, називаються OLE-контейнерами (OLE container). Додатки, що мають можливість утримувати свої дані в OLE-контейнерах, називаються OLE-серверами (OLE server). Складові документи Документ, що включає в себе один або кілька OLE-об'єктів, називається складеним документом. Додаток, який може міститися всередині документа, називається ActiveX-документом (ActiveX document). Інші терміни, властиві технології СОМ, ми розглянемо в наступних розділах даної книги. Склад СОМ-додатки При створенні СОМ-додатку необхідно забезпечити наступне: - СОМ-інтерфейс; - СОМ-сервер; - СОМ-клієнт. Для розподілених застосувань велике значення мають питання забезпечення надійності, продуктивності, масштабованості. Технологія COM+ (стара назва Microsoft Transaction Server, MTS) входить до складу серверних операційних систем Microsoft і призначена для підтримки систем обробки транзакцій. COM+ може встановлюватися і працювати на комп'ютерах з операційними системами Windows 95/98, Windows NT, Windows XP, Windows 2000, Windows 2003. Проте необхідно відмітити, що система безпеки транзакцій не реалізована для операційних систем Windows 95/98 внаслідок об'єктивних обмежень, що накладаються цими системами. Технологія COM+ базується на можливостях COM і забезпечує підтримку розподілених застосувань на компонентній основі. Об'єкти транзакцій COM+ мають основні властивості об'єктів COM. Окрім цього, об'єкти транзакцій реалізують специфічні можливості, властиві тільки об'єктам MTS, : управління транзакціями; безпека; пулинг ресурсів; пулинг об'єктів. Для управління об'єктами транзакцій і налаштування параметрів COM+ використовується ряд додатків і утиліт. Координатор розподілених транзакцій (Distributed Transaction Coordinator, DTC) є службою, що управляє транзакціями на низькому рівні з використанням протоколу двофазної фіксації транзакцій. Адміністративний додаток MTS Explorer дозволяє настроювати параметри середовища COM+, що зберігаються в системному реєстрі; управляти пакетами і ролями COM+. Утиліти COM+ для роботи в командному рядку або batch -файле. Виконуваний файл MTX.EXE, який реалізує автоматичні транзакції, безпеку і активізацію (Just - In - Time, JIT). Окрім перерахованих засобів, для управління COM+ можна використовувати і стандартні системні засоби. Причому для виконанні будь-яких операцій необхідно мати повноваження адміністратора на цьому комп'ютері. Як працює COM+ Отже, COM+ - це сукупність програмних засобів, що забезпечують розробку, поширення і функціонування розподілених застосувань для мереж Інтернет і интранет. До її складу входять: Програмне забезпечення проміжного рівня, функціонування об'єктів транзакцій, що забезпечує, під час виконання. Утиліта MTS Explorer, що дозволяє управляти об'єктами транзакцій. Інтерфейси прикладного програмування. Засоби управління ресурсами. Стандартна програмна модель додатків, використовуючих COM+, є триланковою архітектурою розподілених застосувань, що складається з серверів, клієнтів і ПО проміжного рівня. При цьому бізнес-логіка додатка сконцентрована в об'єктах транзакцій, а ПО проміжного рівня, що управляє цими об'єктами, побудовано з використанням компонентної моделі. Розробники, використовуючі COM+ у своїх застосуваннях, створюють об'єкти бізнес-логіки, що задовольняють вимогам до об'єктів COM+; потім компілюють їх і встановлюють в середовищі COM+ за допомогою пакетів. Пакет COM+ є контейнером, що забезпечує угрупування об'єктів в цілях захисту даних, поліпшення управління ресурсами і збільшення продуктивності. Управління пакетами здійснюється за допомогою утиліти MTS Explorer. Об'єкт COM+ Оскільки технологія COM+ заснована на COM, її об'єкти повинні задовольняти основним вимогам до об'єктів COM. Окрім цього об'єкти COM+ мають ряд особливостей : об'єкт має бути реалізований у складі внутрішнього сервера (динамічна бібліотека); об'єкт повинен містити посилання на бібліотеку типів COM+; об'єкт повинен використовувати тільки стандартний механізм маршаллинга COM; об'єкт повинен імплементувати інтерфейс IobjectControl. Виходячи із загальних принципів роботи COM+, створюваний об'єкт може бути двох типів: statefull (із збереженням інформації про стан об'єкту); stateless (без збереження інформації про стан об'єкту). Вибір типу об'єкту залежить від конкретного завдання і призначення об'єкту. Подібно до будь-якого об'єкту COM, об'єкти COM+ можуть зберігати внутрішній стан при багатократному використанні одного екземпляра. При кожному використанні об'єкт зберігає поточні значення своїх властивостей. При наступному виклику об'єкт може повернути просячому клієнтові поточний стан. Такий об'єкт має тип statefull. Об'єкти цього типу дозволяють вирішувати ширший спектр завдань. Збереження стану об'єкту вимагає, щоб той залишався активним і зберігав такі цінні ресурси як, наприклад, з'єднання з базою даних. На практиці це означає не що інше, як роботу з глобальними змінними, тому що саме в них зберігається проміжний стан об'єкту. Якщо об'єкт не може зберігати свій проміжний стан, то він відноситься до типу stateless. Об'єкти цього типу ефективніші. Коли транзакція успішно завершена або перервана, усі об'єкти, залучені в транзакцію, деактивують і, відповідно, втрачають інформацію про свій стан, придбану під час транзакції. Це допомагає переконатися в ізоляції транзакції і узгодженості бази даних, а також звільняє ресурси сервера для використання іншими транзакціями. Завершення транзакції дозволяє COM+ деактивувати об'єкт і відновити ресурси. Транзакції Здатність об'єкту COM+ "жити" усередині своєї власної транзакції або бути частиною великої групи аналогічних об'єктів, які належать одній транзакції, - величезну перевагу COM+. Це дозволяє застосовувати компонент для вирішення різних завдань, таким чином, що розробники можуть використовувати код наново без модернізації логіки додатка. Транзакції COM+ гарантують, що:
Клієнти можуть використовувати прямий контроль над транзакціями за допомогою контексту об'єкту, використовуючи інтерфейс ItransactionContext. Проте існує можливість і автоматичного управління транзакціями. Атрибути транзакцій можна встановлювати трьома способами:
Завершення транзакції за умовчанням відбувається через час, вказаний в параметрі transaction timeout, який виставляється для кожного об'єкту окремо через утиліту MTS Explorer. За умовчанням цей час дорівнює 60 секундам. Після закінчення цього періоду, якщо транзакція не встигла завершитися, вона автоматично уривається. Контекст об'єкту COM+ Для кожного об'єкту транзакції сервер транзакцій автоматично створює спеціальний об'єкт, який носить назву об'єкт контексту транзакції або контекст об'єкту COM+. Функціональність контексту забезпечується інтерфейсом IobjectContext. Два методи інтерфейсу визначають спосіб виходу об'єкту з транзакції. Метод SetComplete повідомляє транзакції, що він готовий до завершення своєї роботи в транзакції. Використання методу SetAbort означає, що виконання коду об'єкту привело до виникнення обставин, що перешкоджають успішному завершенню транзакції. Після використання будь-якого з цих двох методів об'єкт завершує свою участь в транзакції. Методи EnableCommit і DisableCommit повідомляють про поточний стан об'єкту. Метод EnableCommit повідомляє, що об'єкт дозволяє завершити транзакцію, хоча його функціонування ще не завершене. Мал. 1. Роль контексту об'єкту COM+ Виклик методу DisableCommit показує, що зараз поточний стан об'єкту не дозволяє завершити транзакцію. При спробі завершити транзакцію після виклику цього методу, транзакція буде перервана. За допомогою перерахованих методів об'єкт контексту забезпечує середовище COM+ інформацією про стан об'єкту транзакції. Наприклад, розподільник ресурсів може використовувати контекст об'єкту COM+ для забезпечення сервісів на основі транзакцій. Нехай об'єкт виконується усередині транзакції, яка зарезервувала з'єднання з базою даних, використовуючи провайдер ADO. Це з'єднання автоматично організовує транзакцію. Усі зміни в базі даних, що використовують таке з'єднання, стають частиною транзакції і потім або приймаються, або відкочуються. Додатково розробники можуть використовувати декілька допоміжних методів інтерфейсу IobjectContext. Література
Лекція № 7 |