Обратим ваше внимание на то, что здесь и в дальнейшем будет идти речь о ASP.NET версии 3.5, тем не менее все нижеследующее в равной степени справедливо и для версии ASP.NET 2.0
ASP.NET — технология создания веб-приложений и
ASP.NET – технология, используемая для написания мощных клиент-серверных интернет приложений. Она позволяет создавать
Как правило, под
ASP.NET содержит множество готовых элементов управления, используя которые можно быстро создавать интерактивные web-сайты.
Microsoft .NET Framework - это платформа для создания, развертывания и запуска Web-сервисов и приложений. Она предоставляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с приложениями и сервисами следующего поколения, а также решать задачи развертывания и использования Интернет - приложений.
.NET Framework состоит из трех основных частей: общеязыковой среды выполнения (
Типичная веб-страница состоит из трех секций: директивы страницы, код и разметка страницы. Эти секции описаны ниже.
Данная секция используется для настройки окружения и определяет, как должна обрабатываться страница. Например, в такой секции можно импортировать пространства имен и загружать сборки.
Эта секция содержит код для обработки событий, генерируемых страницей или ее элементами управления. Код дозволяется размещать в тэге <script>. По умолчанию блоки сценария содержат код, выполняющийся на клиенте, но можно объявлять их и как серверный код, включив в тег <script> атрибут runat="server". Код также может содержаться в прикрепленных файлах, называемых файлами отделенного кода ( code-behind ). Весь код страницы компилируется перед выполнением. Кроме того, все страницы допускается предварительно скомпилировать в сборку (если сборка — единственный файл, предназначенный для развертывания).
Разметка страницы — это HTML-код страницы, включающий HTML-тэг body и его содержимое. Там же размещаются клиентские и
В ASP.NET реализована модель динамической компиляции веб-сайтов. В этом приложении код не компилируется до вызова пользователем, работающим с сайтом. Если применяется динамическая компиляция, то Visual Studio не создает исполняемую сборку, пригодную для развертывания, а компилирует страницы по запросу пользователя. Компиляция страницы зависит от временной отметки файла исходного кода. Если исходный код изменился, страница перекомпилируется при следующем запросе. Динамическая компиляция имеет такие преимущества:
При создании веб-сайта Visual Studio 2008 не проверяет, все ли страницы и их зависимости компилируются. Для запуска веб-сайта не создается сборка, Visual Studio 2008 проверяет, можно ли скомпилировать код, и ищет синтаксические ошибки в разметке и файле Web.conflg.
Чтобы код приложения обрабатывал запросы пользователей, платформе ASP.NET необходимо вначале скомпилировать код в одну или несколько сборок.
Сборка — это файл с расширением DLL.
Код ASP.NET можно писать на самых различных языках, например Visual Basic, C#, J# и других. При компиляции код переводится в независимое от языка и процессора представление, которое называется языком
Преимущества компиляции:
DLL, который был написан на языке Visual Basic.Request и Response и вызывает метод HttpHandler.ProcessRequest. После этого среда выполнения проверяет каким образом была вызвана эта страница и если страница вызвана путем передачи данных с другой страницы , то среда выполнения устанавливает свойство PreviousPage.
| Этап | Описание |
|---|---|
| Запрос станицы | Запрос страницы осуществляется до начала жизненного цикла страницы. Когда пользователь осуществляет запрос, среда выполнения ASP.NET устанавливает, необходимо ли осуществить компиляцию (в случае изменения исходного кода) страницы и начать жизненный цикл, либо можно выдать в качестве ответа страницу из |
| Начало жизненного цикла | На этом этапе происходит установка свойств Response и Request и свойства UICulture. Также, на этом этапе устанавливается свойство IsPostBack. IsPostBack - данное свойство возвращает значение, указывающее, загружается ли страница в ответ на обратный запрос клиента, или же доступ к ней осуществляется впервые |
| Инициализация страницы | Ко времени инициализации страницы все дочерние пользовательские элементы управления уже созданы и имеют установленные свойства UniqueID. В это же время к странице применяются темы оформления. Если страница вызвна в результате постбэка, то данные, отправленные на сервер, еще не загружены в свойства элементов управления, на этом этапе. |
| Загрузка | Если страница вызвана в результате постбэка, то на этом этапе устанавливаются свойства элементов управления, на основании информации о состоянии ( и ControlState ). |
| Валидация | Вызывается метод Validate() для всех, находящихся на странице проверочных элементов управления. |
| Обработка постбэка | Вызываются обработчики событий (при условии, что постбэк произошел). |
| Рендеринг | Сохраняется информация о состоянии, затем класс страницы вызывает соответствующие методы дочерних элементов управления для генерации HTML представления и передачи его в Response.OutputStream. |
| Выгрузка | Выгрузка происходит после того, как создано HTML представление для всей страницы. |
Обработчик HTTP — это компонент, на который возложена ответственность за обслуживание запроса. Он представляет собой экземпляр класса, реализующего интерфейс IHttpHandler. Метод ProcessRequest этого интерфейса является центральной консолью, управляющей обработкой запроса. Например, класс Page — базовый класс, производными от которого являются все страницы ASP.NET времени выполнения, — реализует интерфейс IHttpHandler, метод ProcessRequest которого отвечает за загрузку и сохранение состояния просмотра, а также за генерирование событий, таких как Init, Load, PreRender и им подобных.
ASP.NET отображает каждый входящий HTTP-запрос на конкретный обработчик HTTP. Компонент особого рода, называемый фабрикой обработчиков HTTP (HTTP handler PageHandlerFactory анализирует исходный код запрошенного ресурса .aspx и возвращает откомпилированный экземпляр класса, представляющего страницу. Обработчик HTTP предназначен для обработки одного или нескольких расширений URL. Областью действия обработчика может быть конкретное приложение или весь компьютер, то есть он может обрабатывать файлы с назначенными ему расширениями в контексте либо текущего приложения, либо всех приложений, установленных на компьютере. Назначение обработчику области действия осуществляется путем внесения изменений в глобальный файл machine.config или локальный файл web.config, в зависимости от того, какую область действия вы выбираете.
Модули HTTP — это классы, реализующие интерфейс IHttpModule и обрабатывающие события времени выполнения, т.е. позволяют проверять входящие и исходящие запросы и выполнять определенные действия на их основе. Данный модуль представляет собой сборку, вызываемую по каждому запросу к приложению.
Существует два HttpApplication (в том числе асинхронные), и события, генерируемые другими модулями HTTP. Например, SessionStateModule — это один из встроенных модулей ASP.NET, предоставляющих приложениям сервисы, связанные с SessionStateModule генерирует события End и Start, которые могут обрабатываться другими модулями с использованием общеизвестных сигнатур Session_End и Session_Start.
Каждый входящий запрос ASP.NET назначается потоку, выбранному из пула потоков ASP.NET. Этот запрос обслуживается обработчиком HTTP, выбираемым с учетом типа запроса и установок, заданных в файле web.config. Обработчик HTTP — это регистрируемый объект, реализующий интерфейс IHttpHandler, и в частности метод ProcessRequest, который, собственно, и отвечает за выполнение запроса. Упомянутый поток вызывает метод ProcessRequest обработчика и ждет завершения его выполнения. Как долго?
Если операция выполняется медленно или запрашиваемый ресурс не отвечает, синхронная страница попросту блокируется и соответственно блокируется ее поток. Поэтому применение синхронных обработчиков для выполнения потенциально
Единственным выходом из этой трясины является "применение асинхронных обработчиков.
Необходимость в асинхронной обработке возникает тогда, когда большая часть времени выполнения операции затрачивается не на обработку данных, а на их ввод и вывод.
Типичными примерами операций, в которых задействуются преимущественно устройства ввода-вывода, являются доступ к удаленным источникам данных и взаимодействие с внешними устройствами.
Все начинается с установки атрибута Async директивы @Page. Если этот атрибут установлен, то динамически генерируемый класс страницы будет реализовывать интерфейс IHttpAsyncHandler. Атрибут AsyncTimeout указывает максимальное количество времени в секундах, отведенное на выполнение асинхронных операций.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Async="true" AsyncTimeout="35" %>
После того как страница "готова" к использованию асинхронных вызовов, необходимо реализовать код и зарегистрировать его для асинхронного выполнения. Здесь существует несколько возможных вариантов.
AddOnPreRenderCompleteAsyncpublic void AddOnPreRenderCompleteAsync(BeginEventHandler beginHandler, EndEventHandler endHandler);
Метод AddOnPreRenderCompleteAsync вызывается в обработчике события Load страницы и предназначен для регистрации двух обработчиков начала и конца асинхронной обработки.
protected void Page_Load(object sender, EventArgs e)
{
AddOnPreRenderCompleteAsync(new BeginEventHandler(BeginAsync), new EndEventHandler(EndAsync));
}
Метод BeginAsync вызывается средой выполнения ASP.NET после события PreRender и задача этого метода в том, чтобы начать асинхронную операцию.
public IAsyncResult BeginAsync(object sender, EventArgs e, AsyncCallback callback, object state)
{
ds = new localhost.DataService();
ds.Url = new Uri(Request.Url, "WebServices/DataService.asmx").ToString();
return ds.BeginGetLoginNames(callback, state);
При этом нить, использованная для обработки запроса, возвращается в пул нитей. После завершения асинхронной операции (при условии, что не происходит тайм-аут) из пула нитей извлекается нить, вызывается метод EndAsync, происходит событие PreRenderComplete и продолжается обработка запроса.
public void EndAsync(IAsyncResult asyncResult)
{
string res = ds.EndGetLoginNames(asyncResult);
string[] users = res.Split('\n');
for (int i = 0; i < users.Length; i++ )
{
string[] user = users[i].Split(':');
if(user.Length == 3)
phNames.Controls.Add(new LiteralControl("<p><b>" + user[1] + "</b> ID: " +
user[0] + " Name: " + user[2] + "</p>"));
}
}
RegisterAsyncTaskpublic void RegisterAsyncTask(PageAsyncTask task);
Метод RegisterAsyncTask используется, если необходимо провести более одной асинхронной операции. Более того, RegisterAsyncTask позволяет установить обработчик, который будет вызван если асинхронная операция не уложится по времени в установленное атрибутом AsyncTimeout время, а также позволяет передать в делегат, используемый для реализации асинхронного вызова сведения о состояния и указать, может ли задача выполнятся параллельно с другими поставленными в очередь асинхронными задачами. В случае, когда указанное выше не требуется, можно использовать AddOnPreRenderCompleteAsync и избежать написания лишнего кода.
PageAsyncTask task1 = new PageAsyncTask(new BeginEventHandler(BeginAsyncText), new EndEventHandler(EndAsyncText), new EndEventHandler(Async_OnTimeout), null); PageAsyncTask task2 = new PageAsyncTask(new BeginEventHandler(BeginAsyncDS), new EndEventHandler(EndAsyncDS), new EndEventHandler(Async_OnTimeout), null); RegisterAsyncTask(task1); RegisterAsyncTask(task2);
HttpRuntime принимает запрос и вызывает метод BeginProcessRequest обработчика асинхронной страницы. Выполнение операции начинается в рабочем потоке из пула ASP.NET. Сигналом о завершении операции служит обратный вызов.PreRender включительно.Begin возвращает объект, реализующий IAsyncResult.В состав этого объекта входит функция обратного вызова, которая будет вызвана, когда выполнение асинхронного задания завершится.End, и в выходной поток страницы выводятся результаты обратного вызова. Эта работа обычно выполняется в потоке, выбранном из пула потоков завершения.HttpRuntime.HttpRuntime вызывает метод EndProcessRequest асинхронного обработчика страницы. Этот обработчик проделывает небольшую работу и генерирует исключение, если в ходе нее происходит ошибка.EndRequest.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.