ActiveX изнутри

Автор: Ruben King Сайт: http://www.pauk2001.h1.ru/
   
   ActiveX по праву можно считать перспективным инструментом для разработок в Web.
   
   Свое достаточно позднее вступление в борьбу за Web компания Microsoft сопроводила завесой громких заявлений. Многие из разработчиков, увлекшись языком Java фирмы Sun и платформой Netscape Navigator, восприняли обещания Microsoft как обычный рекламный трюк. И оказались неправы. Многие из компонентов платформы ActiveX уже получили путевку в жизнь и стали незаменимыми при решении задач определенного класса, прежде всего для интрасетей.
   
   По своей сути платформа ActiveX - это адаптаци существующих технологий Microsoft применительно к Web. Данная концепция базируется на механизмах OLE и COM - проверенных временем и ставших стандартами разработок для Windows. VBScript - язык программировани ActiveX-объектов на страницах Web - представляет собой диалект языка Basic приоритетного для Microsoft с момента ее основания. Имеющиеся ныне инструменты дл подготовки Web-страниц на базе технологии ActiveX явно обязаны Microsoft Visual Basic. В целом адаптаци прошла удачно.
   
   Данная статья посвящена основным компонентам предложенного Microsoft решения для Web. Здесь будут рассмотрены управляющие элементы ActiveX, язык подготовки сценариев VBScript, браузер Microsoft Internet Explorer 3.0, в котором предусмотрены эти элементы; состояние дел с авторскими инструментами, необходимыми для работы с управляющими элементами ActiveX. Кроме того, мы познакомимся с программными средствами, которые можно приобрести для создани собственных управляющих элементов.
   
   Управляющие элементы ActiveX
   Что же это такое на самом деле? Наиболее простой ответ - и, как оказывается, наиболее точный: "управляющий элемент ActiveX" - это просто новый маркетинговый термин вместо "управляющего элемента OLE" (называвшегося прежде "управляющим элементом OCX"). Любой готовый или созданный вами управляющий элемент OLE - это уже ActiveX-элемент и может использоваться в оснащенных средствами для работы с ним программах. Однако подобные OLE-элементы составляют лишь часть всего многообразия управляющих элементов ActiveX и совсем не обязательно устроят разработчиков для Web.
   
   Типичный недостаток существующих OLE-элементов - их чрезмерные размеры слишком велики. Это обусловлено сложностью структуры OLE-интерфейсов при полной их реализации управляющими элементами, а также тем фактом, что при подготовке в Microsoft библиотек, используемых для генерации управляющих элементов, размеры их не оптимизировались (мягко говоря). Если в системе пользователя какой-то из этих элементов отсутствует, приходится загружать его через Internet, следовательно, размеру управляющих элементов Web страниц должен быть как можно меньше. Некоторые из существующих OLE-элементов удовлетворяют этому критерию. Дл устранения названного недостатка в Microsoft предложили два следующих варианта.
   
   Первый вариант: упростить определение ActiveX-элементов в части, касающейся реализуемых интерфейсов. С технической точки зрения ActiveX-элемент - это некоторый COM-объект, через основной OLE-интерфейс которого, IUnknown, организуется доступ к остальным интерфейсам данного объекта. (См. "Модель компонентного объекта OLE", PC Magazine/RE, N6/96, стр. 163.) Благодаря такой схеме разработчики могут обеспечивать лишь те OLE-интерфейсы, которые действительно необходимы для текущей задачи, не наруша при этом требований существующей спецификации. Второй вариант: "перекроить" базовые средства, используемые для подготовки ActiveX-элементов. (См. приложение "Создание ActiveX-элементов: обзор инструментов".)
   
   Вероятно, многие управляющие элементы ActiveX, т. е. OLE, хорошо знакомы разработчикам, но, наверное, среди них есть и такие, которым необходимы пояснения. По существу с помощью ActiveX-элементов программист создает некоторый высокоуровневый, пригодный дл многократного использования объект с конкретной полезной функцией. Затем этот элемент может быть передан (или продан) другому программисту, которому пригодится как некий "кирпичик" в его программном инструменте, обладающем средствами для взаимодействия с ActiveX-элементами. (Здесь речь идет о предназначенном для Windows большинстве основных инструментов дл Си/Си++, Basic, Pascal и многих других языков.) В роли ActiveX-элементов может быть все что угодно - от обычной кнопки до полнофункциональной электронной таблицы. В продаже имеются тысячи таких элементов от разных поставщиков. Их богатые функциональные возможности и многообразие - отдельное, наиболее важное достоинство платформы ActiveX.
   
   VBScript
   VBScript (Script версия языка Visual Basic) фирмы Microsoft - это язык сценариев, предусмотренный в браузере Microsoft Internet Explorer, и наиболее очевидный вариант выбора для программирования Web страниц на базе ActiveX-элементов. Он представляет собой адаптированное для Web подмножество языка VBA (Visual Basic for Applications) с принятым в Microsoft синтаксисом Бейсика. Здесь используются обычные дл языка Бейсик обозначения объект-параметр (перечисляемые через точку), процедуры, функции и структуры, пригодные для управления выполнением программы, а также широкий набор традиционных для этого языка функций. Все, кому ранее уже приходилось работать с современным языком Бейсик, прекрасно справятся и с VBScript.
   
   Как и в VBA, предложение Option Explicit в VBScript предназначено для явного объявления переменных. Однако в отличие от VBA в VBScript вы не задаете явно типы переменных, все они - вне зависимости от того, строка это или число, - хранятся как тип Variant. Конечно, неявно заданные типы данных существуют - включа integer, long, single, double, string, numeric, date и financial, - но для системы это лишь формат представления данных. К счастью, имеются функции как для преобразования, так и для проверки типов переменных (например, VarType, IsNumeric), которые можно достаточно уверенно применять для Web страниц, оснащенных средствами для проверки допустимости типов данных.
   
   В VBScript вы не найдете средств для ввода-вывода файлов и для прямого доступа к памяти. Такие ограничения, характерные также для Java и JavaScript, обусловлены необходимостью исключить появление программ с разрушительным или пагубным поведением. Удивительно, но среди средств VBScript даже не предусмотрен объект Debug. Обнаружилось, что во всех имеющихся инструментах практически полностью отсутствуют какие либо средства отладки.
   
   Исходный текст VBScript-программы встраивается в HTML страницу с помощью управляющих кодов &ltSCRIPT> и, как правило, помещается в раздел &ltHEAD>. Программный блок предваряется предложением LANGUAGE="VBScript" с сообщением браузеру о языке, на котором составлялась программа (в Internet Explorer 3.0 возможно использование также JavaScript). Программный текст следует поместить между кодами комментария (<! , >), тогда в старых версиях браузеров, не оснащенных средствами для работы с VBScript, этот блок не будет выводиться на экран.
   
   Подобного рода упражнения - это как раз и есть конструирование Web страниц с помощью ActiveX-элементов, стоит отметить, что в VBScript управление объектами форм (form objects) HTML не отличается от манипуляций с текстовыми блоками и кнопками. Даже применение этих простых средств позволит вам обогатить разнообразными функциональными возможностями свою страницу. Обращения к объектам форм организуются в VBScript путем указания имени формы FORM NAME и параметра NAME любого объекта, имеющегося в этой форме.
   
   Но ActiveX-элементы - это гораздо более мощное средство, чем HTML формы. Управляющие элементы добавляются к программе с помощью кодов &ltOBJECT>. В программе для внутренних обращений к объекту задаютс его идентификатор ID и параметр CLSID - 128-разрядный глобальный уникальный идентификатор (GUID) данного OLE элемента. При вызове ActiveX элемента из VBScript система просматривает системный Реестр Windows, чтобы выяснить, зарегистрирован ли он там. Если нет, система использует атрибут CODEBASE (из команды &ltOBJECT>), в котором указан адрес сервера с требующимся элементом. После его загрузки и инсталляции, проводимых некой встроенной системной службой, данный элемент готов к работе.
   
   Internet Explorer 3.0
   Программа Internet Explorer фирмы Microsoft (испытаниям подверглась первая бета-версия с Java-расширениями) - прекрасный, полнофункциональный браузер, который постепенно завоевывает позиции на рынке, разделяя влияние со своим основным конкурентом - Netscape Navigator. Для разработчиков наибольший интерес представляют следующие три особенности Internet Explorer: этот браузер может служить контейнером дл ActiveX-элементов, выполнять сценарии VBScript или JavaScript, предусмотренные в HTML документах, и обеспечивает ресурсы виртуальной машины (ВМ) Java дл исполнения Java-программ.
   
   Реализация еще двух его возможностей не была завершена на момент подготовки данной статьи (по крайней мере, об этом не сказано в документации); но, по всей видимости, они будут весьма значительными. Первая - механизм ВМ Java будет представлен разработчику как обычный ActiveX-элемент. Это позволит, например, запускать программным путем любую Java программу. Вторая - в Internet Explorer можно будет оформлять Java утилиты как обычные ActiveX элементы, что позволит обращаться к их методам и параметрам из программ на VBScript и других языках сценариев, с которыми работает данный браузер. Кроме того, в состав Internet Explorer входит разработанная в Microsoft функция кода аутентификации Authenticode. В результате поставщики элементов могут снабдить их цифровой подписью, удостоверяющей подлинность, на основании которой конечные пользователи решают, разрешить или запретить инсталляцию конкретных управляющих элементов во время загрузки из Сети.
   
   ActiveX Control Pad
   Для создания Web страниц с заложенной в них возможностью использования языка VBScript и ActiveX-элементов сгодится даже обычный текстовый редактор, однако в этом случае вы столкнетесь с необходимостью ввода длинных, во многом повторяющихс предложений. Эту процедуру значительно облегчит авторский инструмент ActiveX Control Pad фирмы Microsoft, бета-версию которого в настоящее время можно загрузить из сети бесплатно. По сравнению с тщательно отшлифованными инструментами Visual Basic ActiveX Control Pad еще далек от совершенства и лишен таких необходимых вещей, как средства отладки и контекстно-чувствительные подсказки по синтаксу. Кроме того, предлагается ряд новых, ориентированных на непрофессионалов примеров программирования, которые, по крайней мере в этой версии, малопонятны и плохо организованы. Однако, поскольку более совершенных средств нет, это все же лучше, чем ничего.
   
   Основной интерфейс ActiveX Control Pad представлен отдельным окном для редактирования текста, где выводится полный HTML-текст страницы, над которой вы трудитесь. С левой стороны этого окна видны пиктограммы, указывающие положение каких-то управляющих элементов, сценариев или программных блоков в HTML тексте. С помощью данного редактора можно создать лишь некий каркас новых страниц, размеченных HTML кодами либо импортировать уже существующий документ. (Следует отметить, что эта программа практически не обеспечивает средств для макетирования HTML страниц, поэтому дл подготовки HTML элементов, например форм, лучше подыщите себе другой инструментарий.)
   
   Выбрав из меню Edit (Правка) редактора ActiveX Control Pad пункт Insert ActiveX Control (Вставить ActiveX-элемент) или щелкнув правой клавишей мыши на контекстном меню, вы увидите список зарегистрированных в вашей системе ActiveX-элементов. Выберите из него конкретный элемент, и появится окно некоего модального редактора элементов с выведенным в псевдополе экземпляром данного элемента. Можно визуально менять размеры и задавать значения параметров, использу соответствующую таблицу или щелкая правой клавишей мыши на контекстном меню, - все, как в среде Visual Basic. Когда все значения параметров установлены и работа с формой завершена, редактор ActiveX Control Pad вставляет необходимый вам программный блок &ltOBJECT> вместе с кодами &ltPARAM>, соответствующими заданным вами параметрам, в HTML страницу. Кроме того, добавляетс корректное значение 128-разрядного идентификатора объектного класса Object Class ID (делать это вручную не придется!). В том месте вашей страницы, куда был вставлен в HTML текст программный блок для данного объекта, появится ваш элемент.
   
   Закончив с размещением на странице ActiveX-объекта, вы можете дополнить ее и VBScript программой, предназначенной для обработки событий и изменени параметров этого объекта. Опытные программисты, по видимому, будут делать это вручную, просто встраива нужные процедуры в HTML документ. Однако, поскольку редактор ActiveX Control Pad рассчитан и на непрофессионалов, в него входит мастер подготовки сценариев Script Wizard - новый инструмент для создани в визуальном режиме программ, с помощью которого и неподготовленные пользователи смогут составлять сценарии. К сожалению, он не оправдывает связанных с ним надежд и скорее всего окончательно собьет с толку неопытных пользователей.
   
   Интерфейс мастера Script Wizard представлен трем панелями. В левой панели выводятся поддающаяс дальнейшему развертыванию иерархия объектов вашей программы и соответствующий каждому из них список событий. На правой панели - еще одна аналогична иерархия с запутанной смесью объектов, параметров и событий. На нижней панели приводится описание на английском языке тех действий, которые выполняет конкретный обработчик событий, выбранный на первых двух панелях. Принцип работы таков: вы выбираете на левой панели некоторое событие, на правой панели некоторое действие и вводите через всплывающее диалоговое окно необходимые параметры. После этого Script Wizard генерирует соответствующую строку программы, смысл которой разъясняется по английски на нижней панели (можно вместо этого выводить строку на языке Basic). На практике же оказывается, что интерфейс программы настолько запутан и так богат потенциальными ловушками, что непрофессионалам лучше держаться от нее подальше и заняться освоением азов языка Basic.
   
   Компоновка ActiveX-элементов
   Кроме работы с отдельными управляющими элементами, в редакторе ActiveX Control Pad их можно компоновать. Группа ActiveX-элементов, объединенных внутри единого контейнера, носит название компоновки ActiveX-элементов (ActiveX Layout Control). В определенной степени данна концепция аналогична понятию формы в Visual Basic, и благодаря ей в вашем распоряжении существенно больше возможностей, чем при использовании только HTML. Оперируя в рамках компоновки, программист может достаточно точно размещать в двумерном пространстве отдельные элементы, учитывая их взаимное наложение и видимость. В результате можно придать интерфейсу более Windows-подобный внешний вид.
   
   Для создания компоновок в ActiveX Control Pad выберите режим Insert Layout (Вставить Компоновку). На экране появятся форма для ее настройки и окно с инструментами Toolbox, содержащее элементы, которые можно поместить в эту форму. В числе представленных в Toolbox элементов: метки, текстовые и списочные окна, полосы прокрутки, командные кнопки, зависимые и независимые переключатели, закладки и изображения с "горячими точками". Можно дополнять Toolbox новыми закладками и ActiveX-элементами. Такие стандартные управляющие элементы и элемент компоновки будут в конце концов включены в Internet Explorer, что освободит программистов от необходимости загрузки их по сети.
   
   Готовая компоновка сохраняется как текстовый файл с расширением ALX. В этом файле определение самой двумерной компоновки заключено между кодами &ltDIV>, а составляющих ее элементов - ограничено внутри данного блока кодами &ltOBJECT>. (Отметим, что эти файлы могут содержать также процедуры VBScript.) Обращения к имеющейся на HTML странице компоновке организуются с помощью стандартных ссылок &ltOBJECT>. На этапе выполнения можно запрашивать эти управляющие элементы либо локально из своей системы, либо загружать по сети с удаленного сервера. Возможность подготовки компоновок - это, конечно, значительный шаг вперед от причуд HTML, поскольку теперь разработчики смогут составлять достаточно сложные комплексы программ с обилием управляющих элементов с точно выверенным их размещением.
   
   Достоинства и недостатки
   Технология ActiveX заслуживает пристального внимания, но ей еще предстоит трудная борьба за Web. Средства для ее использования имеются пока только в браузере Internet Explorer, который, в свою очередь, ограничивается лишь средой Windows - по крайней мере на текущий момент. (По словам представителей Microsoft, в будущем технология ActiveX будет подготовлена и дл платформ Macintosh и UNIX.) Средства для работы с управляющими элементами ActiveX, может быть, найдут пристанище и в браузерах других поставщиков, однако, как сообщили в Netscape, браузер Navigator останется в стороне от этой технологии. И пока за ним будет сохраняться львиная доля рынка браузеров, рассчитывать на применение технологии ActiveX в общедоступных узлах Internet не приходится.
   
   Однако мы упустили из виду сферу частных интрасетей, и именно на этом поприще влияние ActiveX может оказаться значительным уже сейчас. В настоящее врем ActiveX и VBScript более всего приспособлены дл модернизации клиентской части используемых в этих сетях программ, нечто подобное делается и с помощью языка Java. Однако, если инструменты и библиотеки Java еще только начинают появляться, на рынке ActiveX уже сейчас представлен богатый арсенал управляющих элементов от различных фирм. Задача создания средствами Java страницы Web, оснащенной механизмом построени полнофункциональной диаграммы или таблицы данных, потребовала бы немыслимых усилий разработчика. А аналогичная задача средствами ActiveX решаетс достаточно просто.
   
   Совершенно очевидно, что в Microsoft немало заботятся о продвижении стандарта ActiveX на рынок, причем до такой степени, что даже бесплатно предлагают всем желающим свой браузер, описание языка, инструментальные средства и подготовленные наборы управляющих элементов. Если вы планируете разработку прикладной программы для интрасети с расширенными возможностями ее клиентской части - эта технологи будет вам полезна.
   

Опубликовано: HTTP://WWW.R-T-F-M.INFO, pauk ©® 2000-2011.
All rights reserved.
При перепечатки ссылка на сайт обязательна.
Мнение администрации сайта не всегда совпадает с мнением автора..