Реферат на тему:
Поняття про Component Objects Model
В останній, 6-й версії Visual Fox Pro фірма Microsoft радикально удосконалила підтримку моделі СОМ. Абревіатура СОМ розшифровується як Component Objects Model - модель об'єктних компонентів. Це стандарт Microsoft, що регламентує обмін інформацією між додатками. Вживання СОМ дозволяє абсолютно по-новому організувати додатки. Відзначимо, що освоїти методику її вживання особливої праці не складає.
В цьому розділі обговорюються основні функції СОМ і можливості їх використовування в додатках Visual FoxPro. В розділах 21 і 22 на практичних прикладах показано, як це робиться. На чолі 21 мова йде про використовування Visual FoxPro як COM-клієнт, а на чолі 22 - про створення в середовищі Visual FoxPro COM -серверу.
СОМ є стандартом, що регламентує взаємодію між об'єктами. Стандартизація розповсюджується на передачу і прийом повідомлень, що дозволяє об'єктам, побудованим різними мовними засобами, взаємодіяти один з одним таким чином, як у випадку, якщо б вони були написані на одній і тій же мові програмування.
Основна ідея стандарту СОМ полягає в тому, що будь-який СОМ-об'єкт може взаємодіяти з іншим COM-об'єктом незалежно від того, чи розроблений він в середовищі Visual Fox Pro, Visual Basic або Visual C++. Деякі СОМ-об'єкти по самій своїй природі є візуальними. До них, зокрема, відносяться всі елементи управління ActiveX, які поставляються у складі програмного продукту Visual Fox Pro. Хоча програма такого елемента управління написана на Visual FoxPro, його можна використовувати в будь-якому додатку, в якому дотримані стандарти Microsoft на включення СОМ-об’єктів.
Інші СОМ-об'єкти не мають видимих контурів. Наприклад, можна використовувати СОМ-об'єкт для вузькоспеціалізованих обчислень, що мають відношення до брокерських розрахунків. Такий об'єкт може бути розроблений групою, що спеціалізується на автоматизації саме в цій наочній області, а використовуватися всіма підрозділами компанії. Він може мати властивості і методи для збереження, прочитування і обробки інформації, але не мати засобів її візуального уявлення.
І нарешті, деякі сом-об'єкти є досить значними частинами додатку або просто повним додатком, який надає (exposes) свої функції зовнішньому світу. Такі додатки розробляються не тільки для роботи кінцевого користувача, але і для розробників, які можуть звертатися до них зсередини своїх продуктів.
Наприклад, додаток для передачі повідомлень по мережі зв'язку факсимільного зв’язку надає свої методи для використовування розробнику, який, звертаючись до них, може автоматизувати пересилку документа факсом. Додаток Microsoft Office надає засоби, які дозволяють розробнику використовувати його для дистанційного керування.
Суть моделі СОМ
Фактично перехід на СОМ-ідеологію - це перенесення концепції спеціалізації на рівень програмних продуктів.
Хорошим прикладом тому може служити додаток, обслуговуючий рахунки клієнтів. В більшості випадків принципи обслуговування рахунків не залежать від їх конкретної природи. Але проте, розробляючи додаток, який обробляє рахунки конкретного клієнта, було потрібне щось ще допрацьовувати або модифікувати в типовому додатку. Якщо вам повезе, то можна обійтися тільки модулем, який працюватиме "в паралель" з існуючим типовим додатком.
Розписати детально обробку рахунків - це робота на роки. Що ж робити? Багато хто купує типові проекти з подібними функціями, наприклад SBT, і далі перед ними відкриваються два шляхи.
- Спілкуватися з типовим додатком, записуючи дані безпосередньо в таблиці. Це значить, що потрібно відновити всі правила ведення рахунків і відстежувати їх дотримання в тій частині програми, яку доведеться розробити.
- Модифікувати куплений продукт, залишивши більшість його компонентів в первинному вигляді.
Жоден з цих шляхів легким не назвеш.
А зараз припустимо, що такий типовий продукт розроблений з урахуванням вимог моделі СОМ. В цьому випадку пакет надає безліч своїх функцій додаткам-клієнтам, які можуть з ним взаємодіяти. Тепер в додатку-клієнті потрібно розробляти тільки призначений для користувача інтерфейс і спеціалізовані функції, специфічні саме для вашого замовника, а за рештою функцій звертатися безпосередньо до типового додатку. І тепер на основі такого додатку, не змінивши в ньому ні стрічки коду, можна побудувати безліч спеціалізованих додатків.
Розподілена обробка за допомогою COM/DCOM
Оскільки СОМ-об'єкти самі по собі є додатками (або досить істотною частиною додатку), вони існують у вигляді окремих файлів на диску (.ехе або .dll). Одна з найпривабливіших особливостей СОМ в тому, що можна розмішати ці файли на одному комп'ютері мережі, викликати на іншому, а результати представляти на третьому, наприклад комп'ютері клієнта.
Зупинимося стисло на цьому моменті.
Звичайно ми маємо справу з ситуацією, коли доступна по мережі програма виконується на робочій станції клієнта. Але це не те, про що мовилося трохи вище. В даному випадку йдеться про можливість виконувати програму, існуючу у формі СОМ-об'єкту на одному комп'ютері, в пам'яті іншого комп'ютера, використовуючи ресурси його процесора, а доступ до результатів мати на третьому комп'ютері - робочій станції клієнта, звідки і поступає запит на виконання всієї цієї операції.
Це називається розподіленою моделлю COM (Distributed COM - DCOM). Уявіть перспективи, які відкриваються при цьому в плані масштабування додатку, - збільшення кількості обслуговуваних клієнтів.
Що потрібно знати для практичного використання моделі СОМ
Не так багато. Якщо ви вже освоїли роботу з об'єктами, методами, властивостями, подіями і іншими премудростями, можна відразу приступати до вивчення СОМ. Єдина різниця в тому, що вам не доведеться створювати СОМ-об'єкти самостійно. Це за вас вже зробили інші. Якщо ж ви турбуєтеся про можливі ускладнення при використанні коду, розробленого на стороні, то в цьому робота з СОМ-об'єктами ні чим не відрізняється від інших. Найскладніше - освоєння методів і властивостей вживаного СОМ-об'єкту. Якщо він добре документований, то з цим не повинне виникнути ніяких ускладнень.
Як використовувати СОМ-об'єкт
Ним можна користуватися точно так, як і з будь-яким іншим об'єктом. Для того, щоб одержати посилання на СОМ-об'єкт, потрібно використовувати функцію CreateObject (). Єдина складність - потрібно знати ім'я класу цього об'єкту. Для додатку Excel, наприклад, це буде Excel.Application, а для Word- Word.Application.
При зверненні до CreateObject () Visual FoxPro спочатку аналізує ім'я класу, об'єкт якого потрібно створити. Виконується такий аналіз в наступному порядку:
1. Базові класи Visual FoxPro.
2. Класи, визначені користувачем, які розміщені в пам'яті в порядку їх завантаження.
3. Класи в поточній програмі.
4. Класи в VCX-файлі бібліотеки, відкритою командою set classlib.
5. Класи у файлах процедур, відкритих командою set PROCEDURE.
6. Класи в послідовності виконуваних програм Visual FoxPro.
7. Реєстр OLE (якщо раніше була команда SET oleobject on).
Після того, як буде сформовано посилання на об'єкт, можна звертатися до нього точно так, як і до будь-якого створеного в програмі об'єкту класу Visual FoxPro.
Але зверніть увагу на відмінність в імені класу, об'єкт якої створюється. Звичайно використовується ім'я класу, що складається з одного слова. Для сом-об'єкту використовується ім'я класу з двох слів, перше з яких відповідає імені додатку, а друге - імені класу усередині цього додатку.
Якщо вам здастся, що все це ви вже чули, коли йшлося про OLE-автомат, ви будете недалекі від істини. Автоматизація OLE є не що інше, як частина моделі СОМ. Отже, якщо ми говоримо OLE, то маємо на увазі СОМ.
Що відбувається при зверненні до сом-об'єкту
При установці додатку, який грає роль серверу СОМ, в реєстрі Windows реєструється як сам додаток, так і всі його класи. Наприклад, подивіться в розділ реєстру Windows, що відноситься до Visual FoxPro, який також є сервером СОМ.
Можливості Visual FoxPro як COM-клієнта
Тепер розглянемо, які ж в цьому плані можливості програмного продукту Visual FoxPro.
ФУНКЦІЯ CREATEOBJECT ()
Як вже наголошувалося вище, за допомогою функції CREATEOBJECT () можна створити посилання на СОМ-об'єкт. Потрібно підкреслити, і це дуже істотно, що при зверненні до CREATEOBJECT () завжди створюється новий об'єкт.
Проведемо експеримент. Запустіть наступні команди з вікна команд:
Ох=CreateObject("Word.Application")
Оу=CreateObject("Word.Application")
А зараз викличте на екран діалогове вікно Close Program в Windows 95/98 (для цього потрібно натискувати <CtrJ+Alt+Del>). В NT те ж саме можна зробити за допомогою Task Manager. Після цього порахуйте, скільки екземплярів додатку WinWord запущено. Їх напевно виявляться не менше два (можливо, раніше у вас ще був відкритий цей редактор).
Тепер продовжимо наші ігри. Поверніться в Visual FoxPro і звільніть змінні Ох і Оу. Більш того, можна навіть закрити взагалі додаток Visual FoxPro. Знову порахуйте, скільки екземплярів додатку знаходиться в роботі. Їх виявиться знову два. Для того, щоб позбутися запушеного додатку СОМ-серверу, потрібно звернутися до його методу Quit ().
Наш простенький експеримент виявився вельми повчальним - будьте дуже уважні при створенні СОМ-об'єктів в додатку. Перевірте, чи не був аналогічний об'єкт вже створений раніше. Врахуйте, що кожний новий додаток-сервер відтягує на себе значні ресурси пам'яті, яку можна використовувати набагато ефективніше. Якщо вам знадобиться одержати посилання на раніше запушений СОМ-об'єкт деякого класу, використовуйте функцію GetObject ().
ФУНКЦІЯ GETOBJECT ( )
Функція GETOBJECT () певною мірою аналогічна за призначенням вже розглянутої функції CREATEOBJECT (). Вона приймає два параметри. Перший - ім'я файлу, який потрібно відкрити, а другий - ім'я класу, з яким передбачається працювати.
Функція GETOBJECT () застосовується в двох випадках:
- для отримання посилання на існуючий файл;