Поняття про 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, і далі перед ними відкриваються два шляхи.
-Спілкуватися з типовим додатком, записуючи дані безпосередньо в таблиці. Це значить, що потрібно відновити всі правила ведення рахунків і відстежувати їх дотримання в тій частині програми, яку доведеться розробити.
-Модифікувати куплений продукт, залишивши більшість його компонентів в первинному вигляді.
Жоден з цих шляхів легким не назвеш.
А зараз припустимо, що такий типовий продукт розроблений з урахуванням вимог моделі СОМ. В цьому випадку пакет надає безліч своїх функцій додаткам-клієнтам, які можуть з ним взаємодіяти. Тепер в додатку-клієнті потрібно розробляти тільки призначений для користувача інтерфейс і спеціалізовані функції, специфічні саме для вашого замовника, а за рештою функцій звертатися безпосередньо до типового додатку. І тепер на основі такого додатку, не змінивши в ньому ні стрічки коду, можна побудувати безліч спеціалізованих додатків.