Visual Basic, .NET, ASP, VBScript
 

   
 

.NET разработчик, автор множества статей. В ранние годы (2001 - 2003) занимался разработкой на Visual Basic 6 и Active Server Pages, с 2003 года в основном занят разработкой корпоративного программного обеспечения на платформе Microsoft .NET (C#, VB.NET; ASP.NET, Silverlight). Личный блог: http://pavel.surmenok.com/

 
     
   
 

Введение

Как вы, наверное, уже знаете, Microsoft продвигает в массы своё новое детище под названием .NET. Помимо таких технологий, как ADO+, DGI+, Microsoft .NET включает в себя ASP .NET (или ASP+). Это обновлённая версия ASP (Active Server Pages, Активные серверные страницы). В этой статье будут рассмотрены возможности ASP+

 

Коротко об изменениях

Ниже перечислены основные изменения технологии.

·         Теперь поддерживается синтаксис компилируемых строго типизируемых языков.

·         Программный код и HTML разделены. Это решает многие проблемы. Например, теперь дизайн Web-страницы может изменять человек, далёкий от программирования, и наоборот - программист может изменять программный код, не задумываясь о дизайне. Да и код стало намного легче не только читать, но и писать.

·         Появились встроенные инструменты отладки приложений, которых так не хватало в ASP.

·         Web-приложения, написанные на ASP .NET, могут использовать всю мощь .NET Framework, которая включает множество классов, реализующих разные цели от создания строковых переменных и форматирования даты до парсинга XML и доступа к базам данных.

·         Приложения ASP .NET обладают повышенной безопасностью. В частности, вы можете забыть про так называемый «кошмар DLL», связанный с контролем версии библиотек COM.

·         Ну и конечно же существует куча мелких изменений, с которыми вам предстоит познакомиться.

 

Языки программирования

Предыдущие версии ASP поддерживали синтаксис скриптовых языков программирования VBScript и JScript. Их главные отличия от своих прямых родственников Visual Basic и Java заключается в том, что они интерпретируемые и не строго типизированные.

В ASP .NET применяются компилированные строго типизированные языки. То есть теперь возможно такое объявление переменных:

 

Dim ID As Integer

Dim Nick As String

 

ASP .NET поддерживает синтаксис трёх языков программирования: Visual Basic .NET, Visual C++ .NET и совершенно новый язык C# (читается как «си-шарп»). C# основан на языке C++, он совместил в себе мощь C++ и простоту Visual Basic. Подробнее о C# читайте в MSDN.

 

Web формы

Web-формы - это хорошо вам знакомые Web-страницы, которые содержат HTML и программный код. В ASP+ Web-форма представляется классом WebForm. Он расположен на верху объектно-ориентированной модели ASP .NET.

Web-формы содержат элементы управления. Ими могут быть знакомые вам кнопки, переключатели, флажки, надписи (реализуются HTML-тэгом  span), текстовые поля и др. В ASP вы могли обрабатывать события элементов управления на стороне клиента. А в ASP .NET вы можете создавать обработчики событий элементов Web-формы, выполняемые на сервере! Рассмотрим небольшой пример использования обработчика события на стороне сервера:

 

<html>

<script Language="vb" RunAt="server">

    Sub SubmitButton_Click(Source As Object, E As EventArgs)

        Response.Write ("Ваше имя: " & Name.text)

    End Sub

</script>

<body>

<form method="post" runat="server">

    Введите Ваше имя: <asp:textbox id="Name" runat="server" /><br>

    <asp:Button text="Enter"

           OnClick="SubmitButton_Click" runat="server" />

</form>

</body>

</html>

 

Здесь использованы элементы управления asp:Button и asp:Textbox. Атрибут RunAt=”server” в тэгах Form, asp:Button, asp:Textbox и Script показывает ASP+, что скрипт и элементы управления, расположенные на форме, будут выполняться  на сервере. Элемент asp:Button имеет атрибут OnClick, в котором указано имя процедуры для обработки события Click.

Фактически, браузер при нажатии кнопки создаёт форму с информацией о состоянии элементов управления, которая отсылается методом HTTP-POST серверу. Сервер передаёт управление процедуре SubmitButton_Click, а затем клиенту отправляется новая страница.

Поскольку события могут обрабатываться на сервере, решаются некоторые проблемы, связанные с совместимостью браузеров.

Объект Page представляет собой страницу и также имеет некоторые события. Событие Load возникает при загрузке страницы. А событие Unload возникает при закрытии страницы. Синтаксис обработки этих событий выглядит так:

 

<Script language=”vb” RunAt=”server”>

        Sub Page_Load (Source As Object, E As EventArgs)

                       ‘Код, выполняемый при загрузке страницы

        End Sub

        Sub Page_UnLoad (Source As Object, E As EventArgs)

                       ‘Код, выполняемый при закрытии страницы

        End Sub

</Script>

 

Web-контролы

В ASP вы могли использовать только HTML контролы, например, TextBox, Password, RadioButton. В ASP .NET появились Web-контролы. Web-контрол генерирует некоторый HTML-код, который будет передан браузеру. Web-контролы определяются тегом, начинающимся с “asp:”. Например:

 

<asp:TextBox Text=”Например” RunAt=”Server”>

 

Web-контролы можно условно разделить на 4 группы.

·         Внутренние контролы

·         Списки

·         Расширенные или «богатые» контролы

·         Контролы проверки данных

Внутренние контролы являются аналогами HTML контролов. Они включают в себя LinkButton, ImageButton, HyperLink, TextBox, CheckBox, RadioButton, DropDownList, ListBox, Image, Label, Panel, Table, TableRow и TableCell. Внутренние контролы не сильно отличаются от своих HTML собратьев. Например, Web-контрол CheckBox представляет собой HTML контрол CheckBox с текстом справа от флажка. Ещё одним отличием является то, что HTML контролы не могут выполняться на стороне сервера.

Списки включают следующие контролы: Repeater, DataList, DataGrid, RadioButtonList и CheckBoxList.

Расширенные контролы представляют AdRotator и Calendar. Calendar - это, как нетрудно догадаться, обыкновенный календарь. Контрол AdRotator служит для отображения баннеров. По существу, AdRotator - это заготовка баннерной системы.

Контролы проверки данных используются для проверки данных, вводимых в поля формы. Это такие контролы, как RequiredFieldValidator, CompareValidator, RangeValidator, RegularExpressionValidator, CustomValidator и ValidationSummary.

 

Отладка

Как однажды заявил Билл Гейтс, «безошибочность кода можно гарантировать, если код занимает не более пяти строк». Конечно, это утверждение нельзя считать абсолютно точным, но факт остаётся фактом: практически в любом приложении может встретиться ошибка. Поэтому ни в коем случае нельзя пренебрегать отладкой программ.

Отладка ASP-приложений являлась довольно трудной задачей. Пошаговое выполнение Web-приложений невозможно. Отладочную информацию приходилось выводить в основной поток с помощью метода Write объекта Response. А после отладки нужно было выискивать и удалять из кода строки вывода отладочной информации.

В ASP .NET разработчики Microsoft включили мощную систему отладки! Теперь можно без затруднений выводить необходимую информацию, а после отладки легко избавиться от её следов.

Отладка может проходить на двух уровнях: уровень страницы и уровень приложения.

При отладке на уровне страницы вы должны добавить в директиву Page параметр Trace=”True”. Например:

 

<% Page Language=”VB” Trace=”True” %>

<HTML>

<BODY>

Отлаживаемая страница

</BODY>

</HTML>

 

Отладочная информация выводится в конце страницы. Разработчик имеет право выводить свою информацию с помощью методов Write и Warn объекта Trace. Эти методы имеют по два параметра типа String. Первый параметр указывает имя категории, в которой будет отображено выводимое сообщение. Второй параметр - собственно, выводимое сообщение. Отличие между методами Write и Warn состоит в том, что Write выводит текст чёрного цвета, а Warn - красного.

 

<% Page language="vb" Trace="True" %>

<HTML>

<BODY>

Текст

<Script language=”VB” RunAt=”Server”>

        Sub Page_Load (Source As Object, E As EventArgs)

                       Trace.Write (“Test”, “Выведено методом Write”)

                       Trace.Warn (“Test”, “Выведено методом Warn”)

        End Sub

</Script>

</BODY>

</HTML>

 

Результат выполнения указанного выше кода вы можете увидеть на рис. 1.

 

 

Рис. 1. Пример отлаживаемой страницы

 

Чтобы убрать отладочную информацию со страницы нужно удалить параметр Trace из директивы Page.

Параметры отладки уровня приложения устанавливаются в файле Config.Web. Для того, чтобы включить отладку, нужно вставить в файл Config.Web тэг Trace с атрибутом Enabled=”True”. Тэг Trace может содержать атрибут PageOutput. Если он установлен в “True”, то отладочная информация будет отображаться на страницах. Если же он установлен в “False”, то информация будет выводиться в файл Trace.axd.

 

Электронная почта

Часто бывает необходимо отправлять электронную почту из Web-приложений. Чаще всего E-mail-сообщения отправляются автоматически без участия администратора и содержат некоторые уведомления, например, запрос подтверждения покупки или забытый пароль.

Для отправления писем в ASP .NET используются классы SMTPMail и MailMessage из пространства имён System.Web.Mail.  Класс MailMessage используется для формирования сообщения. Ниже приведены его свойства.

 

Свойство

Тип данных

Описание

Attachment

IList

Список вложенных файлов.

Bcc

String

Адреса для отправки скрытых копий писем.

Body

String

Тело письма.

BodyEncoding

Encoding

Кодировка тела письма.

BodyFormat

MailFormat

Формат тела письма. Может принимать значения Text и HTML.

Cc

String

Адреса для отправки копий писем.

From

String

Адрес отправителя.

Priority

MailPriority

Приоритет письма. Может принимать значения High, Low и Normal.

Subject

String

Тема письма.

To

String

Адреса для отправки письма.

 

Класс SmtpMail используется непосредственно для отправки письма. Свойство SmtpServer устанавливает адрес Smtp-сервера, используемого для отправки письма. А метод Send отправляет письмо. Единственный параметр метода - объект типа MailMessage, то есть сообщение для отправки. Ниже представлен небольшой пример отправки почты из ASP+.

 

Dim mess As New Web.Mail.Message

Dim smtp As New Web.Mail.SMTPMail

 

mess.To = “admin@vbnet.ru”

mess.From = “pavel@vbnet.ru”

mess.Subject = “Тест

mess.Body = “Don’t worry! It’s only a test.”

smtp.SmtpServer = “smtp.vbnet.ru”

smtp.Send (mess)

Response.Write “Тестовое сообщение отправлено!”

 

Работа с базами данных

В области работы с базами данных произошли огромные перемены. На смену библиотеке ADO (ActiveX Data Objects) пришла технология ADO .NET (или ADO+)[1]. ADO+ лучше поддерживает отсоединённые данные, добавлена поддержка XML, причём на довольно высоком уровне. В архитектуре произошли серьёзные изменения. Исчёз класс Recordset. Для чтения данных теперь предназначен класс DataReader. Новый класс DataSet используется для работы с отсоединёнными данными. Также появился служебный класс DataAdapter, который просто необходим для связи DataSet с источником данных.

Рассмотрим процесс получения данных из базы данных на небольшом примере. Сначала объявляются необходимые переменные.

 

Dim Conn As New OleDBConnection ()

Dim Comm As New OleDbCommand ()

Dim DR As OleDbDatareader ()

 

Далее мы должны установить строку соединения (свойство ConnectionString класса Connection) и открыть соединение с источником данных. Для этого используется метод Open.

 

Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\qa.mdb"

Conn.Open ()

 

Теперь устанавливаем свойства объекта Comm.

 

Comm.Connection = Conn

Comm.CommandText = "Select * From Questions"

 

Используя метод ExecuteReader объекта Comm, мы заполняем объект DR данными из БД. Затем читаем эти данные.

 

Comm.ExecuteReader (DR)

Do While DR.Read

        Console.WriteLine("author name: {0}", DR("name"))

Loop

 

И в заключение нужно закрыть объекты DR и Conn.

 

DR.Close ()

Conn.Close ()

 

Заключение

ASP .NET сильно отличается от ASP. Что говорить, изменены даже поддерживаемые языки программирования! Как всегда, есть хорошие изменения, но есть и плохие. В целом ASP .NET меня порадовал.

 

Павел Сурменок

pavel@vbnet.ru

http://vbnet.ru



[1]Об ADO .NET вы можете почитать в моей статье “Обзор ADO .NET”, опубликованной в журнале «Программист» в августовском номере 2002 года.

 
     

   
   
     
  VBNet рекомендует