Лекция ASP 10: Написание компонентов самостоятельно
Автор:Eve Cole
Время обновления:2009-05-30 19:54:53
В предыдущем материале мы узнали, как использовать компоненты. Хотя в Интернете много компонентов, часто за небольшой компонент нужно заплатить доллары США, а компонентов отечественного производства слишком мало. Если вы хотите потратить немного юаней, Вы не можете найти место. Это легко, забудьте, просто напишите сами. На самом деле писать компоненты не сложно, это просто вопрос того, как начать писать низкоуровневые компоненты и постепенно начинать писать высокоуровневые компоненты. Для написания серверных компонентов ActiveX есть множество инструментов на выбор: Visual Basic, C++, Java и т. д. Здесь мы выбираем самый простой VB6.0. Если вы раньше использовали VB, вы можете создать его менее чем за 1 час. . Виджет выходит.
1. Быстрое написание компонентов — самые основные шаги по написанию компонентов. В этой части в основном объясняются основные шаги по написанию компонентов. Если у вас есть желание учиться дальше, обратитесь к разделу «Создание ActiveX DLL» в справке VB6.0. документ (документация в библиотеке MSDN. Имя файла — Vbcon98.chm).
Цель: Написать простейший компонент сумматора. Этот компонент имеет два свойства и один метод. Начнем с самого знакомого места: предположим, что этот компонент уже существует, и посмотрим на код, использующий этот компонент в ASP:
<%
Дим объектная сумма
'Сначала создайте компонент, идентификатор компонента — TestDll.Sum
Установить objSum = Server.CreateObject("TestDll.Sum")
'Запомните "TestDll", "Sum" в TestDll.Sum.
objSum.augend = 10.52 'атрибут augend представляет собой слагаемое
objSum.addend = 382.41 'атрибут addend является добавлением
Result = objSum.Plus 'Плюсная сумма метода
Ответ.Записать результат
Установить objSum = Ничего
%>
Обязательно запомните эти ключевые слова: TestDll, Sum, augend, addend, Plus, которые будут тесно связаны с следующей работой. Вот подробные шаги:
1. Запустите VB6.0, в меню «Файл» нажмите «Новый проект» → в диалоговом окне «Новый проект» дважды щелкните значок «ActiveX DLL» → Visual Basic автоматически добавит модуль класса в новый проект Class1 (его можно увидеть в «Проводнике проектов», как показано на рисунке 1).
2. Нажмите клавишу F4, чтобы открыть окно свойств. Дважды щелкните атрибут «Имя» и измените «Класс1» на «Сумма».
3. В меню «Проект» выберите «Свойства проекта 1», чтобы открыть диалоговое окно «Свойства проекта». Заполните TestDll в «Имя проекта» и «Создать пример ActiveX DLL» в «Описание проекта». Как показано на рисунке 2.
Совет: Вы понимаете значение двух идентификаторов TestDLL.Sum в компоненте создания ASP?
4. В меню «Файл» нажмите «Сохранить проект» и сохраните файлы проекта со следующими именами: SetupDll.cls и SetupDll.vbp.
5. Создайте свойства для класса Sum:
(1) В меню «Инструменты» выберите «Добавить процесс», чтобы открыть диалоговое окно «Добавить процесс». В поле «Имя» введите augend, нажмите «Свойства», а затем нажмите «ОК», как показано на рисунке 3 (Примечание: текущий фокус должен находиться в окне кода, в противном случае меню «Добавить процедуру» будет недействительным). ).
(2) В меню «Инструменты» выберите «Добавить процесс», чтобы открыть диалоговое окно «Добавить процесс». В поле «Имя» введите дополнение, нажмите «Свойства», а затем нажмите «ОК».
6. Создайте метод для класса Sum:
В меню «Инструменты» нажмите «Добавить процедуру», чтобы открыть диалоговое окно «Добавить процедуру». В поле «Имя» введите «Плюс». В качестве типа вы можете выбрать «Подпрограмма» или «Функция». В этом примере, поскольку вы хотите вернуть сумму сложения и слагаемого, нажмите «Функция», а затем нажмите «Функция». Нажмите ОК.
Итак, пять ключевых слов из предыдущего кода ASP использованы, и теперь вы многое понимаете.
7. Все коды в окне Sum code модуля класса следующие:
Опция явная
Частный mdbl_augend как двойной
Частный mdbl_addend как двойной
Публичная собственность Получить augend() как двойную
augend = mdbl_augend
Конечная собственность
Публичная собственность Let augend (ByVal vNewValue As Double)
mdbl_augend = vNewValue
Конечная собственность
Публичная собственность Get addend() как двойная
addend = mdbl_addend
Конечная собственность
Открытое свойство Let addend (ByVal vNewValue As Double)
mdbl_addend = vNewValue
Конечная собственность
Публичная функция плюс()
Плюс = добавить + добавить
Конечная функция
Вы заметили, что приведенный выше код немного отличается от кода, сгенерированного системой, главным образом потому, что часть Public Property Get augend() As Variant заменена фактическим типом данных Double.
Примечание. Фактически, когда выполняется инструкция x = objSum.augend, вызывается процедура Property Get для получения значения mdbl_augend. Когда выполняется инструкция objSum.augend = 10.52, вызывается процедура Property Let и присваивается значение 10.52. в mdbl_augend.
8. Последний шаг — нажать «Создать .Dll(K)...» в меню «Файл», чтобы создать файл SetupDll.dll.
На этом этапе компонент создан. Теперь мы можем сначала написать тестовый проект на VB6, чтобы проверить правильность файла.
1. В меню «Файл» нажмите «Новый проект» → дважды щелкните «Стандартный EXE».
2. В меню «Проект» нажмите «Ссылка» → нажмите кнопку «Обзор» в диалоговом окне «Ссылка», выберите только что скомпилированный файл «SetupDll.dll» → нажмите «ОК».
3. Наконец, напишите следующий код в окне кода:
Опция явная
Частная подформа_Load()
Dim objSum как TestDll.Sum
Установить objSum = Новая сумма
objSum.augend = 10,52
objSum.addend = 382,41
MsgBox objSum.Plus
Конец субтитра
Запустите его, и результат будет правильным. Далее мы используем этот компонент в ASP. Скопируйте файл SetupDll.dll на веб-сервер и используйте команду «Regsvr32.exe setupdll.dll», чтобы зарегистрировать компонент, а затем запустите программу ASP, указанную в начале этого раздела, в браузере. Если это не сработает, вы можете сначала попробовать упаковать его с помощью инструмента упаковки VB6, а затем установить. Компоненты будут автоматически зарегистрированы, а также автоматически будут установлены некоторые необходимые рабочие файлы VB6.
Примечание. Все программы в этой части находятся в файле Setupdll.zip загружаемого пакета.
В приведенном выше примере мы используем процедуры свойств Property Get и Property Let для добавления свойств (Property Get считывает значение свойства, а Property Let присваивает значение свойству. Если вам нужно проверить установленное значение, вы можете это сделать). напишите соответствующий код в коде Property Let. Например, следующий код:
Публичная собственность Let augend (ByVal vNewValue As Double)
Если vNewValue < 100 Тогда
MsgBox «Что вы делаете! Если значение меньше 100, просто посчитайте сами».
Еще
mdbl_augend = vNewValue
Конец, если
Конечная собственность
2. Другие способы добавления свойств и методов к компонентам
1. Самый простой способ добавить атрибуты: добавить общедоступные переменные, как в приведенном выше примере, самый простой код выглядит следующим образом:
Опция явная
Public augend As Double ' Добавить атрибут augend
Публичное дополнение As Double 'Добавить атрибут добавления
Публичная функция Plus() как двойная
Плюс = добавить + добавить
Конечная функция
Однако этот метод может устанавливать только свойства чтения/записи и не может проверять назначенное значение. Если вам нужно добавить только атрибут, доступный только для чтения: в приведенном выше примере удалите процесс Public Property Let augend(ByVal vNewValue As Double), тогда augend станет атрибутом, доступным только для чтения, и ему нельзя будет присвоить значение. Конечно, если вы хотите добавить свойство, доступное только для записи, просто удалите процедуру Property Get.
2. Использование утилиты построения классов
Существует также инструмент для добавления свойств и методов в VB6: в меню «Надстройка» нажмите «Диспетчер надстроек», во всплывающем диалоговом окне «Диспетчер надстроек» выберите «Утилита VB Class Builder» и load Выберите «Загрузить/Выгрузить» в поведении (рис. 4). Затем нажмите «Утилита построителя классов» в меню «Надстройки», и вы узнаете, как ее использовать.
3. Расскажем вам несколько вопросов, на которые стоит обратить внимание.
1. Приведенный выше пример представляет собой чрезвычайно простой компонент. Более практичные компоненты обычно имеют хотя бы один модуль.
2. Если вы не будете осторожны, Visual Basic может создавать «однопоточные» компоненты.
Возможно, одной из наиболее распространенных ошибок является использование компонентов, не предназначенных для работы под ASP, например «однопоточных» компонентов. Поэтому убедитесь, что для модуля Threading установлено значение «Apartment Threading» на вкладке «Общие» страницы «Свойства проекта».
3. По поводу ошибки "несоответствие типов".
Хорошим предложением будет объявить параметр Out как Variant. Обратите внимание, что в приведенном выше примере он не задан.
4. Об использовании глобальных переменных.
Старайтесь избегать использования глобальных переменных в компонентах. В терминах Visual Basic это означает, что в стандартном модуле .BAS нет общедоступных или глобальных переменных. Потому что глобальные переменные не являются действительно глобальными. У каждого потока есть своя копия, и если в одном потоке выполняется несколько методов, они будут видеть одни и те же переменные, в противном случае они будут иметь доступ к разным копиям этих переменных; Это означает, что вы можете присвоить значение глобальной переменной (в потоке A), но другой ее пользователь (выполняющий в потоке B) не сможет увидеть новое значение. Причина этого в том, что Visual Basic внутренне использует «Локальное хранилище потока (TLS)» для ссылки на глобальные переменные. Это означает, что каждый поток имеет свою собственную копию переменной Public, и поскольку существует несколько ее копий, глобальные данные на самом деле не являются «глобальными». То есть пользователи, работающие в одном потоке, будут иметь доступ к одной и той же переменной, ожидают они этого или нет.
Наконец, кстати, VB6.0 представляет новый тип приложений Visual Basic: приложение IIS. Вы можете создавать приложения IIS так же, как вы создаете библиотеки ActiveX. Любое приложение, созданное с помощью Active Server Pages, можно создать в среде разработки VB. Вы можете полностью заменить все Active Server Pages одним приложением VB.