Главная страница
Навигация по странице:

  • Создание XMLHttpRequest для разных браузеров.

  • §2. Нестандартные web -элементы управления.

  • User Control Test Page


  • Актуальная новость. Asp. Net п


    Скачать 105.76 Kb.
    НазваниеAsp. Net п
    АнкорАктуальная новость
    Дата14.06.2022
    Размер105.76 Kb.
    Формат файлаdocx
    Имя файлаreferatbank-7934.docx
    ТипЛитература
    #591032


    Оглавление
    Введение............................................................................................................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.NET


    ASP.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" %>

















    User Control Test Page



    An Apress Creation c 2008


    Простой элемент управления верхним колонтитулом не требует выполнения какого-то специального кода, поэтому данный класс можно оставить пустым:

    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 имеют префикс для объявления элементов управления, можно использовать свои собственные префиксы дескрипторов, помогающие различать создаваемые элементы управления. В следующем примере применяется префикс дескриптора apress и дескриптор с именем Header:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="HeaderTest.aspx.cs"

    Inherits="HeaderTest" %>

    <%@ Register TagPrefix="apress" TagName="Header" Src="Header.ascx" %>















    написать администратору сайта