Актуальная новость. Asp. Net п
Скачать 105.76 Kb.
|
Оглавление Введение............................................................................................................3 §1. ASP.NET.........................................................................................4 п.1. Описание................................................................................................4 п.2. Объектная модель ASP.NET.................................................................5 п.3. Отделенный код.....................................................................................7 п.4. Стандартные тэги. .................................................................................8 п.5. Технология AJAX .................................................................................8 п.6. Объект XMLHttpRequest ......................................................................9 §2. Нестандартные web-элементы управления. .................................13 п.1. Основы пользовательских элементов управления............................14 п.2. Создание простого пользовательского элемента управления.........14 п.3 Обработка событий...............................................................................16 п.4.Использование специальных объектов...............................................17 Заключение........................................................................................20 Литература.........................................................................................21 ВведениеВ мире программирования на данный момент существует технология создания web-приложений и web-сервисов от компании Майкрософт, которая называется ASP.NET. ASP.NET приложение – это серверное приложение, которое отсылает клиенту-браузеру HTML разметку. Протокол HTTP не позволяет сохранять состояние страницы, то есть, как правило, на событие (клик по ссылке или нажатие на кнопку) браузер реагировал отправкой запроса серверу. Когда с сервера приходил ответ, всё содержимое страницы полностью заменялось, что замедляло работу. В настоящее время для упрощения и ускорения работы в интернете используется расширение ASP.NET приложений – технология AJAX. С помощью этой технологии современные браузеры, поддерживающие стандарты W3C DOM, позволяют вывести web-приложение на новый уровень. Теперь эти приложения стали распределенными, т.е. часть логики находится на стороне клиента, а часть – на стороне сервера. Таким образом, после отправки запроса и получения ответа страница не заменятся полностью, а обновляется только ее часть, с теми данными, в которых клиент заинтересован в конкретный момент. В настоящее время технология AJAX является основой для всех разработчиков web-приложений и необходима для быстрой работы в интернете, экономии трафика и для развития дальнейших технологий. В данной курсовой работе описана разработка ASP.NET приложения с использованием технологии AJAX. §1. ASP.NETп.1. ОписаниеMicrosoft.NET Framework – это платформа для создания, развертывания и запуска web-сервисов и приложений, состоящая из трех основных частей – общеязыковой среды выполнения (common language runtime), иерархического множества унифицированных библиотек классов и компонентной версии Active Server Pages (ASP). Основная идея ASP заключается в создании Web-страниц с внедренными в них фрагментами кода на скриптовых языках. Новейшей версией технологии ASP является ASP.NET, ключевая в архитектуре Microsoft .NET Framework. Основное отличие этой технологии от ASP с точки зрения архитектуры приложений заключается в том, что код, присутствующий на web-странице, не интерпретируется, а компилируется и кэшируется, что, естественно, способствует повышению производительности приложений. В основу ASP.NET положена работа в среде CLR, что позволяет создавать Web-приложения на любом языке, поддерживаемом платформой .NET, например, таких как Visual Basic, JavaScript или С#. Это немаловажное преимущество, так как теперь возможности одного языка могут использоваться в другом языке без необходимости написания дополнительного кода. Таким образом, достигается высокая степень повторного использования кода. Независимо от языка программирования, использованного при создании приложения ASP, его код компилируется в код на промежуточном языке IL. Во время компиляции проверяется синтаксическая корректность исходного текста. Скомпилированный в промежуточный язык код выполняется быстрее, и он будет таким же независимо от языка, который мы используем. Компиляция происходит на сервере в момент первого обращения пользователя к странице. Если программист изменил текст страницы, программа перекомпилируется автоматически. п.2. Объектная модель ASP.NETASP.NET является объектно-ориентированной моделью разработки Web-приложений. Сами ASP.NET-страницы являются объектами классов. Можно создавать программный код с возможностью его повторного использования классами. Эти классы можно использовать для создания экземпляров объектов. Объектная модель — это иерархия объектов, предоставляющих разработчикам определенные возможности. В ASP.NET используется новая структура Web-страниц, которая отличается от структуры ASP-страниц и обеспечивает поддержку объектной модели для сохранения содержимого ASP.NET-страницы. Добавлен новый класс элементов управления — серверные элементы управления. Можно добавлять собственные комментарии и связывать эти данные с серверными элементами управления. Для оформления Web-страниц имеются наборы директив, которые предназначены для установки параметров. Например, параметры TraceContext и isEnabled позволяют, соответственно, включить и отключить механизм отслеживания Web-запросов. ASP.NET определяет шесть внутренних объектов структуры страниц: application; ObjectContext; response; request; server; session. Эти объекты встроены в модель ASP.NET-страниц и готовы к использованию. В объекте application хранятся данные, которые будут доступны всем пользователям, одновременно работающим с Web-приложением. Данные о сеансе работы каждого отдельного пользователя сохраняет объект session. Объект application используется для хранения глобальных переменных, которые содержат информацию, общедоступную для всех пользователей Web-приложения, например, приветственное сообщение или индекс посещения Web-страницы. Этот объект представляет собой коллекцию разнородных элементов. Пользователи совместно используют объекты Web-приложения, поэтому требуется гарантировать, что несколько пользователей не смогут одновременно изменять переменные, хранимые в объекте application. Для блокирования содержимого коллекции объектов от изменения применяется метод Lock, для разблокирования — метод Unlock. Так же существуют методы Contents.Remove и Contents.RemoveAll, которые удаляют один элемент из семейства Contents или все сразу соответственно. С помощью объекта ObjectContext выполняется фиксация или откат транзакций, управляемых MTS. Транзакции могут быть инициированы со страницы ASP.NET. Методы SetComplete и SetAbort объекта ObjectContext используются, соответственно, для фиксации и отката транзакций. Объект response можно использовать для передачи выходной информации клиенту. Методы объекта respons: AddHeader – устанавливает заголовок HTML имя равным значению. AppendToLog – добавляет строку в конец записи журнала веб-сервера, относящейся к этому запросу. BinaryWrite – записывает предоставленную информацию в текущий вывод HTTP без преобразования наборов символов. Clear – стирает любой буферизованный вывод HTTP. End – останавливает обработку файла .asp и возвращает текущий результат. Flush – немедленно передает буферизованный вывод. Redirect – отправляет обозревателю сообщение о перенаправлении, вызывая попытку обозревателя подключиться к другому URL. Write – записывает переменную в виде строки в текущий вывод HTTP. В объекте request сохраняется информация, отправляемая браузером клиента на сервер в HTTP-запросе. После обработки запроса с помощью объекта request пользователю отправляется ответная информация. С помощью метода BinaryRead объект request извлекает данные, передаваемые клиентом серверу, как часть запроса POST. Объект server позволяет получить доступ к свойствам и методам Web-сервера. С помощью метода СreateObject можно создать экземпляр объекта server, Execute– выполняет файл .asp. Так же существует возможность сопоставляения указанного виртуального пути с физческим путем – это делает метод MapPath. А Transfer передает всю информацию о текущем состоянии другому файлу .asp для обработки. Объект session используется для хранения информации о пользовательских сеансах. Значения переменных объекта session сохраняются, даже когда пользователь переходит на другую страницу Web-приложения. Этот объект создается при организации пользователем сеанса и уничтожается при его завершении. Например, в нём можно сохранять регистрационную информацию каждого пользователя, посещающего сайт виртуального магазина. Эта информация остаётся доступной для всего Web-приложения даже при переходе пользователя на другие Web-страницы сайта. Объект sessionиспользует три метода: Abandon для уничтожения объект session и освобождения его ресурсов, а Contents.Remove и Contents.RemoveAll для удаления одного элемента или всех элементов из семейства Contents соответственно. Каждый из внутренних объектов ASP.NET обладает набором методов и коллекций для управления функциональными возможностями этого объекта. Назначение и возможности внутренних объектов технологий ASP и ASP.NET практически идентичны. п.3. Отделенный код Модель отделенного кода (code-behind) ASP.NET предоставляет средства вынесения прикладного кода из HTML-разметки в файл отделенного кода. Эта модель подразумевает создание для каждой Web-страницы ASP.NET двух файлов: файла разметки (.aspx) с дескрипторами HTML и дескрипторами элементов управления, и файла кода (.cs) с исходным кодом страницы (при условии, что для программирования Web-страницы применяется язык C#). Такая модель обеспечивает более удобную схему организации, позволяя отделять пользовательский интерфейс от программной логики, что имеет очень важное значение при создании сложных страниц. Для указания используемого класса в странице .aspx применяется атрибут Inherits, а для указания класса, в котором содержится отделенный код — атрибут CodeFile: Пример: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestFormCodeBehind.aspx.cs" Inherits="TestFormCodeBehind"%> Отделенный код. Web-страницы в Web-проекте всегда используют модель отделенного кода. Однако они включают один дополнительный файл с расширением .aspx.desginer.cs, в котором содержатся объявления для всех имеющихся на них элементов управления. Это означает, что если вы создадите страницу с именем Default.aspx, вы получите файл Default.aspx.cs с классом отделенного кода и файл Default.aspx.designer.cs с объявлениями элементов управления (рис. 2.23). Во время компиляции эти два файла будут объединены. В беспроектном Web-сайте вы никогда не увидите файла с объявлениями элементов управления, поскольку эта часть кода генерируется во время компиляции системой ASP.NET. Это отвечает широко принятому принципу разделения логики и представления, но на самом деле разработчикам приходилось смешивать код представления (например, манипуляцию деревом элементов управления серверной стороны) с логикой приложения (например, манипуляцию информацией из базы данных) в одном монстроподобных классах отделенного кода. Без более четкого разделения ответственности конечный результат зачастую получался хрупким и непредсказуемым. п.4. Стандартные тэги. <%@%> директива обработки – позволяет передавать в ASP данные, которые необходимы для обработки файла «.asp» Ключевые слова, которые могут применяться в директивах обработки: LANGUAGE – установка языка сценария для файла «.asp». ENABLESESSIONSTATE – это ключевое слово указывает на использование в файле «.asp» сведений о состоянии сеанса. CODEPAGE – установка кодовой страницы (кодировки символов) для файла «.asp». LCID – установка для файла кода языка (местности). TRANSACTION – выполнение файла «.asp» в контексте транзакции. Пример: <%@ LANGUAGE="C#" CODEPAGE="932" %> Здесь задаются язык сценария и кодовая страница < %%> для включения сервера-кода на стороне < %= выражение %> директива вывода – позволяет вывести значение выражения на экран. Эта директива вывода равнозначна команде Response.Write(). < % # %> используется для привязки данных в элементы управления ASP.NET. < % $ %> используется для выражения привязки данных. < %----% > используется для комментариев стороне сервера. п.5. Технология AJAX Термин AJAX появился в 2004 году в сообществе Java. Первоначально он использовался для обозначения семейства взаимосвязанных самостоятельных технологий, реализующих различные формы удаленного исполнения сценариев и которые могут быть эффективно использованы вместе. AJAX включает в себя: стандартные средства отображения страниц, такие как (X)HTML и CSS; динамические средства отображения информации и взаимодействия с пользователем - Document Object Model; обмен данными и их обработка - XML и XSLT; механизмы асинхронной передачи данных с сервера с помощью объекта XMLHttpRequest; JavaScript, который объединяет всё это вместе. В настоящее время разработка web-приложений стремится к разграничению клиентской части и серверной, этим и обуславливается повсеместное использование шаблонов, таких как Smarty и XSLT. При разработке более сложных проектов возникает необходимость в структурированности и удобочитаемости кода. Не следует засорять код программиста кодом верстальщика, а код верстальщика - правками дизайнера, и так далее. Использование AJAX позволяет создавать намного более удобные web-интерфейсы пользователя на тех страницах сайтов, где необходимо активное взаимодействие с пользователем. п.6. Объект XMLHttpRequestОбъект XMLHttpRequest (или, сокращенно, XHR) дает возможность браузеру делать HTTP-запросы к серверу без перезагрузки страницы. Несмотря на слово XML в названии, XMLHttpRequest может работать с данными в любом текстовом формате, и даже с бинарными данными. Использовать его очень просто. Различают два использования XmlHttpRequest. Первое – самое простое, синхронное. Через объект XMLHttpRequest с сервера запрашивается страница, и текст ответа сервера показывается через метод alert(). Сначала создается запрос, задается открытие (open) синхронного соединения с адресом и запрос отсылается. При синхронном запросе браузер "подвисает" и ждет, пока сервер не ответит на запрос. Когда ответ получен, при помощи alert() печатается текст ответа сервера. Все максимально просто. Второе использование XmlHttpRequest – асинхронное. Браузер не ждет выполнения запроса для продолжения скрипта. Вместо этого существует функция, которую запрос вызовет сам, когда получит ответ с сервера. Запрос. При отправке запроса в большинстве прикладных сред AJAX экземпляр объекта XmlHttpRequest для текущего браузера создается кодом следующего вида: var xmlRequeste e; try { xmlRequest = new XMLHttpRequest(); } catch(e) { try { xmlRequest = new ActiveXObject(“Microsoft.XMLHTTP"); } catch(e) { } } Метод open готовит канал к передаче запроса, но физический сокет на этой стадии еще не создается. Для выполнения команды POST необходимо добавить соответствующий заголовок типа содержимого. Логический аргумент указывает, является ли операция асинхронной: xmlRequest.open("POST", url, false); xmlRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlRequest.send(postData); Метод send открывает сокет и отправляет пакет. В предыдущем фрагменте кода он возвращает управление только после полного получения ответа. Для асинхронного запроса аналогичный код выглядит несколько иначе: xmlRequest.open("POST", url, true); xmlRequest.onreadystatechange = CallbackComplete; xmlRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlRequest.send(postData); На место элемента CallbackComplete подставляется функция JavaScript, которая получает и обрабатывает ответ, сгенерированный по отправленному запросу. Допустимыми значениями состояния готовности являются целые числа от 0 до 4, которые означают соответственно – «Запрос не инициализирован», «Метод open вызван успешно», «Метод send вызван успешно», «Прием данных» и «Ответ получен». Функция CallbackComplete обычно начинает свою работу с проверки состояния готовности. Ответ. Ответ доступен в двух форматах — физического текста и документа XML. В состояниях готовности 0-2 свойство responseText остается пустым – данные еще не приняты. При переходе в состояние 3 («Прием данных») свойство содержит данные, полученные до настоящего момента, интерпретированные в заданной кодировке символов. Если кодировка не указана, то по умолчанию используется UTF-8. Свойство responseXml остается недоступным до того момента, когда запрос будет полностью принят и успешно разобран как документ XML. Если тело ответа не содержит XML или разбор по какой-то причине завершается неудачей, свойство возвращает null. Создание XMLHttpRequest для разных браузеров. Метод создания XMLHttpRequest отличается от браузера к браузеру. Функция в JavaScript в следующем коде сглаживает эти трудности разных браузеров, определяя корректный подход для данного браузера и возвращая XMLHttpRequest готовым к использованию. Код возвращает новый XMLHttpRequest объект или false, если браузер его не поддерживает: function newXMLHttpRequest() { var xmlreq = false; if (window. XMLHttpRequest) { //Создадим XMLHttpRequest объектдляне-Microsoft браузеров xmlreq = new XMLHttpRequest(); } else if (window.ActiveXObject) { //Создадим XMLHttpRequest спомощью MS ActiveX try { //Попробуемсоздать XMLHttpRequest дляпозднихверсий Internet //Explorer xmlreq = new ActiveXObject(”Msxml2. XMLHTTP”); } catch (e1) { //Не удалось создать требуемый ActiveXObject try { //Пробуем вариант, который поддержат более старые версии //Internet Explorer xmlreq = new ActiveXObject(”Microsoft. XMLHTTP”); } catch (e2) { //Не в состоянии создать XMLHttpRequest с помощью ActiveX }}} return xmlreq; } §2. Нестандартные web-элементы управления. Набор встроенных элементов управления ASP.NET достаточно обширен и разнообразен, чтобы с его помощью можно было реализовать любую необходимую функциональность Web-приложения. В их основе лежит компонентная модель ASP.NET, существенно упрощающая применение общих принципов объектно-ориентированного программирования. Функции существующих элементов управления можно расширять. Можно также создавать новые элементы управления путем объединения нескольких существующих элементов — такие составные элементы управления называются пользовательскими (user). Кроме того, в ASP.NET определен небольшой набор базовых классов, на основе которых можно создавать совершенно новые, так называемые специализированные (custom) элементы управления. Для отображения нестандартных элементов, входящих в состав web-страниц, браузеры используют специальные встроенные приложения. При этом для браузера Netscape эти приложения реализуются в виде динамических библиотек (.DLL), а в программе Internet Explorer, Mozila и Opera — в виде элементов управления ActiveX. Нестандартные элементы управления расширяют инструментарий Web-разработчика. Они инкапсулируют ключевые элементы интерфейса и программной логики, благодаря чему их можно многократно использовать не только в одном приложении, но и в других проектах. Рассмотрим 3 типа нестандартных элементов управления: • пользовательские элементы управления (user controls) — создаются с помощью графического интерфейса дизайнера Visual Studio .NET путем комбинирования существующих серверных и HTML-элементов управления; представляют собой функциональные блоки, инкапсулирующие некоторые возможности пользовательского интерфейса. Пользовательский элемент управления хранится в файле, копию которого необходимо включать в каждый проект, использующий этот элемент управления; • составные элементы управления (composite controls) — создаются из существующих серверных и HTML-элементов управления. Похожи на пользовательские, но в отличие от них создаются программно, поэтому могут быть скомпилированы в сборки (dll-файлы). Последние допустимо применять одновременно в нескольких приложениях и добавлять на панель Toolbox в Visual Studio .NET; • генерируемые элементы управления (rendered controls) — генерируются кодом в виде HTML-тэгов «с нуля», а не компонуются из существующих элементов управления. Подобно составным элементам управления, генерируемые элементы управления компилируются и их можно добавлять на панель Toolbox. Однако, создавая генерируемые элементы управления, приходится самостоятельно писать код для решения задач, которые в составных элементах управления автоматизированы. В этой работе речь пойдет о первом варианте – о пользовательских элементах управления. Они наилучшим образом подходят для стандартизации содержимого, которое будет повторяться на каждой странице Web-сайта. п.1. Основы пользовательских элементов управления Файлы пользовательских элементов управления (файлы с расширением .ascx) подобны файлам Web-форм ASP.NET (они имеют расширение .aspx). Как и Web-формы, пользовательские элементы управления состоят из части пользовательского интерфейса с дескрипторами элементов управления (файл с расширением .ascx) и могут использовать файлы внутристрочных сценариев или файлы отделенного кода с расширением .cs. К основным отличиям между пользовательскими элементами управления и Web-страницами можно отнести следующие: Пользовательские элементы управления начинаются с директивы Control, а не с Page. Расширением пользовательских элементов управления является .ascx, а не .aspx, а их файлы отделенного кода являются наследниками класса System.Web.UI.UserControl. На самом деле, классы UserControl и Page являются наследниками одного и того же класса TemplateControl, поэтому у них так много одинаковых методов и событий. Пользовательские элементы управления не могут быть запрошены самим клиентским браузером. (В противном случае ASP.NET выдаст сообщение об ошибке “that file type is not served” — “необслуживаемый тип файла”.) Наоборот, пользовательские элементы управления внедряются в другие Web-страницы. п.2. Создание простого пользовательского элемента управления Для создания пользовательского элемента управления в Visual Studio, необходимо выбрать в меню Website (Web-сайт) команду Add New Item (Добавить новый элемент), а затем выбрать шаблон Web User Control (Пользовательский элемент управления Web). Ниже приведен код простого пользовательского элемента управления — в нем просто содержится статический HTML-код. Этот элемент представляет строку верхнего колонтитула. <%@ ControlLanguage="C#" AutoEventWireup="true" CodeFile="Header.ascx.cs" Inherits="Header" %>
Простой элемент управления верхним колонтитулом не требует выполнения какого-то специального кода, поэтому данный класс можно оставить пустым: public partial class Header : System.Web.UI.UserControl {} Чтобы протестировать элемент управления, нужно поместить его на форму. Во-первых, с помощью директивы Register нужно сообщить странице ASP.NET, что вы планируете использовать этот пользовательский элемент управления; эту директиву вы можете поместить непосредственно после директивы Page, как показано ниже: <%@ Register TagPrefix="apress" TagName="Header" Src="Header.ascx" %> В этой строке с помощью атрибута Src идентифицируется исходный файл, в котором содержится элемент управления. В ней также определяется префикс дескриптора (TagPrefix) и имя дескриптора (TagName), которые будут использоваться для объявления нового элемента управления на странице. Подобно тому, как серверные элементы управления ASP.NET имеют префикс <%@ Page Language="C#" AutoEventWireup="true" CodeFile="HeaderTest.aspx.cs" Inherits="HeaderTest" %> <%@ Register TagPrefix="apress" TagName="Header" Src="Header.ascx" %> |