КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Основы технологии ActiveX
Будьте внимательны при описании форм. Обязательно сверяйте названия форм в модуле и Web-странице. Даже внешне почти одинаковые кавычки — прямые и косые — могут стать причиной долгих поисков ошибки. На Web-страницах следует использовать только прямые кавычки. Важно Размещение и тестирование созданного сайта
Отладка работы серверных модулей Процесс написания любой программы всегда сопровождается необходимостью поиска и устранения ошибок. Все ошибки принято разделять на синтаксические и логические. Если первые обнаруживаются уже на этапе компиляции, то нахождение последних часто требует больших затрат усилий и времени. Поскольку серверный модуль работает не только с обычными средствами ввода/вывода (консолью), но и использует переменные окружения и, как правило, выполняемый алгоритм сильно зависит от содержимого запроса, то отладка такого модуля достаточно трудоемка. Прежде всего, стоит приводить программу в рабочий вид на локальном компьютере, где происходит ее компиляция. Для этого, как уже указывалось, нужно установить Web-сервер на компьютер, настроить его, а затем установить в Delphi каталог для выходных ЕХЕ-файлов в каталог, из которого сервер выполняет запуск модуля (например..\Apache\cgi-bin). При этом можно компилировать программу и сразу наблюдать за результатами ее работы в браузере, обновляя его содержимое. Естественно, что отладку следует начинать с исправления всех синтаксических ошибок. После компиляции проекта нужно указать его адрес в браузере и попробовать нажать кнопку Перейти (Go), либо просто нажать клавишу <Enter> (разумеется, что прежде необходимо запустить локальную инсталляцию Web-сервера). В случае если модуль должен использовать данные клиентского запроса, то перед началом процесса отладки подготовьте Web-страницу, содержащую форму с нужными полями, либо запишите отладоч,-ные параметры запроса в скрытые элементы формы, чтобы при каждой попытке запуска модуля не приходилось их вводить вручную.
Отладка на локальном компьютере В зависимости от того, что отображается в браузере при обращении к отлаживаемому модулю, рекомендуем поступать следующим образом:
После того как все ошибки найдены и система протестирована, можно переходить к ее размещению на сервере.
Размещение созданного сайта на сервере Как правило, провайдеры обеспечивают FTP-доступ к папкам сервера, где будут храниться HTML-документы и серверные модули. Это позволяет подключаться к серверу и работать с серверными папками, аналогично обычным каталогам жесткого диска. Поэтому размещение созданного сайта сводится к следующему:
Отладка модулей на сервере В принципе, отладка модулей на сервере не отличается от их отладки на локальном компьютере, и при успешном проведении последней и верном изменении всех путей при размещении сайта может быть востребована только из-за настроек безопасности, и поэтому должна вестись в тесном сотрудничестве с администратором сервера. Единственное неудобство может заключаться только в том, что доступ к запускаемому файлу, который выполнился некорректно, открывается не сразу, а спустя некоторое время. Поэтому каждый раз, при неудачном обращении к серверу, приходится ждать некоторое время, когда будет снят процесс. Если же у вас есть возможность доступа к Диспетчеру задач, и вы можете снимать процессы, то и эта проблема отпадает. ГЛАВА 12
Опираясь на предыдущий материал книги, можно сказать, что CGI — это действительно мощная технология, но... в рамках возможностей языка HTML. Ничего другого, кроме нехитрых возможностей форматирования, пусть даже и усовершенствованных каскадными страницами стилей, этот язык не предоставляет. В отличие от Web-страниц, подготовленных с помощью языка HTML, настольные приложения позволяют использовать всю функциональную мощь компьютера. Разработка и внедрение технологий, переводящих обычные Web-страницы в контейнеры для программ, — это та область, над которой работает компания Microsoft с 1996 года. В принципе, созданная концепция имеет намного более широкие возможности, нежели просто интеграция Web-технологий и классических Windows-программ, но мы будем описывать только те ее особенности, которые пересекаются с интересами создателя Web-систем. Итак, комплекс решений и стандартов, которые описывают внедрение объектов в Web-страницы, называется ActiveX. Посредством использования этого комплекса, можно создавать компоненты, которые скачиваются из Интернета и работают на клиентской машине, оперируя как пользовательскими данными, так и значениями, переданными в качестве параметров в теле Web-страницы.
Что такое ActiveX-элементы управления? Значительная доля программ использует широкие наборы визуальных компонентов, как имеющихся в инструментарии Delphi, так и созданных непосредственно программистами. Эти компоненты представляют собой программный интерфейс (описание полей, методов, событий и свойств) и реализационную часть. Подключая некие компоненты к среде Delphi, a именно, помещая их в Component Palette, разработчик делает их доступными к использованию во всех создаваемых приложениях. Однако эти компоненты могут использоваться только в данном экземпляре Delphi. Для их внедрения в программы, создаваемые в другой копии Delphi, компоненты нужно подключать вновь. Нельзя, например, перенести визуальный компонент в скомпилированном виде на другой компьютер и, затем, непосредственно из программы, обратиться к нему. Разумеется, перед визуальными компонентами Delphi не стоит задача быть готовыми к использованию из любой программы в "чистом виде". Они главным образом предназначены для инкапсуляции свойств и методов объектов и визуальной работы с ними в режиме проектирования. Эти замечания были даны, чтобы показать, что существует сама1проблема переносимости программных компонентов и их использования в различных программах. Многие идеи переносимости и использования модулей, написанных на одном языке программирования, в приложениях, созданных на другом, а также компонентной структуре программы нашли свое отражение в динамически подключаемых библиотеках (Dynamically Linked Library, DLL). Действительно, динамически подключаемая библиотека — это отдельный файл, в котором в скомпилированном виде хранится некий программный код. Этот код может создаваться с использованием объектно-ориентированного подхода. Более того, как и любое полнофункциональное приложение, библиотечный код имеет доступ к API (Application Program Interface, интерфейс прикладного программирования), что позволяет DLL работать даже с визуальными возможностями Windows. Однако, в отличие от обычного ЕХЕ-файла, динамически подключаемая библиотека не может работать "сама по себе". Она представляет собой набор функций, готовых к вызову из любого приложения! Именно набор функций, и не больше того. Естественно, эти функции могут выполнять сложные по структуре операции, могут даже создавать свои окна, но это будут ихокна! Это уже не окна приложения, которое обратилось к функции, содержащейся в DLL. He так-то просто заставить функции из динамически подключаемой библиотеки рисовать кнопки на форме главного приложения. Таким образом, мы видим, что динамически подключаемые библиотеки, несмотря на видимую компонентную природу, обладают следующим недостатком: нет возможности обратиться к их объектам, минуя функции вызова. Следовательно, нет возможности зарегистрировать и использовать в приложении объект, вызванный из DLL. Отсюда можно сделать вывод, что классическая динамически подключаемая библиотека представляет собой достаточно разрозненную по отношению к вызывающему приложению структуру. Для того чтобы реализовать возможность применения объектов, созданных одними разработчиками, с использованием некоторых средств разработки приложений в программах, которые написаны, возможно, совершенно другими людьми, даже не имеющими понятия, как работают указанные объекты, и более того, не ведающими об их внутренней реализации, и была создана ActiveX. Эта спецификация устанавливает правила создания элементов управления (в некотором роде — тех же компонентов), обеспечивающих готовность к внедрению в любую программу на любом этапе как проектирования, так и выполнения.
Цифровая подпись кода Поскольку ActiveX-элементы управления имеют полный доступ к ресурсам компьютера и могут не только занести опасный вирус, но и напрямую удалить файлы с жесткого диска, то процедура регистрации и запуска компонентов на компьютере привлекает повышенное внимание с точки зрения безопасности. Нельзя придумать универсального алгоритма проверки "вредоносности" загружаемого из сети Интернет кода, подобно тому, как это сделано в антивирусах. Не следует и просто ограничивать возможности ActiveX-компонентов, поскольку это снизит их функциональность и поставит перед конечными пользователями и разработчиками вопрос — а зачем тогда они (компоненты) нужны? Поэтому принята технология проверки не самого компонента, а его принадлежности конкретному разработчику при помощи цифровой подписи. Authenticode — так называется эта система. Юридическое или физическое лицо, которое желает разрабатывать и подписывать своей подписью ActiveX-компоненты должно пройти регистрацию в одной из сторонних фирм, занимающихся выдачей электронных подписей, например VeriSign (адрес сайта www.verisign.com). После регистрации разработчику выдаются файлы цифровых подписей, и при помощи специальной утилиты в созданные компоненты добавляется информация о наличии подписи и ее сроке действия. Теперь клиент, загрузивший на свой компьютер ActiveX-компонент, получит уведомление о том, что загруженный код действительно создан указанным автором, и в зависимости от того, доверяет ли он указанному лицу, клиент либо позволит запускать данный компонент на своем компьютере, либо нет. Это исключает вероятность подмены авторства у подписанных компонентов и позволяет предоставлять клиенту возможность удостоверяться в том, что загружаемая программа принадлежит указываемому автору.
Работа с ActiveX в Delphi Вообще говоря, создание элементов управления ActiveX представляет собой достаточно содержательную задачу. Причем не только, и порою даже не столько с точки зрения реализации алгоритма работы объекта, а именно создания интерфейса к нему. Существуют книги, содержащие сотни страниц с описанием процесса создания интерфейса к вашим объектам и последующего превращения их в элементы управления ActiveX. Однако эти книги посвящены языку C++. В Delphi все особенности создания элементов управления ActiveX скрыты от программиста. Поэтому все, что ему остается сделать, — это определить некоторые параметры генерации компонентов. Элементы управления ActiveX получаются путем генерации их из визуальных компонентов Delphi. Причем как стандартных элементов среды, так и созданных самостоятельно программистами. Разработчики, которые создавали вручную элементы управления с помощью других средств, по-настоящему оценят "волшебную палочку" мастера Delphi. К поистине замечательным возможностям Delphi следует отнести ActiveXForm Wizard (мастер создания ActiveX-форм). Эта утилита позволяет создавать приложение, которое в дальнейшем будет внедрено в Web-страницу, в режиме, практически не отличающимся от написания настольной программы. Кроме того, эта среда разработки приложений позволяет использовать ActiveX-элементы управления, зарегистрированные в системе. Это могут быть компоненты, созданные другими разработчиками и, возможно, на других языках программирования. Среда Delphi может автоматически преобразовывать их в визуальные компоненты и помещать в Component Palette, чтобы затем их можно было использовать в создаваемых программах аналогично другим компонентам. Поскольку наша задача заключается в описании создания Web-ориентированных приложений, то центральным моментом нашего изложения будут не элементы управления ActiveX, а приложения, которые можно внедрять в Web-страницы.
Создание ActiveX-форм По сути, Delphi предоставляет возможность для построения приложений, внедряемых в Web-страницы. Для того чтобы создать ActiveX-приложение, нужно выбрать следующую последовательность меню: File | New | ActiveX | ActiveX Form. В появившемся диалоговом окне (рис. 12.1) в поле New ActiveX Name следует вписать имя создаваемого приложения. Названия файла проекта и пока единственного модуля формы изменяются автоматически в соответствии с вводимым именем проекта, но могут быть произвольными. Позже, при сохранении файлов проекта на диске, их имена и расположение можно будет менять. Выпадающее меню с названием Threading Model содержит пункты, устанавливающие режим работы с потоками создаваемого элемента управления. Дело в том, что спецификация ActiveX разрешает одновременное использование серверов автоматизации в нескольких режимах:
Рис. 12.1. Диалоговое окно выбора параметров создаваемого ActiveX-приложения
Опция Make Control Licensed позволяет включить режим зашиты элемента управления ActiveX от нелегального использования путем добавления в дистрибутив элемента специального лицензионного файла. Опция Include Version Information определяет возможность идентификации версии создаваемого элемента управления. При включении этой опции компилятор каждую новую версию ActiveX-формы помечает новым номером, что особенно удобно при отладке, поскольку обращение к новой версии элемента управления исключает использование старой. Опция Include About Box предоставляет возможность создания вместе с основной формой Web-приложения маленькую форму с указанием короткой сопроводительной информации. После того как установлены необходимые опции и введено название проекта, можно нажимать кнопку ОК. При создании элементов управления открывается рабочая среда, несколько отличная от той, которая активизируется при написании обычного приложения. Прежде всего, вместо обычного проекта создается библиотека, как при написании DLL-модуля. Кроме того, создаваемая форма уже принадлежит не к классу TForm, а к классу TActiveFormx. В программном модуле уже описаны процедуры и функции, обеспечивающие установку и извлечение свойств формы.
Добавление внешних свойств в ActiveX-форму При разработке элементов управления реализуются достаточно сложные механизмы создания абстрактных интерфейсов и наследования. Разработчики среды Delphi избавили программистов от необходимости самостоятельно проектировать интерфейсы к создаваемым СОМ-серверам. Если вы хотите что-либо откорректировать в вами же предложенном варианте, то это можно сделать вручную, на базе уже сгенерированного кода. Доступ к переменным, которые используются в программе, может быть осуществлен только в том случае, если они объявлены свойствами класса, представляющего ActiveX-форму, а именно — ActiveFormX. Для добавления переменной нужно выполнить следующую последовательность шагов, вызывая соответствующие пункты меню: Edit | Add to Interface. При этом на экране появится окно, приведенное на рис. 12.2. Рис. 12.2. Меню добавления свойств, методов,событий Это меню позволяет добавить описание нового свойства (равносильно, как и метода или события) сначала в класс, являющийся интерфейсом класса формы (его наличие вызвано особенностью реализации СОМ-объектов), а затем в сам класс формы. При этом создается шаблон процедуры, которая позволяет выполнить какие-либо действия при установке этого свойства и функции, которая должна возвращать значение данного свойства. Эти два метода выполняют задачи, аналогичные возникающим при описании свойств классов языка Object Pascal. Для добавления свойства его нужно описать аналогично предварительной декларации при описании классов. Например, property Myinfo: byte. При нажатии кнопки ОК интерфейс и реализация создаваемого объекта обновятся, в соответствии с внесенными изменениями. Обратите внимание, что типы данных, используемые при описании свойств, не полностью совпадают с типами Object Pascal, и их перечень ограничен для совместимости с другими средствами разработки и типами, используемыми в Windows. В табл. 12.1 приведем наиболее используемые типы данных. Таблица 12.1. Некоторые типы данных, используемые при обмене информацией между сервером автоматизации и клиентом
При работе с внешними переменными нельзя использовать тип string. Вместо него, как видно из таблицы, можно применить нуль-терминованные строки WideString.
Внедрение элементов управления в Web-страницу Для того чтобы созданный объект был доступен клиенту, необходимо его разместить на сервере, а в Web-странице создать соответствующее обращение к нему. Как происходит загрузка компонентов ActiveX Когда пользователь загружает Web-страницу, на которой есть ссылка на элемент управления ActiveX, браузер проверяет настройки безопасности компьютера, и, если они позволяют, посылает на сервер запрос на передачу двоичного кода скомпилированного компонента. Сервер, получив запрос, проверяет, доступен ли запрашиваемый файл, и если он доступен, то передает его клиенту. После получения кода компонента он должен быть зарегистрирован в системе (реестре). Об этом, опять-таки исходя из настроек безопасности, выдается предупреждение клиенту, с указанием информации о наличии цифровой подписи, и при существовании последней, информация о производителе загруженного элемента управления. Если пользователь разрешит, то элемент управления регистрируется и запускается на выполнение. При этом, как правило, его окно отображается в заранее определенной области Web-страницы. Кроме того, браузер передает ему параметры, которые могли быть указаны на Web-странице, в которую внедрен элемент управления ActiveX. Благодаря наличию такой возможности, серверу достаточно динамически формировать HTML-код, с указанием значений используемых параметров, чтобы заставить динамически работать элемент управления ActiveX. Процесс внедрения ActiveX-компонента осуществляется с использованием элемента OBJECT языка HTML, которому соответствует тег <OBJECT>, атрибуты которого описаны в следующем разделе.
Тег <OBJECT>языка HTML Для того чтобы внедрить в документ HTML различные ActiveX-объекты или Java-апплеты, используется тег <OBJECT>. Он имеет следующие основные атрибуты:
К этим атрибутам, характеризующим базовые сведения об объекте, добавляются параметры, которые автоматически передаются браузером объекту для использования. Для этого применяется элемент PARAM, имеющий основные атрибуты:
В отличие от элемента OBJECT, где наличие конечного тега обязательно, использование последнего в элементе PARAM запрещено. Пример внедрения элемента управления ActiveX в Web-страницу приведен в листинге 12.1. Листинг 12.1. Пример внедрения ActiveX-элемента управления в Web-страницу <HTML> <Н1> Пример внедрения ActiveX-формы в Web-страницу</Н1> <p><OBJECT classid="clsid:C9F21C24-DA34-4D93-93CD-75F5BOD2AD68" codebase="http://localhost/ax/axProjl.cab#version=l,0,2,0" width=429 height=275 align=center hspace=0 vspace=0> <PARAM NAME="MyParametr" VALUE="DynamValue"> </OBJECT> </HTML> Устанавливая значения параметров динамически, с помощью CGI-техно-логий, можно добиться интерактивной работы таких форм не только в контексте настольного приложения, но и в режиме клиент-серверного взаимодействия.
Автоматическое создание Web-страниц с внедряемыми компонентами Для облегчения процесса внедрения ActiveX-элементов управления в Web-страницы, в Delphi предусмотрена возможность для автоматической генерации HTML-файлов, содержащих внедряемые компоненты. Благодаря этому, при отладке работы элементов управления теряется необходимость в ручном редактировании HTML-документов, и программист всегда имеет под рукой готовый пример внедрения. Поэтому все, что остается ему сделать, — это перенести фрагмент сгенерированного кода, описывающего элемент OBJECT, в создаваемую Web-страницу. Прежде чем генерировать Web-страницу, следует заполнить несколько следующих опций, открывающихся при выборе пунктов меню Project | Web Deployment Options...
Пример реализации элемента управления ActiveX В контексте реализации нашей информационной системы создадим форму, являющуюся элементом управления ActiveX для локальной печати пользователем счета, выставляемого по результатам сделанных им заказов. На данном этапе форма должна содержать только элементы, необходимые для получения и отображения данных. Информация о заказчике будет передаваться серверу посредством сокетов, использование которых будет описано в гл. 13.
Дата добавления: 2014-12-29; Просмотров: 568; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |