Взаимодействие с компонентами
ActiveX
Функциональные возможности активных серверных страниц не ограничиваются средствами VBScript и встроенными объектами, описанными в этой главе. Метод CreateObject объекта Server в ваших серверных страницах выполняет ту же роль, что и функция Create0bject() в VB-приложениях. Он позволяет использовать возможности как стандартных OLE приложений-серверов, так и пользовательских компонентов ActiveX (ActiveX DLL). Очень важно, что возможно взаимодействие и с компонентами ActiveX EXE, но при этом может возникнуть ряд проблем. ActiveX DLL являются активными (in-process) компонентами - они загружаются вместе с вызывающим приложением и становятся его частью. Компоненты ActiveX EXE являются пассивными (out-of-process) — независимо от числа вызвавших приложений в оперативной памяти всегда присутствует только один экземпляр компонента. Это может привести к трудноразрешимым проблемам. Например, когда одно приложение присваивает значение глобальной переменной, а другое - изменяет это значение. Поэтому чрезвычайно сложно разработать компонент ActiveX EXE, работающий корректно в любой ситуации.
В гл. 15 мы разработали компонент StringClass (проект NumStr на компакт-диске). В качестве напоминания в табл. 22.2 приведено описание трех методов компонента StringClass для манипулирования числами и строками.
Таблица 22.2. Методы компонента StringClass
Метод | Действие | ||
Number2String(number)
LowerCaps(string) Integer2Binary(number) | Преобразует переданный ему числовой аргумент в строку и возвращает ее. Если вызвать метод с числом 3462 в качестве аргумента, то возвращается значение "три тысячи четыреста шестьдесят два"
Преобразует строку аргумента в нижний регистр (первые буквы всех слов становятся прописными) и возвращает новую строку. Если передать этому методу в качестве аргумента строку "MASTERING visual basic", то будет возвращена строка "Mastering Visual Basic" Преобразует целочисленный аргумент в двоичное число и возвращает двоичное значение в виде строки. Если передать ему в качестве аргумента число 312, то результатом будет строка "000100111000" (без кавычек) |
Чтобы использовать компонент StringClass в ASP-файле, сначала необходимо создать DLL-файл и зарегистрировать его в вашей системе. Процесс создания и регистрации DLL описан в гл. 15.
Для доступа к методам компонента StringClass необходимо создать объектную переменную с помощью следующего оператора.
<%
Set STR=Server.CreateObject ("NumStrings.StringClass")
%>
Переменная
STR служит шлюзом для методов, предоставляемых классом StringClass. Преобразовать число в строку можно следующим образом.
<% STR.Nuniber2String(4325) %>
На рис. 22.11 показана страница NUMSTR.ASP, которая использует метод Number2String компонента StringClass для отображения чисел в виде строк. Обратите внимание: метод Number2String возвращает строку в нижнем регистре. Для перевода первых букв всех слов в верхний регистр воспользуйтесь методом LowerCaps. Можно объединить вызовы обоих методов в одно выражение.
<% STR.LowerCaps(STR.Number2String(4325)) %>
Рис. 22.11. Страница NUMSTR.ASP взаимодействует с компонентом StringClass, расположенным на сервере, для форматирования чисел
Полный исходный текст файла NUMSTR.ASP находится в папке этой главы на компакт-диске.
Для тестирования этого файла необходимо скопировать его с компакт-диска в корневую папку Web-сервера и открыть его с помощью Internet Explorer, задав URL файла в поле Address броузера (127.0.0.1/numstr.asp). Для регистрации компонента StringClass необходимо создать DLL, а затем зарегистрировать ее с помощью утилиты REGSVR32. Откройте проект NumStr с помощью Visual Basic и выберите команду Build StringClass.dll меню File. После того как DLL-файл создан, закройте Visual Basic, откройте окно DOS и перейдите в папку с DLL-файлом. Затем напечатайте следующую команду.
С:\WINDOWS\SYSTEM\REGSVR32 STRINGCLASS.DLL
Более подробно о регистрации компонентов ActiveX можно прочесть в параграфе "Регистрация компонентов ActiveX " гл. 15.
Как только компонент зарегистрирован, любой сценарий, выполняемый на вашем сервере, может обращаться к его методам, как к методам системных компонентов. Так вы можете зарегистрировать все компоненты, разработанные в гл. 15. Обратите внимание: перед использованием эти компоненты загружать не нужно.