Опубликован: 04.07.2012 | Уровень: специалист | Доступ: платный
Лекция 11:

Разработка web-приложений на платформе .NET. Системы управления контентом

Интерфейсы C#

Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. Однако методы интерфейса объявляются без указания модификатора доступа, и класс, наследующий интерфейс, обязан полностью реализовать все методы интерфейса. В этом - отличие от класса, наследующего абстрактный класс, где потомок может реализовать лишь некоторые методы родительского абстрактного класса, оставаясь абстрактным классом.

Интерфейс позволяет описывать некоторые желательные свойства, которыми могут обладать объекты разных классов.

Среди интерфейсов, встроенных в библиотеку базовых классов .NET, можно особо выделить такие как:

  • IEnumerable (для работы с наборами объектов, в т.ч. с использованием оператора foreach).
  • IClonable (копирование объектов).
  • IComparable (для сравнения и сортировки объектов).

Пространство имен System.Collections, предназначенное для работы с наборами объектов, поддерживает интерфейсы:

  • ICollection (определяет общие характеристики класса набора элементов).
  • IComparer, IDictionary (позволяет представлять содержимое объекта в виде пар имя-значение).
  • IDictionaryEnumerator (нумерация содержимого объекта, поддерживающего IDictionary).
  • IEnumerable, IEnumerator.
  • IHashCodeProvider (возвращает хэш-код с помощью выбранного алгоритма хэширования).
  • IList (обеспечивает методы добавления, удаления и индексирования элементов в списке объектов).

Сериализация объектов

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

Механизмы сериализации C# и Framework.Net поддерживают два формата сохранения данных - в бинарном файле и XML файле. В первом случае данные при сериализации преобразуются в бинарный поток символов, который при десериализации автоматически преобразуется в нужное состояние объектов. Другой возможный преобразователь запоминает состояние объекта в формате XML.

Если класс объявить с атрибутом [Serializable], то в него встраивается стандартный механизм сериализации, поддерживающий глубокую сериализацию. Если по каким-либо причинам стандартная сериализация разработчика не устраивает, то класс следует объявить наследником интерфейса ISerializable, реализация методов которого позволит управлять процессом сериализации.

Архитектура веб-приложений ASP.NET. Разработка веб-приложений на платформе .NET.

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

ASP.NET внешне во многом напоминает более старую технологию ASP, но в то же время внутреннее устройство ASP.NET существенно отличается от ASP. Система ASP.NET была построена на базе CLR (Common Language Runtime), который является основой всех приложений .NET. Разработчики могут создавать код для ASP.NET, используя языки программирования, входящие в .NET Framework: C#, Visual Basic.NET, JScript.NET и другие.

Рассмотрим более подробно, чем отличается ASP.NET от ASP.

Классический ASP имеет следующие недостатки:

  • Используются только языки сценариев, которые дают большой проигрыш в производительности (из-за их интерпретируемости) и не поддерживают многие возможности объектно-ориентированного программирования.
  • Логика представления (в виде кода HTML) не отделена от бизнес-логики (исполняемого кода), что приводит перемешиванию в одном файле кода HTML с кодом сценария.
  • Невозможно повторно использовать готовые решения в других проектах (возможно только копирование кода сценариев).

В файлах ASP.NET включается код на таких языках программирования как C#, JScript.NET, VisualBasic.NET, что позволяет применять непосредственно в веб-приложениях возможности объектно-ориентированного программирования. Также существенно сокращается объем кода, написанного вручную за счет применения серверных объектов, автоматически генерирующих код элементов управления HTML. Возможно использование стандартной среды разработки Visual Studio.NET, т.е. ASP.NET имеет преимущество в скорости по сравнению со сценарными технологиями, так как при первом обращении код компилируется и помещается в специальный кеш, а впоследствии только исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.

Несмотря на возможность совместной работы ASP и ASP.NET на одном веб-сервере, они не могут использовать общий сеанс. Файлы ASP.NET обрабатываются библиотекой aspnet_isapi.dll (а не asp.dll), которая, в свою очередь, использует для выполнения кода технологию .NET.

Библиотека базовых классов .NET содержит пространства имен 3 основных групп:

  • элементы web-приложений (протоколы, безопасность и др.);
  • элементы графического интерфейса (WebForms) ;
  • web-службы.

Как уже указывалось ранее, ASP.NET использует возможности стандартной среды разработки Visual Studio.Net, и в частности классы библиотеки FCL (Framework Class Library).

Разработчику веб-приложений на ASP.NET доступны классы, входящие в следующие пространства имен:

Пространство имен Содержание
System.Web Организация взаимодействия web-клиента (браузера) с web-сервером (запрос-ответ, cookie и и др.)
System.Web.Caching Поддержка кэширования при работе web-приложений
System.Web.Configuration Настройка web-приложения в соответствии с файлами конфигурации проекта
System.Web.Security Реализация системы безопасности web-приложений
System.Web.Services Организация работы web-сервисов
System.Web.Services.Description
System.Web.Services.Discovery
System.Web.Services.Protocols
System.Web.UI Построение графического интерфейса пользователей web-приложений
System.Web.UI.WebControls
System.Web.HtmlControls

