Краткий обзор ASP .NET

При первом знакомстве с ASP .NET возникает обманчивое впечатление, что перед вами всего лишь очередной способ динамического построения web-страниц. В действительности возможности ASP .NET выходят далеко за рамки того, что можно было сделать традиционными средствами ASP. Хотя ASP .NET сохраняет совместимость с ASP, это совершенно новая и вполне самостоятельная технология. Так, в ASP .NET входят элементы web-форм, которые должны сыграть по отношению к броузерным приложениям ту же роль, что и классические элементы VB для программирования Windows-приложений для любых клиентов — как для броузеров на PC, так и для портативных устройств. Откомпилированный код ASP .NET значительно быстрее работает на сервере; он хорошо масштабируется, использует модель безопасности .NET, поддерживает несколько способов аутентификации и т. д.

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

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

 

Немного истории

Технология ASP появилась в 1997 году и предназначалась для построения web-страниц в Internet Information Server (US). В сценариях ASP HTML-код объединялся со сценарным кодом, интерпретируемым IIS в ответ на запросы со стороны клиента. В результате строилась страница HTML, которая возвращалась клиенту. Технология ASP обладала рядом недостатков:

Эти и другие проблемы решаются в новой технологии ASP .NET.

 

Простое web-приложение для ASP .NET

Выберите в диалоговом окне New Project значок приложения ASP .NET.

После небольшой задержки VS IDE создает страницу, которой по умолчанию присваивается имя WebFormsl.aspx. Сгенерированная страница содержит код вывода для приложения ASP .NET. Примерный вид VS .NET IDE показан на рис. 12.1. Обратите внимание, сколько файлов было создано для такой простой страницы (имена файлов перечислены в окне решения). Посмотрите на каскадный список стилей, определяющий общие параметры внешнего вида страницы. Дизайнер очень похож на дизайнер форм Windows, описанный в главе 8. Слева расположена панель, с которой элементы перетаскиваются на web-страницу (конечно, web-страницы на стадии конструирования обладают меньшими возможностями по сравнению с формами Windows, поскольку они должны работать в броузере).

Создайте на форме надпись и кнопку. Растяните надпись по ширине страницы, расположите кнопку под надписью и выровняйте по центру, при этом генерируются экземпляры классов из пространства System. Web. UI. WebControl. Ссылка на это пространство имен автоматически включается в решение при создании «скелета» нового приложения ASP .NET. В свойстве Text надписи следует ввести пустую строку, а в свойстве Text кнопки вводится текст «Click me!». Изменения свойств сохраняются в HTML-коде, содержащемся в странице .aspx. Чтобы просмотреть базовый HTML-код, можно выполнить команду View > HTML Source (клавиши Ctrl+PageDown) или выбрать вкладку HTML в IDE. В следующем фрагменте ключевые строки выделяются жирным шрифтом1.

<%@Page Language="vb"AutoEventWireup="false"

Codebehind="WebForml.aspx.vb"

Inherits="WebApplicationl.WebForml'l>

<!DOCTYPE HTML PUBLIC "-//W3C//

DTD HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<title></title>

<meta name="GENERATOR"

content="Microsoft Visual Studio.NET 7.0">

<meta name="CODE_LANGUAGE"content="Visua1 Basic 7.0">

<meta name="vs_defaultClientScript"content="JavaScript">

<meta name="vs_ta rgetSchema"

content= "http://schemes.microsoft.com/intel1i sense/ie5">

</HEAD>

<body MS_POSITIONING="GridLayout">

<form id="Forml"niethod="post''runat="server">

<asp:Button id="Buttonl"style="Z-INDEX:101;LEFT:311px: POSITION:absolute;TOP:212px"r'bnat-"server"Text-"Click me!" Width="123px"Height="67px">

</asp:Button>

<asp:Label id="Labe11"

style="Z-INDEX:102;LEFT:

15px;POSITION:absolute: TOP:40px"runat="server

"Width="631px"Height="132px">

</asp:Label>

</form>

</body>

</HTML>

Рис. 12.1. Простое приложение ASP .NET в IDE

