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

Чего стоит одно только написание программ и тестирование, существенно увеличивающее стоимость и приводящее к тому же к удлинению срока подготовки приложения. Но что хуже всего, большинство его элементов, как правило, уже разработаны и протестированы.

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

Так, например, при разработке приложения для торговых агентов можно воспользоваться готовыми компонентами - системой управления документами и визуализации изображений. Если оно должно "уметь" обрабатывать электронные таблицы, можно вставить компонент электронной таблицы или компонент для построения графиков.

Кто они и на что способны?

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

На практике компоненты, как правило, представляют собой пользовательские средства управления Visual Basic (VBX) или средства управления ActiveX (ранее вместо них использовались пользовательские средства управления OLE или OCX). Их диапазон весьма широк: от низкоуровневых обращений к операционной системы или простых GUI-операций Windows (что характерно для большинства компонент VBX или ActiveX) до почти законченных приложений. Лучшие компоненты прошли всестороннее тестирование и полностью соответствуют технологии OLE компании Microsoft, которая сейчас рассматривается многими как возникающий стандарт для компонентов. Основанные на хорошо разработанном протоколе OLE компоненты ActiveX позволяют разработчикам задавать ряд свойств и атрибутов, но в сущности компоненты используются в исходном виде.

Компоненты значительно повышают производительность труда разработчика, так как облегчается компоновка приложений.

"Использование компонентов вдвое повышает показатели в пяти категориях: помимо двукратного увеличения функциональных возможностей, в два раза возрастает срок службы, во столько же увеличиваются скорость и гибкость разработки, приложением становится в два раза удобнее пользоваться и ровно вдвое сокращается число разработчиков", - утверждает Том Молдауэр, сотрудничающий с компанией Andersen Consulting.

Главный системный аналитик компании United Illuminated Эрик Ву разработал приложения для составления бюджета и принятия решений. Он работал с двумя ведущими программными средами для компонент: начинал с Visual Basic компании Microsoft, а в прошлом году освоил Delphi компании Borland International.

Ву использовал компонент компании Shoreline Consulting для добавления всплывающих меню помощи к своим приложениям.

Другой компонент обеспечил простое управление .ini-файлами Windows.

Наконец, третий компонент позволил ему встроить в свои приложения очень сложные диалоговые окна.

Исполнение обещания

В конце концов, используя компоненты, можно добиться такого уровня взаимозаменяемости и производительности, который ожидался от использования объектно-ориентированного программирования (object-oriented programming - ООР). Изначально ООР предназначалось для того, чтобы обеспечить возможность разрабатывать приложения путем процесса сборки стандартизованных частей. Однако планы, строившиеся по поводу разработки приложений путем сборки с использованием ООР, пока не удалось реализовать в больших масштабах.

Затруднение состоит в том, что разработка стандартизированных, взаимозаменяемых частей при помощи ООР очень сложна, так как процесс сборки происходит на слишком низком уровне.

Что касается компонентов, то они обеспечивают более высокий (так сказать, "крупнозернистый") уровень взаимозаменяемости, чем ООР. Они обладают законченными функциональными возможностями, позволяющими использовать один и тот же компонент в различных приложениях, не углубляясь в то, как именно он работает.

Здесь уместно воспользоваться аналогией с приготовлением пищи: повар, следуя рецепту, добавляет в кушанье воду, а не пытается смешать атомы водорода и кислорода, как предписывает объектно-ориентированная "кулинария".

Классификация компонент

Для сборки приложений из компонентов необходима среда, в которой они могут надежно взаимодействовать друг с другом и с приложением. Компания Microsoft, к примеру, предложила среду в виде контейнеров OLE, в которые разработчики могут помещать директивы, являющиеся собственно компонентами.

Совсем недавно, развивая это направление, Microsoft предложила средства управления ActiveX для сети Network OLE (теперь называемой Distributed COM), которые рассматриваются как промышленный стандарт для распределенных компонентов в среде Windows. Компании Borland, Powersoft, Oracle, Lotus Development и большинство ведущих производителей программных продуктов для Windows либо уже обеспечили, либо спешно обеспечивают свои программные продукты возможностью встраивания ActiveX в различные приложения.

Эван Квинн, менеджер по исследованиям инструментальных средств для разработки приложений компании International Data Corp., поясняет, что пакеты компонентов могут распространяться как библиотеки классов, наборы разработчика, среды Framework или независимые компоненты. Большая часть компонентов продается в виде наборов VBX или ActiveX. В противоположность библиотеке классов, в этом случае разработчик не получает исходного текста программы и, следовательно, не может разбить компонент на подклассы для создания новых пользовательских компонентов, как это можно сделать в действительной (полноценной) объектной библиотеке классов, где исходный текст является частью компонента и наследование свойств и разделение на подклассы поддерживаются объектной моделью.

По мнению Квинна, существуют три типа сред, где можно использовать компоненты: конкретная среда разработки, например Visual Basic; платформа приложений, такая как Excel или Lotus Notes; объектный стандарт, такой как OLE, OpenDoc, System Object Model или CORBA. Наиболее распространены среды разработки, причем большая часть компонентов рассчитана на Visual Basic/ActiveX.

Предостережение покупателю

На рынке компонентов действует очень много мелких производителей, которые далеко не всегда представляют разработки, прошедшие исчерпывающее тестирование и имеющие хорошую поддержку.

Квинн предполагает, что объем продаж компонентов, составлявший 100 млн. долл. в 1995 г., достигнет отметки 1 млрд. долл. к 2000 г.

Типы компонентов

Для классификации множества поступающих на рынок компонентов Эван Квинн, менеджер компании International Data Corp., выделяет пять типов:

  • микропрограммные компоненты, улучшающие взаимодействие с сетями, мониторами транзакций и базами данных;
  • логические компоненты, которые дают возможность невизуальной обработки данных, такой как редактирование изоображений или телефония;
  • вертикальные компоненты, содержащие данные и функции, связанные с определенной областью деятельности, сходные с мини-приложениями;
  • GUI-компоненты, расширяющие возможности инструментальных средств в области построения графических объектов;
  • компоненты-контейнеры, которые представляют собой основу, заполняемую директивами пользователя. Например, базовый GUI-экран в Windows представляет собой компонент-контейнер. Добавляя другие компоненты, разработчик может превратить этот простой экран в пользовательский интерфейс с широкими функциональными возможностями.