В свою очередь пространство имен System.Web включает в себя пространства имен, названия которых знакомы разработчикам веб-приложений на ASP:

Пространство имен Содержание
HttpApplication Данный класс определяет общие для всех web-приложений члены
HttpApplicationState В данном классе содержится общая информация web-приложения для множества запросов, сеансов и каналов передачи данных
HttpBrowserCapabilities Этот класс используется для получения информации о возможностях клиентского браузера, обращающегося к web-серверу
HttpCookie Поддержка механизма безопасной работы с объектами HTTP cookie
HttpRequest Предоставляет доступ к информации, переданной web-клиентом
HttpResponse Используется для формирования HTTP-ответа сервера

В основу разработки веб-приложений на ASP.NET положена модель разделения кода представления и кода реализации, рекомендуемая Майкрософт при создании динамических документов на с помощью программных кодов. Это делается путем размещения программного кода либо в отдельный файл, либо внутри специального тэга для сценариев. Файл такого рода обычно имеет расширение *.aspx.cs (*.aspx.vb) и имеет имя, совпадающее с именем основного ASPX файла. В принципе такой подход позволяет веб-дизайнеру сконцентрироваться работе с кодом разметки документа с минимальными изменениями программного кода, в обычном ASP внедряемого непосредственно в код разметки.

Взаимодействие пользователя с веб-приложением, реализованном на ASP.NET включает в себя следующие процессы:

  • При запросе страницы ASPX инициируется событие Page_Init, производящее начальную инициализацию страницы и ее объекта.
  • Далее инициируется событие Page_Load, которое может быть использовано, например для установки начальных значений для элементов управления. При этом также можно определить была ли загружена страница впервые или обращение к ней осуществляется повторно в рамках обратной отсылки в ответ на события, связанные с элементами управления, размещенными на странице; т.е. проверить свойство Page.IsPostBack.
  • Далее выполняется проверка валидности элементов страницы с точки зрения корректности введенных пользователем данных.
  • И, наконец, следует обработка всех событий, связанных с действиями пользователя с момента последней обратной отсылки.

Для сохранения данных веб-страницы в промежутках между обращениями к ней в ASP.NET используются состояния отображения (view state).

Если данные, введенные в веб-форму, необходимо сделать доступными другим веб-формам того же приложения, эти данные необходимо сохранить в объектах Application и Session. Объекты Application доступны всем пользователям приложения и могут рассматриваться как глобальные переменные, обращение к которым возможно из любых сеансов. Объекты Session доступны только в рамках одного сеанса, и поэтому они оказываются доступными только одному пользователю.

Серверные элементы управления ASP.NET

Важной особенностью ASP.NET является использование серверных элементов управления на веб-странице (элементы WebForm), которые являются фактически тэгами, понятными веб-серверу. Эти элементы определены в пространстве имен System.Web.UI.WebControls.

Принято выделять три типа серверных элементов управления:

  • Серверные элементы управления HTML - обычные HTML тэги.
  • Элементы управления веб-сервера - новые тэги ASP.NET.
  • Серверные элементы управления для проверки данных (валидации) - применяются для валидации входных данных от клиентского приложения (обычно веб-браузера).

    Преимущества от использования таких элементов при разработке веб-приложений:

  • Сокращается количество кода, написанного вручную (что особенно заметно в для сложных элементов документа). Элемент просто "перетаскивается" из панели инструментов, после чего выполняется настройка его параметров в специальном окне. При этом все изменения автоматически заносятся непосредственно в *.aspx файл.
  • С программной точки зрения каждому из этих элементов управления соответствует определенный класс в библиотеке базовых классов .NET, что позволяет писать для них такой же код как и для любых других классов.
  • Для любого элемента управления WebForm определен набор событий, обрабатываемых на веб-сервере.
  • Для любого элемента управления WebForm предоставляется возможность для проверки ввода данных пользователем.

По умолчанию серверные элементы управления HTML в ASP.NET файлах рассматриваются как текст. Для их программирования требуется добавление атрибута runat="server" в соответствующий HTML элемент. Кроме того, все серверные элементы управления HTML должны быть размещены внутри области действия тэга <form>, также имеющего атрибут runat="server".

Подобно серверным элементам управления HTML элементы управления веб-сервера также создаются на веб-сервере и предполагают добавление атрибута runat="server". Однако они могут и не соответствовать конкретным элементам HTML, но представлять более сложные элементы.

Общий синтаксис для описания таких элементов:

<asp:тип_элемента id="идентификатор" runat="server"/>

Серверные элементы валидации применяются для проверки вводимых пользователем данных.

Имеют следующий синтаксис:

<asp:тип_элемента id="идентификатор" runat="server" />

Работа с источниками данных в ASP.NET

В ASP.NET используются два элемента управления WebForm для управления отображением данных, получаемых из источника данных:

  • DataGrid - элемент управления, отображающий содержимое объекта ADO.NET DataSet в виде таблицы.
  • DataList - элемент управления для выбора значений, заполняемых из источника данных.

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

Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Галина Башкирова
Галина Башкирова

Здравствуйте, недавно закончила курс по проф веб программиованию, мне прислали методические указания с примерами тем, однако темы там для специальности 

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам

 

Елена Кашникова
Елена Кашникова
Россия, братск