Введение
Как вы, наверное, уже знаете, 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+).
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