В первой выделенной строке атрибуту runat присваивается значение server, указывающее на то, что код элемента должен выполняться на стороне сервера, а не на стороне клиента. В принципе код ASP .NET может работать и на стороне клиента, но это делается очень редко, поскольку многие возможности ASP .NET становятся недоступными (в сущности, при этом выполняется сценарий клиентской стороны, не имеющий ничего общего с ASP .NET).

Обратите внимание: все теги элементов страницы снабжаются префиксом <asp:. Дело в том, что элементы ASP .NET не являются элементами HTML. Они находятся на сервере, и обычные элементы HTML используются только в страницах, передаваемых клиенту (там, где это возможно). Так, в HTML не существует аналогов для таких элементов ASP .NET, как календарь или элемент интервальной проверки. В этом случае в ASP .NET для достижения желаемого эффекта используется комбинация обычных элементов HTML, сценарного кода и кода, работающего на стороне сервера.

Если дважды щелкнуть на кнопке, в окне программы открывается процедура события Cl i ck. Открывшаяся страница имеет много общего с приложениями, созданными на базе форм Windows; она тоже содержит автоматически сгенерированный код, который будет описан ниже. В приложениях ASP .NET код обычно отделяется от средств визуального представления и хранится в отдельном файле с двойным расширением .aspx.vb.

Включите в процедуру события Cl ick следующий фрагмент:

Private Sub Buttonl_Click(ByVal sender As System.Object,_

ByVal e As System.EventArgs)

Handles Buttonl.Click

Me.Label 1.Font.Size = FontUnit.XLarge

Me.Label 1.Text = "Welcome to ASP .NET @" & Now

End Sub

Обратите внимание на сходство этого кода с обработчиками событий в приложениях форм Windows, включая наличие параметров sender и EventArgs. Свойство Font в web-элементах несколько отличается от одноименного свойства форм Windows, и это вполне естественно, поскольку количество шрифтов, отображаемых в страницах HTML, заметно ограничено по сравнению с формами Windows. Также обратите внимание на возможность использования встроенных функций .NET (таких, как Now) в коде ASP .NET. Приложения ASP .NET обладают полноценным доступом к .NET Framework. В частности, это означает, что для обращения к данным в ASP .NET могут использоваться все элементы и вся программная поддержка баз данных .NET (см. главу И).

При нажатии клавиши F5 VS .NET IDE генерирует web-страницу и автоматически отображает ее в Internet Explorer. После нажатия кнопки окно приобретает вид, показанный на рис. 12.2.

Приложения ASP .NET, как и другие классы приложений .NET, компилируются в би-блиотеки DLL. IDE генерирует для DLL файл описания сборки, хранящийся на сервере. В приложение ASP .NET также входит страница .aspx и другие сопутствующие файлы.

Ниже приведен полный код страницы с разверткой регионов:

Public Class WebForml

Inherits System.Web.UI.Page

Protected WithEvents Labell As System.Web.UI.WebControls.Label

Protected WithEvents Buttonl As System.Web.UI.WebControls.Button #Region "Web Form Designer Generated Code "

'This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()>

Private Sub _

InitializeComponent()

End Sub

Private Sub

Page_Init(ByVal sender As System.Object.

ByVal e As System.EventArgs)

Handles MyBase.Init

'CODEGEN: следующий вызов необходим для дизайнера форм Web.

' Не изменяйте его в редакторе!

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object._

ByVal e As System.EventArgs) Handles MyBase.Load

' Здесь размещается пользовательский код инициализации страницы

End Sub

Private Sub Bultonl_Click(ByVal sender As System.Object._

ByVal e As System.EventArgs) Handles Buttonl.Click Me.Label1.Font.Size_

FontUnit.XLarge Me.Label1.Text = "Welcome to ASP .NET @" & Now

End Sub

End Class

Рис. 12.2. Результат выполнения простейшего кода ASP .NET

В ASP .NET используется файл globalasax — аналог файла global.asa из ASP. Главное различие между этими файлами заключается в том, что обращения к файлу global.asax происходят:

Если вы захотите добавить в global.asax код инициализации приложения, включите его в функцию InitializeComponent(), поскольку именно эта функция вызывается при загрузке приложения.