Однако некоторые утверждают, что ActiveX - это всего лишь волк в мастерски выделанной овечьей шкуре, достаточно вспомнить об отсутствии межплатформенных возможностей и весьма сомнительный уровень безопасности. Если в вашей компании стоит вопрос о добавлении к Web-узлам функций приложений или разработке интерактивных Web-страниц для Internet/intranet, то стоит "копнуть" несколько глубже и разобраться в том, что представляет собой ActiveX и где удобно использовать эту технологию.
В своем исследовании специалисты еженедельника InfoWorld воспользовались тремя различными средствами разработки для написания простого управляющего элемента ActiveX и попытались выявить сложности в применении каждого из них. Это позволило им сделать некоторые практические выводы относительно возможностей ActiveX.
Главным конкурентом ActiveX в области Web-приложений являются апплеты Java, которые сильны именно в тех позициях, в которых страдает ActiveX: межплатформенная поддержка и безопасность. Однако у Java отсутствует богатый набор готовых компонентов, который делает технологию ActiveX столь привлекательной для разработчиков.
ЧТО ЭТО ТАКОЕ?
Говоря доступным языком, ActiveX - это архитектура, которая позволяет одному программному компоненту (управляющему элементу ActiveX) взаимодействовать с другими компонентами через сеть (например, Internet). Это совершенно иной "зверь", чем Java, который представляет собой полностью новый язык программирования плюс спецификацию на виртуальный процессор (Java Virtual Machine). В основе архитектуры ActiveX лежат разработанные Microsoft стандарты Component Object Model (COM) и Distributed COM (DCOM): COM позволяет приложениям взаимодействовать друг с другом локально, а DCOM обеспечивает такое взаимодействие по сети.
Для создания управляющих элементов ActiveX разработчик может использовать ряд популярных языков программирования, соответствующих спецификации ActiveX, - Microsoft Visual C++ 5.0, Microsoft Visual Basic 5.0 и Delphi 3.0. Управляющие элементы ActiveX могут быть написаны и на Visual J++, хотя и с некоторыми ограничениями, о которых будет рассказано ниже. Управляющие элементы ActiveX - это самостоятельные части программы или автономные компоненты. Разработчики могут использовать их в других программах - даже в тех, которые созданы на других языках. Например, можно взять управляющий элемент, написанный на Visual Basic, и вставить его в программу на Visual C++.
Автономность и возможность многократного использования - наследие более ранней объектно-ориентированной модели компании Microsoft, известной под названием Object Linking and Embedding (OLE). ActiveX - это ни что иное как развитие идеи OLE. Фактически объекты ActiveX - это те же объекты OLE с дополнительными функциями, которые позволяют применять их в World Wide Web. Преобразование OLE в ActiveX - неплохая иллюстрация к искусной маркетинговой политике Microsoft: она воспользовалась технологией, разработанной уже очень давно, для того чтобы упрочить свои позиции на рынке продуктов для Internet.
Поскольку OLE уже далеко не новая технология, разработчики создали большое количество объектов OLE, которые сейчас могут использоваться в качестве управляющих элементов ActiveX. Ряд компаний-разработчиков ПО продают библиотеки готовых объектов OLE, с которыми вы можете работать при написании своих программ. Это - одно из главных достоинств ActiveX: существующие библиотеки способны помочь разработчикам создавать программы с минимальными затратами времени и усилий. Поставщиков управляющих элементов и продуктов ActiveX можно найти в специальном каталоге, публикуемом Microsoft, по адресу http://204.203.124.10/activexisv/direct.htm.
Возможность многократного использования компонентов делает ActiveX очень удобной для написания обычных клиент-серверных приложений. ActiveX позволяет применять не только библиотеки управляющих элементов, созданные сторонними компаниями, но и однократно использовать управляющие элементы собственной разработки.
Однако технология ActiveX была разработана для того, чтобы обеспечить возможность работы управляющих элементов в Web, и маркетинговая машина Microsoft делает все возможное, чтобы превратить ActiveX в стандартную технологию для создания Web-приложений. И хотя чаще всего ActiveX в настоящее время применяется для встраивания в Web-страницы элементов анимации, для корпоративных Web-узлов это оказывается не очень полезно - большинство посетителей предпочитают более простое оформление Web-узлов.
Важнее то, что ActiveX (как и апплеты Java) может привнести в Web возможности клиент-серверных приложений. Управляющие элементы ActiveX позволяют посетителям Web-узла выполнять сложные операции, получать нужную информацию из баз данных и от приложений, работающих на других серверах или даже на других Web-узлах. Именно по этой причине Microsoft утверждает, что ActiveX способна "активизировать" Web-страницы - и, до некоторой степени, это действительно замечательная идея. Представьте себе всемирную компьютерную сеть, в которой сетевые клиенты (браузеры) могут быстро загружать и запускать любую программу, хранящуюся на любом сервере (Web). Мечтать, как говорится, не вредно, однако у технологии ActiveX действительно неплохие перспективы в этой области.
МЕЖПЛАТФОРМЕННОСТЬ
Одним из главных препятствий к применению ActiveX является отсутствие межплатформенной поддержки. Если все пользователи конкретной intranet работают под Windows 95, они могут использовать управляющие элементы ActiveX, не сталкиваясь с какими-либо проблемами; посетители же Web-узлов Internet работают на самых разнообразных операционных системах. Чтобы применять управляющие элементы ActiveX на других платформах, необходимо их перекомпилировать: нельзя просто написать один управляющий элемент, который смогут применять все посетители Web-узла. К настоящему моменту управляющие элементы ActiveX могут работать только на семействе ОС Windows: Windows 95, Windows NT и Windows 3.x. Microsoft работает над поддержкой Unix и Macintosh, и до тех пор, пока это не будет сделано, ActiveX, видимо, нельзя считать технологией, полностью пригодной для Internet.
Здесь у Java безусловно имеется преимущество: главное достоинство этой технологии - ее многоплатформенность. Поскольку апплет Java выполняется на виртуальном процессоре Java, который работает над операционной системой, он никак не взаимодействует с самой ОС. Поэтому для Web-страницы достаточно написать только один Java-апплет.
Что касается поддержки браузеров, то, хотя управляющие элементы ActiveX выполняются как "родные" только на Internet Explorer компании Microsoft, существует и специальный встраиваемый модуль (plug-in) под названием ScriptActive производства компании Ncompass, который обеспечивает доступ к управляющим элементам ActiveX из Netscape Navigator.
С использованием ActiveX в Internet связана еще одна проблема - это модель безопасности. Этому вопросу посвящена отдельная статья "Модель безопасности ActiveX".
РАЗРАБОТКА ПРОГРАММ
Если вы собираетесь задействовать ActiveX в своих разработках, то в принципе вам подойдет любое из испытанных нами инструментальных средств - Delphi 3.0, Microsoft Visual Basic 5.0 и Microsoft Visual C++ 5.0. Мы можем утверждать, что выбор средства для создания управляющих элементов ActiveX определяется, главным образом, двумя факторами: с каким инструментальным средством разработчики уже знакомы и насколько сложные управляющие элементы они собираются разрабатывать. Если вы мало знакомы с объектами COM (Component Object Model), то лучше всего подойдет Visual Basic. Если ваши управляющие элементы должны использовать Windows API и интерфейсы объектов COM и при этом вы знакомы с C++, то больше подойдет Visual C++. Однако если вы знакомы с библиотекой визуальных компонентов (Visual Component Library) системы Delphi, то проще всего будет использовать именно этот продукт.
В общем и целом можно сказать, что Visual Basic наиболее прост в применении и обеспечивает наибольшую автоматизацию в выполнении задач, в то время как Visual C++ наиболее полезен для создания настраиваемых управляющих элементов. Delphi 3.0 находится где-то посередине - достаточно прост в использовании и обеспечивает среднюю степень настройки.
Последний фактор, который следует иметь в виду, - это область применения управляющего элемента, который вы разрабатываете. Если это внутрикорпоративное приложение или программа, которая будет использоваться только на вашем собственном Web-узле, вы можете выбрать Visual Basic как самое быстрое средство разработки. Если же вы собираетесь продавать свой управляющий элемент, то лучше предпочесть Visual C++ как более изощренное.
ВЫВОДЫ
ActiveX - многообещающая технология. Большое количество существующих библиотек готовых компонентов делают ее весьма полезным средством разработки приложений для Windows-платформ. Однако отсутствие многоплатформенной поддержки сильно ограничивает ее применение на Web-узлах Internet. Кроме того, изъяны в модели безопасности делают использование ActiveX в Internet весьма проблематичным.
Обзор средств разработки
Delphi 3.0
Delphi 3.0 - это первое обнаруженное нами средство, разработанное не Microsoft, которое позволяет создавать управляющие элементы ActiveX и имеет встроенную поддержку COM (Component Object Model). Мы нашли процесс создания управляющих элементов с помощью Delphi относительно простым, хотя разработчики, которые не знакомы с этим продуктом, должны будут потратить явно больше времени на обучение, чем при использовании Visual Basic (VB) 5.0 компании Microsoft.
В отличие от VB, который позволяет только расширять существующие управляющие элементы ActiveX, Delphi дает возможность производить новые управляющие элементы из своей библиотеки визуальных компонентов (Visual Component Library), в которой собраны классы компонентов Delphi, разработанные Borland, сторонними поставщиками или самими пользователями. "Расширить" - это значит добавить к управляющему элементу новые функциональные возможности при сохранении всех уже существующих функций; "произвести" же означает сохранить только полезные функции - именно это и позволяет делать Delphi, поскольку является объектно-ориентированным средством. Нам удалось произвести новый управляющий элемент ActiveX, используя классы компонентов из библиотеки визуальных компонентов Delphi. Благодаря этому, каждый раз, когда создается новый класс компонентов в Delphi, создается также и новый управляющий элемент. Таким образом получается двойное преимущество: во-первых, пользователи могут производить класс компонентов либо в другой класс, либо в управляющий элемент ActiveX; а во-вторых, пользователи могут преобразовывать компоненты, которые они создали в Delphi 2.0, в управляющие элементы ActiveX.
Как и другие рассмотренные нами средства, Delphi обеспечивает средства автоматизации, призванные облегчить процесс создания управляющих элементов. И хотя в Delphi отсутствуют какие-либо средства визуального проектирования при создании управляющих элементов (это чистое кодирование), тем не менее опция Active Form позволяет создавать управляющие элементы методом "перетаскивания" мышью. Функция Active Form в Delphi аналогична функции ActiveX Control из Visual Basic - она представляет собой управляющий элемент ActiveX, который использует форму Delphi в качестве контейнера для других компонентов Delphi и управляющих элементов ActiveX. Delphi также имеет "мастера" Property Page, который помогает создавать страницу свойств для управляющих элементов. Кроме того, с помощью Delphi нам удалось создать ActiveX Library и Type Library.
Функция Web Deployment в Delphi помогает загружать управляющие элементы в World Wide Web. Мы установили эту опцию и получили возможность задать нужный адрес URL и директорию, а также создать HTML-страницу для нашего управляющего элемента. Функция Web Deployment позволяет не только регистрировать управляющие элементы в реестре Windows, но и выполнять обратную операцию. Мы нашли эту возможность не менее полезной, чем возможность регистрации, поскольку она избавила нас от необходимости залезать в реестр Windows и удалять наш управляющий элемент вручную.
Основной недостаток Delphi, на наш взгляд, связан с процессом отладки управляющих элементов. Оказалось, что невозможно производить отладку в одной интегрированной среде разработки Delphi; для этого мы были вынуждены запускать еще одну копию Delphi. Кроме того, действия, которые необходимо выполнить для подготовки управляющего элемента к отладке, сложны и утомительны. Лучшим способом отладки управляющих элементов, который мы обнаружили, было использование другого контейнера управляющих элементов ActiveX, такого как VB или PowerBuilder.
Microsoft Visual Basic 5.0
Управляющий элемент ActiveX в Visual Basic создается так же легко и быстро, как и обычное приложение. Поскольку VB является контейнером ActiveX, мы могли создавать управляющий элемент либо с самого начала, либо путем добавления функций к существующим управляющим элементам. Средства автоматизации, которые предоставляет VB, оказались весьма полезными при разработке и установке управляющего элемента.
VB имеет промежуточный уровень, который обеспечивает взаимодействие между управляющим элементом ActiveX и COM, что уменьшает сложность разработки управляющих элементов. У такого подхода есть и свой недостаток - вы не получаете полного контроля над поведением объектов COM.
С помощь VB нам удалось создать следующие типы компонентов ActiveX: библиотеки DLL, EXE-файлы, управляющие элементы, а также библиотеки DLL и EXE-файлы документов ActiveX.
Самым большим преимуществом разработки управляющих элементов ActiveX с помощью VB представляется возможность использовать внутри своих управляющих элементов любые существующие управляющие элементы. Прежде чем создавать реальный управляющий элемент, мы смогли разработать новые свойства, методы и события и сохранить их в библиотеке классов.
Мастер Property Page помог нам создать макет страницы свойств для нашего управляющего элемента; затем с помощью мастера ActiveX Control Interface нам удалось задать, какие свойства, методы или события в библиотеке объектов должны быть включены в наш управляющий элемент. Еще одним полезным средством, которое предоставляет VB, является мастер ActiveX Document Migration, который позволяет преобразовывать формы VB в документы ActiveX.
Поскольку VB представляет собой контейнер ActiveX, то лучшим способом отладки управляющих элементов является включение их в программу, написанную на VB. Сделав это, мы получили возможность отлаживать наш управляющий элемент в среде выполнения с помощью имеющихся средств отладки.
По сравнению с утомительным процессом установки управляющих элементов в Visual C++ 5.0, выполнить аналогичную задачу в VB оказалось очень просто. Имеющийся в VB мастер Application Setup помог нам установить управляющий элемент как на сервере ActiveX, так и на Web-сервере путем загрузки необходимых файлов; с его помощью мы также зарегистрировали управляющий элемент (очень утомительная процедура, если выполнять ее вручную) и создали для него HTML-страницу. Кроме того, мы смогли задать местоположение, в которое браузеры должны загружать необходимые файлы, а также указать уровень безопасности данного управляющего элемента.
Microsoft Visual C++ 5.0
Из-за сложности самого языка и необходимости знания объектов COM и Microsoft Foundation Classes (глубина которого зависит от того, насколько сложен разрабатываемый управляющий элемент) мы нашли Visual C++ наиболее трудным в использовании - но и наиболее мощным - средством разработки управляющих элементов.
Для облегчения процесса создания управляющих элементов Visual C++ предоставляет некоторые полезные средства и "мастера", которые помогают создавать "скелет" управляющего элемента, вставлять в него необходимые функции, а также тестировать и просматривать готовые элементы. Однако одно важное средство, которое имеется в VB и Delphi, все же отсутствует в Visual C++ - средство создания HTML-страниц с включенными в них управляющими элементами ActiveX.
В Visual C++ для создания скелета управляющего элемента, лицензии на выполнение и файла справочного руководства можно воспользоваться одним из двух мастеров: MFC ActiveX Control или Active Template Library (ATL). И хотя ATL создает более быстрые и компактные управляющие элементы, мы решили воспользоваться мастером MFC ActiveX Control, поскольку для нашего управляющего элемента были нужны некоторые функции MFC.
Мастер MFC ActiveX Control генерирует базовый код инициализации для всех 14 файлов, которые используются для создания управляющего элемента. Вместо того чтобы создавать управляющий элемент "с нуля", мы модифицировали созданный "мастером" "скелет", чтобы внести в управляющий элемент нужные нам функции. Новичок на первых порах мог бы вполне запутаться, выбирая файлы, в которые необходимо добавлять новые свойства, методы и события; однако, мастер Class помогает добавлять новые функции в нужные файлы.
Visual C++ предоставляет контейнер ActiveX Control Test Container, предназначенный для тестирования управляющих элементов, которые находятся в процессе разработки. С помощью этого контейнера мы смогли протестировать все управляющие элементы, которые были нам доступны. Мы нашли эту функцию довольно полезной, однако столкнулись с некоторыми проблемами, например управляющие элементы, которые мы тестировали, оказались слишком велики для окна, используемого по умолчанию; после многократного "растягивания" окна наша система обычно выдавала сообщение о нехватке памяти. Сам процесс отладки полностью совпадает с тем, как происходит отладка обычного приложения Visual C++. Единственное отличие заключается в том, что отладка управляющего элемента осуществляется в контейнере, а не в среде разработки.
Visual C++ автоматически регистрирует управляющий элемент после завершения его разработки. Однако отсутствует возможность создания HTML-страницы, включающей управляющий элемент ActiveX. Для создания элемента на Visual C++ необходимо либо снять копию идентификатора класса (classID) управляющего элемента из OLE-COM Object Viewer, а затем вставить ее в HTML-страницу, либо иметь еще одно средство Microsoft под названием ActiveX Control Pad, которое позволяет вставлять управляющие элементы ActiveX в HTML-страницу, выбирая их из списка имеющихся элементов щелчком мыши. Мы пришли к выводу, что этот ручной процесс создания HTML-страниц более сложен и утомителен, чем автоматизированный процесс в VB и Delphi.
"Мастера" и шаблоны
Все три рассмотренных средства разработки предоставляют различные шаблоны и "мастера" для создания управляющих элементов ActiveX; иногда трудно определить, какое средство для чего использовать. Приведенная ниже таблица поможет вам в этом разобраться.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Средства автоматизации
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|||
|
- 1) Active Template Library
Component Object Model
2) Microsoft Foundation Classes
Модель безопасности ActiveX
С используемой в ActiveX моделью безопасности при работе в Internet может оказаться не все гладко. Поскольку она целиком полагается на способность проверять подлинность того, кто разработал управляющий элемент ActiveX, модель безопасности ActiveX не может полностью защитить пользователя от "враждебных" и содержащих ошибки управляющих элементов. Все, что она способна сделать, это предоставить пользователю возможность - и ответственность - отвергать управляющие элементы на основе их авторства. Управляющие элементы ActiveX функционируют подобно EXE-файлам Windows, поскольку компилируются в виде двоичного кода, что обеспечивает им такие же функциональные возможности, которые имеют любые другие исполняемые программы. А посему управляющий элемент может быть как интерактивной системой обработки заказов, так и программой, форматирующей ваш жесткий диск, - на усмотрение программиста.
В закрытой сети, какой является корпоративная ЛВС, пользователи могут рассчитывать на то, что их разработчики приложений создают только полезные и безопасные программы, и с чистой совестью могут загружать приложения с сетевого сервера. Однако, попадая в Internet, вы нуждаетесь в каком-то ином механизме защиты, который не допустит, чтобы с вашим жестким диском случилось что-то невообразимое.
Метафора безопасности
В Java и ActiveX безопасность обеспечивается совершенно по-разному. Модель безопасности Java работает примерно следующим образом. Допустим, вы устраиваете вечеринку и приглашаете гостей к себе домой, но очень обеспокоены сохранностью своего имущества. И вы стараетесь найти способ защитить свою драгоценную мебель. Одно из решений - это запереть все дорогие вам вещи в спальне и на кухне; гости смогут спокойно перемещаться по гостиной, но не смогут пройти в другие части дома. Таким образом, вы сможете свести потенциальные повреждения к минимуму. Программы на Java действуют примерно также: исполняемый код хранится в закрытой области.
С другой стороны, чтобы защитить свой дом от буйных гостей, вы можете нанять вышибалу и заставить его проверять личные идентификаторы перед дверью. Те, кто не имеет идентификаторов, отправится домой. Конечно, "проникшие" в дом гости смогут тогда безнаказанно портить ваше имущество, но по крайней мере вы сможете проконтролировать, кто же окажется вашим "обидчиком". Microsoft использовала похожую идею идентификации в модели безопасности ActiveX.
Защита в ActiveX обеспечивается программой Authenticode, в которой Microsoft реализовала кодовую подпись. Authenticode обеспечивает "водительские права", встроенные в управляющий элемент ActiveX, которые сообщают пользователю, кто создал данный элемент. Она также превращает браузер Microsoft Internet Explorer в вышибалу.
Идентификаторы задаются в Authenticode с помощью цифровых подписей и сертификатов. Цифровой сертификат предоставляет важную информацию о разработчике, такую как его имя и адрес электронной почты, а цифровая подпись представляет собой уникальный идентификатор особого свойства, вроде фотографии на водительских правах или отпечатков пальцев. Вместе они дают возможность пользователю проверять подлинность того, кто создал данный управляющий элемент.
Сертификация
Для того чтобы использовать Authenticode и создать цифровой сертификат, разработчик должен иметь набор из открытого ключа (public key) и частного ключа (private key). Они также должны быть сертифицированы надежной сторонней организацией, имеющей полномочия на осуществление сертификации. Эта организация хранит записи о том, кто каким частным ключом владеет, включая соответствующую информацию о владельце, такую как имя, адрес электронной почты и т. п. В настоящее время полномочиями на осуществление подобной сертификации обладает только компания VeriSign - дочерняя фирма RSA Data Security, разработчика открытых/частных ключей.
Чтобы получить сертификат, разработчики направляют информацию о себе в VeriSign вместе с оплатой. Для получения сертификата коммерческого разработчика (Commercial Developer) компания должна платить 400 долл. в год; частные разработчики (Individual Developers) платят 20 долл. в год и должны предоставить только наиболее важную информацию о себе. В любом случае разработчик официально "привязывается" к созданным им управляющим элементам и обещает не разрабатывать "вредных" программ.
Когда VeriSign получает от разработчика необходимую информацию, она выпускает цифровой сертификат, совместимый со стандартом X.509. После этого разработчик может включать свой цифровой сертификат в разработанные управляющие элементы.
В дополнение к сертификату разработчика каждый управляющий элемент ActiveX использует криптографическую подпись. Чтобы предотвратить имитацию или подделку, подписанные управляющие элементы применяют специальный криптографический алгоритм, или хеш-функцию. Используя программный код управляющего элемента, путем сложных вычислений происходит сокращение кода, имеющего переменную длину, до строки фиксированной длины, равной 128 битам. Результат вычислений сложным образом связывается с программным кодом данного управляющего элемента. Этот результат, называемый хеш-функцией, шифруется с помощью частного ключа, формируя цифровую подпись.
Сертификат и подпись передаются отдельно от управляющего элемента пользователям, когда те загружают данный элемент. Пользовательская система дешифрирует всю информацию с помощью открытого ключа. Сертификат сообщает пользователю, кто создал данный элемент; затем система пользователя запускает тот же самый хеш-алгоритм, с помощью которого была создана исходная хеш-функция, и сравнивает результаты. Если код управляющего элемента был изменен, то хеш-функция не совпадет, и пользователь получит уведомление, что либо управляющий элемент был подделан, либо произошла ошибка передачи.
Благодаря системе защиты, реализуемой с помощью Authenticode, пользователь получает достаточную определенность в отношении происхождения управляющего элемента и уверенность в том, что он не был подделан, однако это не может служить безусловной гарантией того, что данный управляющий элемент не создаст проблем у пользователя.
Встроенная защита браузера
Еще одним компонентом модели безопасности ActiveX является "вышибала", или встроенные средства защиты браузера Internet Explorer. Internet Explorer дает возможность пользователю устанавливать один из трех уровней защиты. Установка самого высокого уровня защиты не позволит браузеру загружать никакие неподписанные управляющие элементы ActiveX. При задании среднего уровня защиты браузер будет предупреждать вас о попытке загрузки неподписанного элемента, после чего вы сами сможете решить, выполнять его загрузку или нет. Низший уровень защиты позволяет браузеру автоматически загружать любые управляющие элементы (как подписанные, так и не подписанные), не уведомляя об этом пользователя. По умолчанию, в Internet Explorer установлен самый высокий уровень защиты. Он также позволяет задавать список разработчиков, управляющие элементы которых вы можете загружать, и поставщиков сертификатов, которым вы доверяете.
Зная о подобной системе защиты, вы сами должны решать, какую опасность несет тот или иной управляющий элемент ActiveX. Скорее всего, вы не захотите загружать управляющий элемент, созданный какой-нибудь фирмой с сомнительным названием, однако даже управляющий элемент, загруженный с центрального Web-узла вашей собственной компании, может содержать неисправленную серьезную ошибку. Если вы собираетесь использовать управляющие элементы в своем браузере, то берете на себя полную ответственность за уровень доверия к разработчикам управляющих элементов. Встраиваемый компонент (plug-in) ScriptActive, обеспечивающий доступ к элементам ActiveX для Netscape Navigator, использует ту же схему безопасности, что и Internet Explorer.
Как проводилось тестированиe
Мы хотели получить практический опыт в написании управляющих элементов ActiveX, поэтому решили использовать максимальное количество имеющихся средств разработки и создать с их помощью однотипные управляющие элементы. В настоящее время для разработки элементов ActiveX можно применять только три продукта: Visual Basic 5.0 и Visual C++ 5.0 компании Microsoft и Delphi 3.0 компании Borland. Первоначально мы собирались использовать еще и Visual J++ компании Microsoft, но оказалось, что с помощью J++ можно создавать только "невидимые" управляющие элементы; визуальные элементы нельзя интегрировать с кодом на Java, поскольку виртуальный процессор Java не умеет посылать команды, по которым управляющий элемент должен отображать себя на экране. Кроме того, написанные на J++ управляющие элементы не могут передавать события в Java, поскольку виртуальный процессор Java не умеет воспринимать события, передаваемые управляющими элементами ActiveX.
Занимаясь тестированием, мы создали управляющий элемент, выполняющий относительно простую типичную функцию. Мы поставили себя в положение компании, которая хочет, чтобы посетители ее Web-узла могли в графической форме посмотреть, сколько других посетителей побывало на данном Web-узле и сколько времени они на нем провели. Наш управляющий элемент подключался к серверу баз данных, посылал запросы и вычислял количество посетителей, а также время, проведенное ими на Web-узле. На основе вычисленных цифр он создавал диаграмму, отображающую результаты.
Наше тестирование преследовало двоякую цель. Во-первых, мы хотели посмотреть, насколько легко можно написать управляющий элемент на каждом языке. Кроме того, мы должны были проверить полезные средства и "мастера" (wizards), имеющиеся в каждом продукте.
Рекламируя преимущества ActiveX, ее создатели обычно утверждают, что эта технология, в отличие от Java, не требует изучения нового языка программирования или использования новых инструментальных средств. Тем не менее для того, чтобы создавать управляющие элементы ActiveX и пользоваться новейшими средствами автоматизации разработки, вам необходимо перейти на последнюю версию существующих инструментальных средств. Поэтому, несмотря на отсутствие нового языка программирования, вам все же может потребоваться изучение новых концепций и новой среды разработки.
Полезные средства автоматизации, имеющиеся в рассмотренных нами продуктах, не только сокращают время разработки, но и делают получаемые программы более правильными, поскольку та часть кода, которая генерируется автоматически, тщательно проверена и отлажена. Средства автоматизации также сокращают время обучения; большинство "мастеров" создают базовые компоненты управляющего элемента, которые можно использовать в целях обучения. При создании наших тестовых управляющих элементов мы применяли имеющиеся средства автоматизации и проставили им оценки, исходя из того, насколько полезными они оказались и с какими трудностями мы столкнулись при их использовании.
ActiveX на российских просторах Internet
Занимаясь подготовкой обзора, посвященного технологии ActiveX, мы решили не ограничиваться публикацией результатов исследования, проведенного специалистами InfoWorld, а поставили перед собой цель выяснить, как обстоят дела с ActiveX в России. Прежде всего мы хотели узнать, насколько широко используют эту новую технологию российские разработчики ПО и в каких проектах.
Наше исследование ни в коем случае нельзя назвать всеобъемлющим. Более того, оно даже не претендует на то, чтобы считаться законченным, поскольку далеко не все компании-разработчики, к которым мы обращались, смогли оперативно предоставить интересующую нас информацию. Тем не менее получился достаточно любопытный, на наш взгляд, срез, в котором не только видны реальные компании и их разработки, но и высказываются интересные мысли относительно перспектив технологии ActiveX в России.
В поисках отечественных пользователей ActiveX
Прежде всего мы обратились в московское представительство Microsoft и попросили предоставить нам список российских разработчиков, которые активно используют ActiveX. Полученный список удивил нас, во-первых, своей краткостью (в нем оказалось всего 6 компаний), а во-вторых, отсутствием в нем известных имен (за исключением, разве что, компании "Гарант-Парк", разработчика известной правовой справочной системы ГАРАНТ). Сначала мы отнесли и то и другое на счет новизны технологии и некоторой "недоразвитости" российского рынка ПО. Оказалась, однако, что есть еще одна причина, сдерживающая применение технологии ActiveX в нашей стране - по крайней мере если говорить о сети Internet, для применения в которой она, собственно, и была произведена на свет.
Причина оказалась достаточно тривиальной - плохие каналы связи. Когда ваш браузер встречает Web-страницу, содержащую управляющий элемент ActiveX, он пытается загрузить этот элемент на ваш компьютер (т. е. переписать его на ваш жесткий диск и зарегистрировать в реестре Windows) и только после этого начинает его выполнение. Кроме того, в некоторых случаях для работы управляющего элемента могут потребоваться дополнительные компоненты (например, библиотеки DLL), которые отсутствуют в вашей системе. Эти недостающие компоненты могут загружаться на ваш компьютер с других серверов и Web-узлов. Понятно, что при медленных и ненадежных каналах этот процесс может продолжаться весьма долго и многократно.
Как утверждает Иван Пашкевич, менеджер по продуктам Internet российского Microsoft, именно по этой причине разработка и применение клиентских элементов ActiveX в России пока не получили широкого распространения. Однако существует не менее интересная область применения технологии ActiveX - создание серверных компонентов, работающих на Web-серверах Internet и выполняющих самые разнообразные функции, среди которых особое место занимает обеспечение связи с базами данных. Именно эта сфера применения ActiveX и получила, по утверждению Microsoft, наибольшее развитие в России. Что ж, нам оставалось только проверить, насколько это справедливо.
Из шести компаний, фигурировавших в списке Microsoft, лишь три активно откликнулись на нашу просьбу предоставить информацию для обзора. Остальные же, как оказалось, либо только исследуют возможность применения ActiveX в своих разработках и пока не готовы сказать по этому поводу что-нибудь конкретное, либо вовсе не захотели (или не смогли) высказаться на эту тему.
Торги ActiveX
Компания "Гарант-Парк" давно и активно занимается созданием и распространением коммерческих справочно-информационных систем. В последнее время особое внимание уделяется распространению информации через Internet. Примером тому служит создание системы "Гарант-WWW", с помощью которой пользователи могут обращаться к справочнику правовой информации через Internet. Менее известной, но не менее интересной является информационная система "Парк" - полнотекстовая БД, содержащая материалы информационных агентств, газет, журналов, государственных структур и т. д. Сейчас компания готовит к выпуску версию 1.5 этой системы, в которой активно используются серверные компоненты ActiveX. Система должна быть закончена к августу и будет доступна на сервере http://is.park.ru/. Кроме того, компания готовит к выпуску информационный канал "ПАРК", создаваемый с использованием ActiveX, Webcasting и технологий Internet Explorer 4.0. Система должна появиться в августе-сентябре (после выхода релиза IE 4.0) на сервере http://channel.park.ru/.
Максим Захаренко, руководитель отдела программирования ЗАО "Гарант-Парк", выделяет два направления применения технологии ActiveX в проектах компании. "Первое из них - это создание удобных и функциональных пользовательских интерфейсов для работы в Internet и intranet, - заметил он. - Поскольку реальное применение ActiveX в Internet накладывает некоторые ограничения на используемые Web-браузеры, то технологии ActiveX используются в основном для создания административных мест с расширенными возможностями. Второе направление - создание серверных компонентов для работы в Active Server Pages".
Наиболее интересной разработкой "Гарант-Парк" с точки зрения применения технологии ActiveX является система "Электронные торги", предназначенная для доступа через Internet к информации о ходе вторичных торгов по ГКО и ОФЗ-ПК на ММВБ в режиме реального времени (частота обновления информации - 1 раз в 10 с). Для пользователя этой системы создается виртуальное рабочее место, абсолютно не напоминающее работу в Internet. Для пользователя оно выглядит как обычное клиент-серверное приложение, в котором он может в интерактивном режиме (без остановки системы) производить необходимые настройки, выбирая для отображения на экране необходимые поля базы данных. Поскольку вся система работает на сервере, а пользователю пересылаются только обновленные данные, отсутствует такое понятие, как перерисовка экрана. С системой можно ознакомиться на сервере http://ms.park.ru/trade/.
Компания использует в своих проектах самый широкий спектр средств разработки: Visual C++, Visual Basic, Visual Basic CCE 5.0 (Control Creation Edition - специальная версия Visual Basic для создания управляющих элементов ActiveX), Visual J ++ и Delphi.
"Кто есть who" и "ноу-how"
ACC Group - еще одна компания, активно работающая на российском рынке ПО для Internet. Сфера ее деятельности - разработка заказных Web-узлов, коммерция и маркетинг в Internet, а также создание сетей для крупных событий. Например, созданная этой компанией сеть связала большое количество стендов в разных павильонах на выставке Comtek '97 и обеспечила им выход в Internet. Аналогичную сеть компания собирается организовать и на выставке InterNetCom '97, которая пройдет в Москве в октябре текущего года.
Из программного обеспечения, разрабатываемого с применением технологии ActiveX, - серверные компоненты Web-узлов, обеспечивающие, например, доступ к распределенным базам данных и обработку транзакций. Часть уже выпущенного ПО используется на Web-узлах клиентов ACC Group, среди которых Московское представительство Compaq, компания Comtek International и другие.
Из действующих Web-узлов разработки ACC Group наиболее интересен, на наш взгляд, сервер www.catalog.ru, представляющий собой WWW-версию известного каталога "Кто есть кто на компьютерном рынке России". Web-узел выполнен в виде поисковой системы, способной почти моментально находить нужную информацию о фирмах и их продукции по запросу клиента. Можно ввести название интересующей вас компании и получить о ней подробную информацию (включая ссылки на Web-узлы компаний-производителей, продукцию которых она предлагает). Можно также искать компании, задавая регион, род деятельности или вид поставляемой продукции.
Относительно уникальности разработок компании ее главный технический специалист Григорий Никонов говорит следующее: "Многие компании сейчас занимаются разработкой компонентов для связи Web-серверов с базами данных. К сожалению, эти компоненты или пакеты рассчитаны на обычную реляционную работу. Мы пытаемся подойти к проблеме хранения информации с объектной точки зрения, что позволяет нам впоследствии сильно упростить и ускорить создание информационных узлов для наших заказчиков". Более подробно разузнать об этой "объектной точке зрения" нам, к сожалению, не удалось - видимо, компания усиленно оберегает свои "ноу-хау". Программирование в ACC Group осуществляется главным образом на Visual C++; иногда используется и Visual Basic.
"Анет" и партнеры
Особого упоминания, на наш взгляд, заслуживает деятельность компании "Анет". Прежде всего, потому, что она не только активно использует технологию ActiveX в своих разработках, но и пытается продавать компаниям-разработчикам ПО готовые компоненты ActiveX (правда, пока, в основном, зарубежного производства). Компания начала работать в этом направлении еще в 1993 году, занявшись разработкой компонентов для программирования на Visual Basic по заказу одной американской компании, и стала первой российской фирмой, работающей на этом рынке. "Рынок непростой и для российской фирмы малоперспективный, если она пытается продавать свои продукты самостоятельно, - говорит президент ТОО "Анет" Игорь Горюшин. - На Россию ориентироваться бесполезно, а за рубежом (в частности, в США) нормальные деньги за иностранные VBX/OCX не платят из опасения, что не получат адекватной технической поддержки". Тем не менее компании удалось найти за рубежом партнеров, занимающихся продажей и технической поддержкой ее продукции, и к настоящему времени "Анет" имеет, по утверждению ее президента, более тысячи клиентов по всему миру.
Несмотря на практически полное отсутствие рынка компонентов, "Анет", заручившись поддержкой Microsoft АО, все-таки начала заниматься их поставкой и продажей в Россию. "Абсолютное большинство фирм-производителей, к которым мы обращаемся с предложениями о сотрудничестве, с пониманием относятся к отсутствию спроса и низкой покупательной способности российских производителей ПО, - рассказывает Игорь Горюшин. - Это позволяет нам получать реселлерские скидки, даже несмотря на невыполнение нормативов продаж". Описание многих компонентов, поставляемых "Анет", оформлено в виде каталога в формате HTML и хранится на Web-сервере компании (http://www.anetusa.com), а также на российской части сервера Microsoft.
Из собственных готовых приложений, разработанных "Анет", несомненного внимания заслуживают два (хотя сейчас их уже более десятка). Anet HelpTool - первый и пока единственный отечественный WYSIWYG-редактор help-файлов. Он был выпущен в 1996 году, а версия 3.0 была рекомендована к использованию специалистами Winsite.com как одна из лучших в своей категории. Множество пользователей на Западе оценили ее достаточно высоко и даже переходят к ней от более дорогих программ, как, например, Robohelp. В июле этого года вышла уже 4-я версия этого продукта - еще в период бета-тестирования пользователи отмечали ее как очень удачную. Тем не менее на российском рынке эта программа до сих пор широко не распространялась - отчасти потому, что "Анет" не вела активной деятельности в России. Сегодня, однако, ситуация меняется, и "Анет" рассматривает возможность выпуска русской версии этого продукта, поскольку понимает значимость подобных инструментов для российских программистов. Впрочем, те, кого не пугает английский интерфейс, могут загрузить Anet HelpTool 4.0 с сервера http://www.anetusa.com/news.htm.
Существующие средства программирования для создания элементов ActiveX президент "Анет" оценивает так: "Спецификация на ОСХ была не очень удачной, и в ряде случаев мы натыкались на такие дыры, которые сама Microsoft именовала безнадежными, - говорит он. - Мы писали компоненты ОСХ на Visual C++ 4.1 с применением MFC. Потом появился комплект Internet Explorer SDK, который позволил гораздо легче писать элементы ActiveX. И наконец, недавно появился Visual C++ 5.0, содержащий ActiveX Template Library. Это, по нашим оценкам, один из самых удачных ходов Microsoft, и теперь разработчики могут писать действительно красивые и компактные управляющие элементы. Писать элементы ActiveX на Delphi3 очень удобно и легко, но они получаются большого размера и для передачи по Internet не совсем подходят. Можно писать элементы ActiveX и на Visual Basic 5.0, но они тоже отличаются большими размерами. Visual Basic трудно рассматривать как продукт для изготовления серьезных элементов ActiveX. Скорее, с его помощью можно объединять несколько сторонних ActiveX в один для последующего использования. Или писать полностью свои, но очень примитивные".
"Для себя мы пока сделали следующий вывод: если пишешь компоненты ActiveX на продажу, то лучше использовать Visual C++, - продолжает Горюшин. - Для быстрой разработки компонентов, предназначенных для внутреннего применения, неплохо работать с Delphi и Visual Basic (особенно если в одной команде собраны программисты, работающие на Delphi и VB). При этом, однако, нужно помнить, что несмотря на спецификацию Microsoft, элемент ActiveX, написанный на Visual C++ или Visual Basic, не всегда хорошо работает в Delphi. Поэтому разработчикам коммерческих управляющих элементов приходится тестировать вновь создаваемые элементы ActiveX во всех средах программирования.
Относительно перспектив работы на мировом рынке ActiveX, Горюшин высказался следующим образом: "Общий объем рынка компонентов, по оценкам Microsoft, составляет всего около 200 млн дол. в год. А об использовании ActiveX в Internet сегодня вообще смешно говорить - эту технологию применяют около 10 тыс. серверов. Для сравнения, серверов, использующих апплеты Java, около 150 тыс. С моей точки зрения, более перспективным является применение технологии ActiveX в intranet. С другой стороны, напор Microsoft всем известен..."