Слайды лекций В. К. Толстых - Введение в ASP.NET и Visual Studio

Document Sample
Слайды лекций В. К. Толстых - Введение в ASP.NET и Visual Studio Powered By Docstoc
					Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных
                   технологий физического факультета Донецкого национального университета




                          Технологии
                          разработки Internet-
                          приложений
                         ASP.NET приложения –
                         введение


                                          ДонНУ, кафедра КТ,
                                           проф.В.К.Толстых
            Принцип действия ASP.NET

                                                                           Расширение сервера
                                                            .aspx             aspnet_isapi.dll
                              запрос
                                                                                           HTML
       Internet
                               HTML-                        HTML
                               ответ                                                CLR
                                                                          (Common Language Runtime)

                                         Сервер IIS

    При запросе файла .aspx, он передаѐтся ISAPI расширению сервера aspnet_isapi.dll, который загружает CLR
и запускает конвейер модулей HTTP. Этот конвейер представляет собой системные модули и пользовательские
классы среды .NET Framework. Он осуществляет рендеринг классов приложения (элементов управления),
последовательно обрабатывая их, запрос клиента и формируя HTML-ответ.

    Системные модули HTTP указаны в C:\Windows\...\machine.config (конфигурация сервера по умолчанию,
для всех его Web-приложений). Они организуют аутентификацию, авторизацию, состояние сеанса, пред и пост
обработку запроса, перехват системных событий и событий других модулей.

    Конфигурацию по умолчанию можно изменить для каждого Web-приложения файлами    Web.config – в корне
соответствующего приложения и в его папках.
          Структура ASP.NET-странницы
          «Преобразование к верхнему регистру» - Demo.aspx
       <!-- Раздел директив -->
       <% @Page Language=”C#” %>

       <!-- Раздел кода -->
       <script runat=”server”>
                                                                     В этом простом примере
       private void fun(object sender, EventArgs e)                       код реализации
       {                                                             класса формы встроен
         TheResult.InnerText=(text1.Value).ToUpper();                  в тот же файл .aspx
       }
       </script>

       <!-- Раздел пользовательского интерфейса -->
       <html>
       <head><title>Пробная страница</title></head>
       <body>
       <h1>Заголовок</h1>
       <form runat=”server”>
         <input runat=”server” id=”text1” type=”text” />
         <input runat=”server” id=”button1” type=”submit”
          value=”Выполнить” OnServerClick=”fun” />
       </form>
       <p><b>Результат: </b><span runat=”server” id=”TheResult” />
       </body>
       </html>

Стандарт XHTML 1.1
Результаты работы   Demo.aspx
    Особенности предыдущей
    ASP.NET-странницы
Тег <input> с атрибутом runat превращает HTML-тег в серверный элемент (в данном случае –
экземпляр класса HtmlInputControl). Этот элемент имеет свойство Value, в котором содержится
вводимый текст.

Атрибут runat в теге <form> организует возврат данных на сервер этой же форме. Прочитанные данные
из <input> присваиваются свойству Value новосозданного экземпляра класса HtmlInputControl.
Затем выполняется код в <script> (функция fun), вызванный событием OnServerClick=”fun”.

Функция переводит символы в верхний регистр и присваивает полученную строку свойству InnerText
серверного элемента с идентификатором id=”TheResult”.

В результате работы серверных элементов и их событий генерируются HTML-теги, встраиваемые в раздел
пользовательского интерфейса. Полученная HTML-страница возвращается клиенту.




