1. Введение.
Среда выполнения серверных сценариев проста и удобна в использовании, не требует компиляции и подключения, сценарии можно запускать непосредственно на стороне сервера, она поддерживает многопользовательскую и многопоточную работу и широко используется. в веб-разработке. Компоненты на стороне сервера отличаются от компонентов на стороне клиента. Клиентские компоненты передаются по сети, для своей работы используют HTML и доступны только в IE. Но серверный компонент работает на стороне сервера и выполняет на сервере различные операции. Таким образом, его могут использовать все браузеры, и он зависит от сервера, а не от браузера. Однако, поскольку сценарии ASP имеют обычный текстовый формат, злоумышленники могут легко увидеть содержимое страницы, которое они не должны видеть через исходный код. Поэтому защита исходного кода ASP очень важна. Инкапсуляция кода ASP в DLL не только ускоряет выполнение кода ASP, но и защищает исходный код. Когда IIS запрашивается на выполнение программы ASP, он сначала находит код между тегами в файле ASP и выполняет его (это также может быть код между ними). Если эта программа ASP вызывалась ранее, она будет использовать скомпилированную программу в памяти для возврата HTML-кода пользователю. Если нет, она будет перекомпилирована. Это существенно экономит ресурсы сервера.
2. Способ реализации
Запустите VB и выберите значок ActiveX. Этот значок можно найти в новом проекте! VB предоставит имя проекта по умолчанию (project1) и имя класса (class1). Прежде чем начать, сначала подтвердите, что у нас есть библиотека Microsoft ActiveX Data Object 2.0, которая очень полезна в нашей программе. В меню выберите «Проект», затем выберите там «Ссылка», появится окно «Ссылка», выберите «Библиотека Microsoft ActiveX Data Object 2.0».
Теперь у нас есть собственный проект (project1) и имя класса (class1). Мы будем использовать их имена для ссылки на этот компонент в коде ASP в будущем. В ASP мы цитируем это следующим образом:
Set ObjReference = Server.CreateObject("ProjectName.ClassName")
Чтобы использовать методы ASP в классе, необходимо написать в этом классе функции инициализации и завершения. Введите следующий код: в список программ
Private Sub Class_Initialize() и Private Sub Class_Terminate() в Class1.cls
преобразуют ключевые функции кода ASP в динамическую библиотеку (.dll), частично скрывая исходный код ASP. Например: код, введенный в Global.bas и Class1.cls в листинге программы (основная функция кода — получение записей в базе данных и их отображение).
Выберите «Файл» → «Создать статью.dll» → выберите каталог для сохранения в раскрывающемся меню VB. Найдите item.dll и скопируйте его в папку system32 системного диска. Последний шаг — зарегистрировать DLL-файл. В меню «Пуск» выберите «Выполнить» и введите regsvr32 c:winntsystem32article.dll.
3.
Код в списке программ Global.bas:
Публичный objContext Как ObjectContext
Публичное приложение Как ASPTypeLibrary.Application
Публичный сервер Как ASPTypeLibrary.Server
Открытый сеанс Как ASPTypeLibrary.Session
Открытый ответ Как ASPTypeLibrary.Response
Открытый запрос Как ASPTypeLibrary.Request
Код в Class1.cls:
Частный подкласс_Initialize()
При ошибке Возобновить следующий
Установить objContext = GetObjectContext
Установить Приложение = objContext.Item("Приложение")
Установить Сервер = objContext.Item("Сервер")
Установить Сессию = objContext.Item("Сеанс")
Установить Запрос = objContext .Item("Запрос")
Set Response = objContext.Item("Response")
End Sub
Private Sub Class_Terminate()
При ошибке Возобновить следующий
Установить Приложение = Ничего не
установлено Сервер = Ничего не
установлено Сеанс = Ничего не
установлено Запрос = Ничего не
установлено Ответ = Ничего не
установлено objContext = Ничего
Конец Sub
Public Sub AspClassInit()
При ошибке GoTo Err
Set conn = Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("Article .mdb")
conn.Open strcon
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "выбрать * из порядка статей по идентификатору статьи desc"
rs.Open sql, conn, 1, 1
Response.Write "<html> " & vbCrLf
Response.Write "<head>" и vbCrLf
Response.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbCrLf
Response.Write "<title>Система управления статьями-CSSTUDIO</title>" и vbCrLf
Response.Write "</head>" и vbCrLf
Response.Write "<body bgcolor=""#FFFFFF"" topmargin=""0"">" & vbCrLf
Response.Write "<table width=""100%"" border=""0"" cellpadding=""2"" cellpacing=""0"">" & vbCrLf
Response.Write " <tr>" и vbCrLf
Response.Write " <td width=""742"" height=""20"">Название статьи</td>" & vbCrLf
Response.Write " <td width=""90"">Щелкните</td>" и vbCrLf
Response.Write " <td width=""145"">Добавить дату</td>" & vbCrLf
Response.Write " </tr>" и vbCrLf
Response.Write "</table>" и vbCrLf
Пока не rs.EOF и строки < rs.PageSize
Response.Write "<table width=""100%"" border=""0"" cellpacing=""0"" cellpadding=""0"">" & vbCrLf
Response.Write " <tr>" и vbCrLf
Response.Write " <td width=""747"" height=""20"">☆<a href=""view.asp?id="
Response.Write rs("ArticleID")
Response.Write """>" & vbCrLf
Ответ. Напишите " "
Response.Write rs("Название")
Response.Write "</a></td>" и vbCrLf
Response.Write " <td width=""94"">"
Response.Write rs("клик")
Response.Write "</td>" и vbCrLf
Response.Write " <td width=""148"">"
Response.Write rs("Добавить дату")
Response.Write "</td>" и vbCrLf
Response.Write " </tr>" и vbCrLf
Response.Write "</table>" и vbCrLf
rs.MoveNext
Венд
Response.Write "</body>" и vbCrLf
Response.Write "</html>" & vbCrLf
rs.Close
Set rs = Ничего
conn.Close
Set conn = Ничего
Выход Sub
Ошибка:
Если номер ошибки = -13572468, то выйти из подпрограммы
возобновить следующую
конечную подписку
Код в index.asp после использования Article.dll:
<%Dim AspTransBuilderObject
Set AspTransBuilderObject = Server.CreateObject("article.Class1")
AspTransBuilderObject.AspClassInit
Set AspTransBuilderObject = Nothing%>
Код в index.asp перед использованием Article.dll:
<% Set conn=Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("Article.mdb")
conn.Open strcon %>
<% Set rs = Server.CreateObject ("ADODB.Recordset")
sql="выбрать * из порядка статей по идентификатору статьи desc"
rs.Open sql, Conn,1,1 %>
<html>
<голова>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Система управления статьями-CSSTUDIO</title>
</голова>
<body bgcolor="#FFFFFF" topmargin="0">
<table width="100%" border="0" cellpadding="2"
клеткиспейсинг="0">
<тр>
<td width="742" height="20">Название статьи</td>
<td width="90">Нажмите</td>
<td width="145">Добавить дату</td>
</tr>
</таблица>
<% Пока не Rs.Eof And Rows<Rs.PageSize %>
<table width="100%" border="0" cellpacing="0"
ячейка="0">
<тр>
<td width="747" height="20">☆<a href="view.asp?id=<%
= rs("ID статьи") %>">
<% =rs("title") %></a></td>
<td width="94"><% = rs("click") %></td>
<td width="148"><% = rs("Дата добавления") %></td>
</tr>
</таблица>
<% рупий.MoveNext
Венд %>
</тело>
</html>
<% rs.close
установить rs=ничего
конн.закрыть
установить conn=ничего %>
4. Заключение
Поскольку эти коды выполняются на стороне сервера, клиенту не нужно ничего устанавливать. Это лишь небольшой пример того, чего можно достичь с помощью ActiveX DLL. Вы можете писать свои собственные более крупные компоненты, а также использовать множество элементов управления в VB. Давайте использовать компоненты для расширения функционала нашей программы. Так же надеюсь увидеть больше компонентов от наших китайцев! Я надеюсь, что эта статья послужит отправной точкой.