При написании приложений в среде Visual Studio визуальная часть формы остаѐтся в файле .aspx, а код
реализации класса формы, вместо тега <script>, по умолчанию, размещается в отдельном файле
*.aspx.cs (для языка C#). Это «облегчает»   страницу   .aspx и позволяет   работать над классами страницы
нескольким разработчикам.
Полученная клиентом HTML-страница




                     Скрытые поля обеспечивают
                 механизм передачи данных формы.
                  Вся «особенность» HTML-ответа –
                 в скрытых <input> и скриптах формы




                        В клиентских <input>
                         нет атрибута runat
    Совместимость ASP.NET с XHTML
Стандарт XHTML определяет Web-страницы как документы XML. Это необходимо для объединения визуальной и
программистской составляющей Web-страниц и для совместимости с будущими браузерами (IE 8…). Разметка,
генерируемая ASP.NET, соответствует этому стандарту:


           для одиночных тегов требует <…/>,
           <input … type=“hidden”> – внутри <div>,
           у формы нельзя использовать атрибут name, а надо id,
           …
Для облегчения переноса старых Web-страниц в проект ASP.NET 2.0 можно отключить рендеринг элементов
управления по стандарту XHTML. Для этого надо в файле   web.config добавить   строки:


           <system.web>
           <XHTML11Conformance enableObsoleteRendering=”true” />
           </system.web >




3
   Зарезервированные папки проекта

Bin – все предкомпилированные (заранее   компилированные) сборки   .dll, необходимые   для работы
    приложения. В простом проекте их может не быть.
App_Data – источники данных, используемых в проекте. Доступны только из этого проекта.
App_Code – исходные коды классов приложения (.cs). При первом обращении к ним они динамически
   компилируются в сборку .dll, которая кэшируется в папке Windows\...\Temporary ASP.NET Files.
    Кэшированная сборка используется проектом, пока не изменятся какие-либо его коды.
App_GlobalResources – глобальные     ресурсы   .resx всего приложения   для многоязычной поддержки браузеров
    (язык браузера передаѐтся в заголовке HTTP-запроса).
App_LocalResources – локальные ресурсы .resx для отдельных страниц приложения.
App_Thems – темы приложения - файлы .css, рисунки… Каждая тема в своей папке.
App_WebReferences – файлы .wsdl используемые для Web-сервисов.
    Серверные элементы управления ASP.NET
  Серверные элементы управления HTML
  - стандартные HTML-теги с атрибутом runat=”server”. Свойства совпадают с атрибутами соответствующего
  тега, простые свойства:

              InnerText, InnerHtml, Style, Value, Attributes



  Серверные элементы управления Web
  - более развитые элементы: …календарь, раскрывающийся список, таблицы данных… Идентификатор элемента
  управления Web – это префикс <asp:

  Пример текстового элемента управления HTML и Web:

элемент управления HTML
                            <input runat=”server” id=”text1” type=”text” value=”Значение” />
                            <asp: textbox runat=”server” id=”text1” text=”Значение” />
 элемент управления Web

  Оба элемента генерируют одинаковый HTML-код, элемент Web содержит вводимый текст в свойстве text,
  а не в value.
Открытие проекта (Web-сайта) ASP.NET
Создание нового Web-сайта WebSite1
на локальном сервере
   Создание нового Web-сайта WebSite1
   через
   консоль IIS 5




Новый сайт можно создать
и средствами IIS




                  Должен быть создан
                     пул для этого
                      приложения
                        Директива Page – настройка атрибутов
                             страницы для компилятора




Файл формы


                                                   Генерируется форма,
                                                  допускается только одна
                                                     с атрибутом runat




               Визуальное
             редактирование
                 формы
                                                               Предоставляет доступ к классам
                                                                HttpRequest, HttpResponse




                                                        Пространства имен – это разделы
                                                       типов данных, позволяющие хранить
                                                              типы данных и функции
                                                            в иерархической структуре.
          Отдельный
          код класса
            формы                                               Предоставляет доступ к классам
                                                                 и интерфейсам для создания
                                                                 ASP.NET компонент и страниц
                                                                       (Page, Controls)
 Частичный класс
     допускает
   определение в        Событие Load класса Page,         Базовый класс
 нескольких файлах     возникает сразу после инициа-      Page для всех
содержимое которых       лизации элементов формы        страниц ASP.NET
 объединяется для
составления полного
определения класса.
 Может разрабаты-
ваться несколькими
  разработчиками
      Компиляция и сборка
Когда браузером запрашивается страница .aspx, то из файлов .cs папки App_Code динамически генерируется
сборка .dll, и совместно с предкомпилированными сборками папки bin, связывается с Web-приложением.
Если запуск приложения был с отладкой (в файле web.config есть строка <compilation debug=”true” />), то после
передачи сборки рабочему процессу Web-сервера открывается браузер для просмотра результатов работы. Visual
Studio может использовать стандартный IIS, а может включать собственный встроенный Web-сервер.


Конвейер модулей HTTP разбирает (parse) содержимое страницы .aspx вместе с файлом отделенного кода
.aspx.cs и генерирует конкретный экземпляр класса Page текущей страницы. Каждому серверному элементу
управления файла .aspx ставится в соответствие свой экземпляр класса Page.
Например, элемент

            <asp:Label ID="Label1" runat="server"></asp:Label>
преобразуется в экземпляр класса .NET Framework:
            @__ctrl = new global::System.Web.UI.WebControls.Label();

Сформированный экземпляр класса страницы Page компилируется в библиотеку .dll (сборка модулей), которая
загружается в рабочий процесс с CLR. Последующие запросы к странице обрабатываются той же .dll, если
исходный код страницы не менялся. Все эти файлы можно найти в директории « Temporary ASP.NET Files»
текущей версии .NET. Основная задача полученного экземпляра Page (библиотеки .dll) – посылка HTML-кода в
выходной поток.


Если исходный код страницы .aspx изменяется, то при еѐ первом запросе она заново компилируется.
   Предкомпиляция проекта
– заранее компилируемые     .dll-сборки   (в папке   bin) =>
    1. Сайт быстрее работает при первом запуске,
    2. Исходные коды классов (файлы        .cs ) можно скрыть от «посторонних» глаз.

Предкомпиляцию на рабочем сервере можно сделать утилитой          aspnet_compiler      (из соответствующей версии
Framework) с колючем   –v   и двумя параметрами: виртуальный каталог исходного приложения; физический каталог
нового места расположения. Например, для приложения «Калькулятор» (файл
/ASPNET/Work/Calculate/Default.aspx на Web-сервере)               предкомпиляция может иметь вид:


            C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe –v
                       /ASPNET/Work/Calculate C:\Inetpub\wwwroot\newCalculate


Файлы изображений,   web.config, html не компилируются         – они просто копируются по целевому пути. Если

полученный предкомпилированные ресурс будет самостоятельным приложением, то новую папку             newCalculate
необходимо преобразовать в виртуальный каталог IIS. Теперь сайт «Калькулятор» будет сразу (быстро)
выполняться из браузера по адресу:

                                            http://сервер/newCalculate

Здесь подразумевается, что файлы     Default.aspx во всех каталогах сервера загружаются      по умолчанию.
Копирование (публикация) проекта (сайта)
Выбор/создание удаленного сайта
   Редактирование и отладка сайта
             Макет страницы
                                            Тело страницы –
                                              тег <Body>




Результат:



                              Название страницы –
                                   тег <Title>
Появившиеся изменения в HTML-коде
                               Начало дизайна
                                 страницы
                                                    Выравнивание
                                                элементов, колонки надо    Web-элемент          Свойства
                 Web-элемент                      делать при помощи        DropDownList         элемента
                 ImageButton                      HTML-таблицы или
                                                       слоями
                                                                               Web-элемент           События
                                                                                  Panel              элемента




                                                            Добавляйте текст
                                                             Web-элементом
    Выравнивание                                                 Label
рисунков, элементов в                                                                    Панель с палитрой
тексте надо делать при                                                                 элементов управления
     помощи Style




    Результат:
Рассмотрим пример проекта
Web-сайт «Калькулятор»




         Показать работу приложения на сервере ДонНУ
Серверные элементы управления Web
Изменение состава сайта


               Добавить в проект (сайт):
               форму, aspx-страницу…




                                              Код класса новой формы
                                              разместить в отдельном
                                                   файле *.aspx.cs




                   Новая форма будет страницей контента
                   для эталонной страницы (master page)
- класс
- интерфейс
- событие
- метод




Object Browser