- •1.Архитектура приложений.
- •4.Основные принципы проектирование приложений
- •5.Схема типовой архитектуры приложения назначение компонентов схем.
- •6.Сквозная функциональность
- •Архитектура .Net Framework
- •23) Общие этапы жизненного цикла страницы
- •Проверка подлинности пользователей
- •Авторизация пользователей
- •Доступ к отсоединенным данным
- •Доступ к отсоединенным данным
- •Ado .Net. Доступ к данным
- •События класса DataTable
- •Листинг 1: html, txt
Архитектура .Net Framework
Платформа состоит из четырех групп программных продуктов:
набор языков, куда входят С# и VisualBasic .NET; набор инструментальных средств разработки, в том числе VisualStudio .NET; обширная библиотека классов для построения Web-служб и приложений, работающих в Windows и в Интернете; а также среда выполнения программ CLR ( CommonLanguageRuntime — общеязыковая среда выполнения), в которой выполняются объекты, построенные на этой платформе;
набор серверов .NET EnterpriseServers, ранее известных под именами SQL Server 2000, Exchange 2000, BizTalk 2000 и др., которые предоставляют специализированные функциональные возможности для обращения к реляционным базам данных, использования электронной почты, оказания коммерческих услуг "бизнес-бизнес" (В2В) и т. д.;
богатый выбор коммерческихWeb-служб, называемых .NetMyServices. За умеренную плату разработчики могут пользоваться этими службами при построении приложений, требующих идентификации личности пользователя и других данных;
новые некомпьютерные устройства, поддерживающие средства .NET, — от сотовых телефонов до игровых приставок.
Платформа .NET Framework является надстройкой над операционной системой, в качестве которой может выступать любая версия Windows1. На сегодняшний день платформа .NET Framework включает в себя:
четыре официальных языка: С#, VB.NET, Managed C++ (управляемый C++) и JScript .NET;
объектно-ориентированную среду CLR ( CommonLanguageRuntime ), совместно используемую этими языками для создания приложений под Windows и для Internet;
ряд связанных между собой библиотек классов под общим именем FCL (FrameworkClassLibrary).
Рис. 1.2. Архитектура .NET Framework
Самым важным компонентом платформы .NET Framework является CLR ( CommonLanguageRuntime ), предоставляющая среду, в которой выполняются программы. Главная ее роль заключается в том, чтобы обнаруживать и загружать типы .NET среда активизирует объекты, производит проверку безопасности, размещает объекты в памяти, выполняет их, а также освобождение памяти
Common Type System (сокр. CTS, рус. Общая система типов) — часть .NET Framework, формальная спецификация, определяющая, как какой-либо тип (класс, интерфейс, структура, встроенный тип данных) должен быть определён для его правильного выполнения средой .NET.
CLS (CommonLanguageSpecification — общая спецификация для языков программирования) как раз и представляет собой набор правил, которые во всех подробностях описывают минимальный и полный комплект функциональных возможностей, которые должен обязательно поддерживать каждый отдельно взятый .NET-компилятор для того, чтобы генерировать такой программный код
Набор базовых классов платформы — нижний уровень FCL — не только прячет обычные низкоуровневые операции, такие как файловый ввод/вывод, обработка графики и взаимодействие с оборудованием компьютера, но и обеспечивает поддержку большого количества служб, используемых в современных приложениях (управление безопасностью, поддержка сетевой связи, управление вычислительными потоками, работа с отражениями и коллекциями и т. д.).
Над этим уровнем находится уровень классов, которые расширяют базовые классы с целью обеспечения управления данными и XML. Классы данных позволяют реализовать управление информацией, хранящейся в серверных базах данных. В число этих классов входят классы SQL (StructuredQueryLanguage, язык структурированных запросов), дающие программисту возможность обращаться к долговременным хранилищам данных через стандартный интерфейс SQL. Кроме того, набор классов, называемый ADO.NET, позволяет оперировать постоянными данными. Платформа .
2..NETFrameworkкомпилируеткодвсех .NETязыков( таких, какVisualBasic .NET, VisualC++.NETandVisualC#.NET ) вкодMicrosoftIntermediateLanguage ( промежуточныйязыкMicrosoft, MSIL ), используяMSIL-компилятор. Высокоуровневыеязыкииспользуют компилятор, чтобыпреобразоватькодвмашинныйкодоперационнойсистемы, итолькоэтаоперационнаясистемапойметтакойкод. Но когда мы компилируем .NET-код в MSIL-код, мы получаем не характерный для какой-либо операционной системы код. Итак, нам нужно совершить еще один шаг - преобразовать MSIL-код в код, специфичный для каждой операционной системы. Это выполняет Just-In-Time компилятор (дословно: только-во-время). .NET Framework использует JIT-компилятор, чтобы преобразовать код промежуточного языка ( MSIL ) в машинный язык, специфичный для данной операционной системы, и только теперь .NET-приложение может выполнятся на этой системе. Итак, вот эти два шага компиляции C#-кода: сначала мы преобразуем C#-код в MSIL-код ( неспецифичный для какой-либо операционной системы код, это код для .NET Framework и только она может понять его), а затем JIT-компилятор преобразует MSIL-код в машинный. Почему 2 шага, а не один?
Существует несколько причин компиляции .NET-приложений в 2 шага. Cейчас мы узнаем некоторые из них. Код всех .NET-языков компилируется сначала в MSIL, (это называется межъязыковое взаимодействие) понятный .NET. Я имею ввиду, что .NET.-Framework понимает и обрабатывает MSIL-код, а не операционная система.
12. Назовите типы серверных элементов управления и объясните назначение каждого из них.
Серверные элементы управления ASP.NET являются неотъемлемой частью архитектуры ASP.NET. По сути, серверные элементы управления представляют собой классы в среде .NET Framework, представляющие визуальные элементы веб-формы.
ASP.NET предлагает множество серверных элементов управления, которые делятся на несколько категорий:
Серверные элементы управления HTML
Это классы, в которых содержатся стандартные HTML-элементы. За исключением атрибута runat="server" объявление серверных элементов управления HTML ничем не отличается от объявления других элементов управления. Двумя наиболее яркими представителями серверных элементов управления являются HtmlAnchor (представляющийописание<а>) и HtmlSelect (представляющий описание<select>).
Веб-элементы управления
Эти классы дублируют функции базовых HTML-элементов, но обладают более согласованным и значащим набором свойств и методов, которые упрощают их объявление и доступ к ним. В качестве примеров можно назвать элементы управления HyperLink, ListBox и Button. В VisualStudio вы найдете базовые элементы управления на вкладке Standard (Стандартные) в окне Toolbox (Панель инструментов).
Многофункциональные элементы управления
Эти усовершенствованные элементы управления могут генерировать большой объем HTML-разметки и даже клиентский JavaScript-код для создания интерфейса. В качестве примеров можно назвать элементы управления Calendar, AdRotator и TreeView. В VisualStudio многие многофункциональные элементы управления доступны на вкладке Standard (Стандартные) в окне Toolbox.
Элементы управления проверкой достоверности
Этот набор элементов управления позволяет быстро проверять достоверность связанного элемента управления ввода на предмет соблюдения нескольких стандартных или пользовательских правил..
Элементы управления данными
Эти элементы управления включают сложные сетки и списки, предназначенные для отображения больших объемов данных, с поддержкой дополнительных свойств вроде создания шаблонов, редактирования, сортировки и разбиения на страницы. Этот набор также содержит элементы управления источником данных, позволяющие привязываться к различным источникам данных декларативно, без написания дополнительного кода.
Элементы управления навигацией
Эти элементы управления предназначены для отображения карт сайта и позволяют пользователю перемещаться с одной страницы на другую.
Элементы управления входом в систему
Эти элементы управления поддерживают аутентификацию с помощью форм, модель ASP.NET для аутентификации пользователей по базе данных и отслеживания их состояния. Вместо написания собственных интерфейсов для работы с аутентификацией с помощью форм вы можете применять эти элементы управления для работы с настраиваемыми страницами
13) Домен приложения — это устанавливаемая средой CLR граница, которая гарантирует, что одно приложение не сможет влиять на другое приложение (или видеть хранящиеся в его памяти данные). Следующие характеристики являются прямым следствием модели домена приложения:
Все веб-страницы в одном веб-приложении совместно используют одни и те же ресурсы, находящиеся в памяти — глобальные данные приложения, данные сеансов отдельных пользователей, а также кэшированные данные. Эта информация не доступна напрямую, другим приложениям ASP.NET или ASP.
Все веб-страницы в одном веб-приложении совместно используют одни и те же основные конфигурационные настройки. Однако можно настраивать некоторые параметры конфигурации в отдельных подкаталогах одного и того же виртуального каталога. Например, можно установить только один механизм аутентификации для веб-приложения, независимо от того, какое количество подкаталогов в нем имеется.
С помощью кода в файле global.asрx, расположенном в виртуальном каталоге приложения, можно присоединять обработчики событий, которые будут реагировать на эти глобальные события приложений.
Другими словами, виртуальный каталог является базовой групповой структурой, определяющей границы приложения ASP.NET. Допустимое приложение ASP.NET вполне может содержать единственную веб-форму (файл .aspx).
Для создания доменов приложений ASP.NET использует технологию отложенной, или "ленивой" инициализации. Это означает, что домен для веб-приложения создается при первом получении запроса на страницу в этом приложении.
В случае изменения приложения среда ASP.NET автоматически обновляет домены приложений. Одним из примеров может быть модификация файла web.config. Другой пример — замена существующего файла веб-страницы или DLL-файла сборки. В обоих этих случаях ASP.NET запускает новый домен приложения для обработки всех будущих запросов и сохраняет существующий домен приложения в рабочем состоянии до тех пор, пока не завершится обработка всех незаконченных запросов
14) .Управление состоянием в ASP.NET.
Новый экземпляр класса веб-страницы создается каждый раз при отправлении страницы на сервер. Обычно в традиционном веб-программировании все сведения, связанные со страницей, и элементы управления на странице теряются при каждом цикле обработки. Например, если пользователь ввел сведения в текстовое поле, то эти сведения будут потеряны в ходе цикла обработки от веб-обозревателя или клиентского устройства к серверу.
Чтобы преодолеть это ограничение, свойственное традиционному веб-программированию, в ASP.NET включено несколько параметров, которые помогают сохранить данные как на уровне страниц, так и на уровне приложения. Это следующие свойства:
Состояние представления.
Состояние элемента управления.
Скрытые поля.
Файлы cookie.
Строки запроса.
Состояние приложения.
Состояние сеанса.
Свойства профиля.
Состояние представления, состояние элемента управления, скрытые поля, объекты cookie и строки запросов включают хранение данных на стороне клиента различными способами. Однако состояние приложения, состояние сеанса и параметры профиля хранят данные в памяти на сервере. Каждый параметр имеет свои преимущества и недостатки, в зависимости от сценария.
15)
Архитектура ADO.NET.
Платформа .NET Framework включает собственную технологию доступа к данным — ADO.NET. Эта технология состоит из управляемых классов, позволяющих приложениям .NET подключаться к источникам данных (обычно реляционным базам данных), выполнять команды и управлять автономными данными. Маленькое чудо ADO.NET заключается в том, что эта технология позволяет писать более-менее одинаковый код для доступа к данным — как в веб-приложениях, так и в клиент-серверных настольных приложениях, и даже в однопользовательских приложениях, подключаемых к локальной базе данных.
Поставщики данных в ADO.NET
Поставщик данных (dataprovider) — это набор классов ADO.NET, которые позволяют получать доступ к определенной базе данных, выполнять команды SQL и извлекать данные. По сути, поставщик данных — это мост между вашим приложением и источником данных.
В первом приближении поставщик данных можно рассматривать как набор типов, определенных в данном пространстве имен, который предназначен для взаимодействия с конкретным источником данных. Однако независимо от используемого поставщика данных, каждый из них определяет набор классов, обеспечивающих основную функциональность. В таблице ниже приведены некоторые общие основные объекты, их базовые классы и основные интерфейсы, которые они реализуют:
Тип объекта |
Базовый класс |
Соответствующие интерфейсы |
Назначение |
Connection |
Db |
IDb |
Позволяет подключаться к хранилищу данных и отключаться от него. Кроме того, объекты подключения обеспечивают доступ к соответствующим объектам транзакций |
Command |
Db |
IDb |
Представляет SQL-запрос или хранимую процедуру. Кроме того, объекты команд предоставляют доступ к объекту чтения данных конкретного поставщика данных |
DataReader |
Db |
IDb |
Предоставляет доступ к данным только для чтения в прямом направлении с помощью курсора на стороне сервера |
DataAdapter |
Db |
IDb |
Пересылает наборы данных из хранилища данных к вызывающему процессу и обратно. Адаптеры данных содержат подключение и набор из четырех внутренних объектов команд для выборки, вставки, изменения и удаления информации в хранилище данных |
Parameter |
Db |
IDb |
Представляет именованный параметр в параметризованном запросе |
Transaction |
Db |
IDb |
Инкапсулирует транзакцию в базе данных |
Конкретные имена этих основных классов различаются у различных поставщиков (например, SqlConnection, OracleConnection, OdbcConnection и MySqlConnection), но все эти объекты порождены от одного и того же базового класса (в случае объектов подключения это DbConnection), который реализует идентичные интерфейсы (вроде IDbConnection). Поэтому если вы научитесь работать с одним поставщиком данных, то легко справитесь и с остальными.
Одной из ключевых идей, лежащих в основе модели поставщиков ADO.NET, является расширяемость. Другими словами, разработчики могут создавать собственные поставщики для патентованных источников данных. В действительности доступно множество подтверждающих это примеров, которые демонстрируют, как создавать настраиваемые поставщики ADO.NET, служащие оболочками для нереляционных хранилищ данных, таких как файловая система или служба каталогов. Некоторые независимые производители также продают собственные поставщики данных для .NET.
В рамках .NET Framework поставляется небольшой набор из четырех поставщиков:
SQL Server- Предоставляет оптимизированный доступ к базам данных SQL Server (версии 7.0 и выше).
OLE DB- Предоставляет доступ к любому источнику данных, который имеет драйвер OLE DB. Это включает базы данных SQL Server версий, предшествующих 7.0.
Oracle-Предоставляет оптимизированный доступ к базам данных Oracle (версии 8i и выше).
16)
Cтандартизация в Адо.нет
Но даже несмотря на то, что разные поставщики данных .NET используют различные классы, все они некоторым образом стандартизированы. Точнее говоря, каждый поставщик основан на одном и том же наборе интерфейсов и базовых классов. Так, например, объект Connection реализует интерфейс IDbConnection, который определяет такие ключевые методы, как Open() и Close(). Подобная стандартизация гарантирует, что каждый класс Connection будет работать одинаковым образом и предоставит один и тот же набор ключевых свойств и методов.
"За кулисами" различные поставщики используют совершенно разные низкоуровневые вызовы и API-интерфейсы. Например, поставщик данных SQL Server применяет патентованный протокол TDS (TabularDataStream — поток табличных данных) для взаимодействия с сервером. Преимущества этой модели не сразу очевидны, но весьма существенны:
• Поскольку каждый поставщик использует одни и те же интерфейсы и базовые классы, можно писать обобщенный код доступа к данным (с приложением небольших дополнительных усилий), работая с интерфейсами, а не классами поставщиков.
• Поскольку каждый поставщик реализован отдельно, он может использовать соответствующую оптимизацию. Кроме того, специализированные поставщики могут добавлять нестандартные средства, которых не имеют другие поставщики (например, возможность SQL Sever выполнять XML-запросы).
ADO.NET также имеет другой уровень стандартизации — DataSet. Класс DataSet — это контейнер данных общего назначения, которые извлекаются из одной или более таблиц источника данных. DataSet полностью обобщен; другими словами, специализированные поставщики не определяют собственных специализированных версий класса DataSet.
Независимо от того, какой поставщик данных применяется, можно извлекать данные и помещать их в полностью автономный DataSet одинаковым образом. Это облегчает отделение кода, извлекающего данные, от кода, обрабатывающего их. В случае смены лежащей в основе базы данных придется изменить только код, извлекающий данные, но если используется DataSet, а информация имеет одну и ту же структуру, модифицировать способ ее обработки не понадобится.
17) . Транзакция — это набор операций, который должен либо выполниться успешно, либо не выполниться, причем как единое целое. Целью транзакции является гарантия того, что данные всегда находятся в корректном, согласованном состоянии.
Например, рассмотрим транзакцию, которая передает $1000 со счета A на счет B. Ясно, что здесь присутствует две операции:
• снять $1000 со счета А;
• добавить $1000 на счет B.
Предположим, что приложение успешно выполнило шаг 1, но из-за какой-то ошибки шаг 2 завершился сбоем. Это ведет к несогласованию данных, поскольку общая сумма денег в системе теперь не точна. Пропало $1000.
Транзакции позволяют избежать проблем подобного рода, поскольку гарантируют, что изменения будут зафиксированы в источнике данных только в том случае, если все шаги пройдут успешно. Поэтому в рассматриваемом примере, если шаг 2 сорвется, то изменения, выполненные на шаге 1, не будут зафиксированы в базе данных. Это гарантирует, что система останется в одном из двух корректных состояний — начальном (когда деньги не переведены) или конечном (когда деньги дебетованы с одного счета и кредитованы на другой).
Транзакции характеризуются четырьмя свойствами, которые называются свойствами ACID. Здесь ACID представляет перечисленные ниже концепции:
Атомарность (Atomic)
Все шаги транзакции должны либо выполниться успешно, либо отмениться. Если не все шаги транзакции завершены, она не трактуется как завершенная.
Согласованность (Consistent)
Транзакция переводит лежащую в основе базу данных из одного стабильного состояния в другое.
Изолированность (Isolated)
Каждая транзакция — независимая сущность. Одна транзакция не должна влиять на другие, запущенные одновременно с ней.
Устойчивость (Durable)
Изменения, которые происходят во время транзакции, сохраняются постоянно на каком-то носителе (обычно на жестком диске), прежде чем транзакция будет объявлена успешной. Поддерживается ведение журналов, чтобы база данных могла быть восстановлена в корректное состояние, даже в случае сбоя оборудования или сети.
18) .Правила безопасного кодирования
Разумеется, только безопасная архитектура и проектное решение не могут сделать приложение абсолютно защищенным. После разработки безопасной архитектуры и проектного решения понадобится также написать безопасный код.
При написании кода веб-приложений всегда имейте в виду следующие правила:
Никогда не доверяйте пользовательскому вводу
Предполагайте, что каждый пользователь является злоумышленником, пока он не докажет обратное. Таким образом, всегда строго проверяйте пользовательский ввод. Разрабатывайте свой код проверки достоверности так, чтобы он проверял ввод только правильных значений, а не
Никогда не используйте конкатенацию строк для формирования операторов SQL
Всегда применяйте параметризованные операторы, чтобы приложение не было уязвимо для атак внедрением SQL.
Никогда не выводите данные, введенные пользователем, на веб-страницу перед их проверкой и кодированием
Пользователь может ввести некоторые фрагменты кода HTML которые инициируют межсайтовую сценарную уязвимость (XSS). Поэтому всегда используйте HttpUtility.HtmlEncode() для отмены специальных символов вроде < или> перед выводом их на страницу или применяйте веб-элемент управления, который выполняет такое кодирование автоматически.
Никогда не размещайте важные данные в скрытых полях веб-страницы
Скрытые поля могут быть легко изменены простым просмотром исходного кода веб-страницы, модификацией и сохранением в файле. Затем злоумышленник просто может отправить локально модифицированную копию веб-страницы на сервер. Существуют подключаемые модули браузеров, которые упрощают такой прием, делая его не сложнее отправки электронной почты в MicrosoftOutlook.
Никогда не сохраняйте важные данные в состоянии представления
Состояние представления - это просто еще одно скрытое поле на веб-странице, и оно может быть легко декодировано и просмотрено. Шифрование состояния представления помогает защитить информацию, ценную только в течение ограниченного интервала времени, но имейте в виду, что даже шифрованные данные однажды могут быть взломаны, если у злоумышленника есть достаточно времени, ресурсов и мотивации.
Защищайте свои cookie-наборы
Всегда защищайте свои cookie-наборы аутентификации при использовании аутентификации с помощью форм и устанавливайте таймауты насколько возможно короткими, и не длиннее, чем это действительно необходимо.
Применяйте SSL
В общем случае, если веб-приложение обрабатывает данные, защищайте весь веб-сайт с помощью SSL. Не забывайте защищать даже каталоги с графическими изображениями или другими файлами, которые не управляются приложением напрямую через SSL.
Конечно, это лишь несколько общих важных моментов. Чтобы получить общую картину ситуации для конкретного приложения, необходимо разработать модель угроз, чтобы составить полный список потенциальных опасностей. Вдобавок вкладывайте средства в постоянное обучение разработчиков, потому что хакерские приемы и технологии также не стоят на месте, как и все прочие технологии.
Если вы пренебрегаете хотя бы одним из приведенных правил, то все прочие средства защиты становятся в большей или меньшей мере бесполезными.
19. Понятие стража
Хороший способ
повысить степень безопасности приложения
— размещать компо- ненты в таком месте,
которое требует защиты. Концептуальный
шаблон стража (gatekeeper) применяет модель
конвейера к организации инфраструктуры
безопасности. Эта модель помогает
укрепить безопасность. Модель стражей
предполагает, что безопасное приложение
всегда имеет больше ме- ханизмов защиты,
чем это необходимо. Каждый из этих
механизмов реализован в виде стража,
отвечающего за проверку некоторых
условий защиты. Если один из таких стра-
жей не сработает, то атакующий столкнется
со следующим стражем в конвейере. И чем
больше стражей имеется в вашем приложении,
тем труднее приходится злоумышлен-
нику. На самом деле эта модель отвечает
ключевому принципу создания безопасных
приложений: обеспечивать насколько
возможно высокую степень защиты и
создавать максимум проблем нарушителям.
На рис. 19.1 показан конвейер стражей. В
конце этого конвейера можно видеть за-
щищенный ресурс (которым может быть что
угодно, даже ваш собственный код стра-
ницы). Защищенный ресурс будет доступен
или выполнен только в том случае, если
все стражи откроют к нему доступ. Если
хотя бы один из них откажет в доступе,
обработка запроса будет прекращена и
клиент получит исключение, связанное
с безопасностью. Реализация центрального
механизма безопасности в такой манере
— вообще хо- рошая идея. Точно так же вы
можете защитить бизнес-уровень своего
приложения. Инфраструктура приложений
ASP.NET также применяет этот механизм.
Среда ASP.NET включает несколько стражей,
каждый из которых проверяет несколько
условий и та- ким образом защищает ваше
приложение. В последующих разделах
настоящей главы вы ознакомитесь со
стражами, которые включает в себя
платформа ASP.NET, и с зоной ответственности
каждого из них.
20.Понятие уровней безопасности
В основном для большей части веб-приложений основные задачи для реализации защиты (помимо идентифицированных во время моделирования угроз) всегда одни и те же. • Аутентификация. Прежде всего, вы должны аутентифицировать пользователей. Аутентификация задает вопрос: кто идет? В конечном итоге она определяет, кто работает с вашим приложением на другой стороне. • Авторизация. Теперь, когда известно, кто работает с приложением, понадобится решить, какие операции данный пользователь может выполнять и к каким ресур- сам обращаться. Другими словами, авторизация отвечает на вопрос: каков уро- вень допуска? • Конфиденциальность. Когда пользователь работает с приложением, вы должны гарантировать, что никто другой не сможет видеть важные данные, которые он обрабатывает. Таким образом, необходимо шифровать канал между браузером клиента и веб-сервером. Более того, возможно, придется шифровать данные, со- храняемые в базе данных (или в форме cookie-наборов на стороне клиента), чтобы даже администратор базы данных или другой персонал компании не мог видеть эти данные. • Целостность. И, наконец, вы должны гарантировать, что данные, передаваемые между клиентом и сервером, не изменяются в результате неавторизованного вме- шательства. Снизить уровень этой угрозы позволяют цифровые подписи. ASP.NET включает базовую инфраструктуру для выполнения аутентификации и ав- торизации. Библиотека базовых классов .NET Framework включает ряд классов в про- странстве имен System.Security, которые предназначены для шифрования и подписи данных. Более того, SSL — стандартизированный способ обеспечения конфиденциаль- ности и целостности данных, передаваемых между клиентским браузером и веб-серве- ром. Давайте рассмотрим каждую из этих концепций более подробно.
21.
В данном пошаговом руководстве показано, как изменить существующий веб-сайт ASP.NET таким образом, чтобы использовать в его работе возможности маршрутизации ASP.NET. После выполнения инструкций, описанных в данном пошаговом руководстве, на сайте появятся три новые веб-страницы. Гиперссылки на одной из страниц позволяют перейти на две другие страницы с использованием маршрутов. Поскольку эти гиперссылки используют для создания URL-адресов ссылок маршрутизацию, их не требуется изменять при смене имен или местоположения целевых страниц.
В этом пошаговом руководстве рассматриваются способы решения следующих задач при минимальном объеме кода.
Задание пользовательских шаблонов URL-адресов, не зависящих от имен физических файлов.
Создание URL-адресов на основе значений параметра URL-адреса маршрута с использованием разметки или кода.
Получение значений, переданных в сегменты URL с помощью разметки или кода, на маршрутизируемой странице.
Проект веб-сайта для VisualStudio с исходным кодом этого примера размещен на следующей странице: загрузка.
Обязательные компоненты
Для работы с этим пошаговым руководством необходимы следующие компоненты:
VisualStudio 2010 или более поздняя версия.
Веб-сайт ASP.NET, предназначенный для .NET Framework 4 или более поздних версий. Если не имеется веб-сайта, с которым можно работать, см. Пошаговое руководство. Создание базовой веб-страницы в VisualStudio.
Создание маршрутов
Маршруты сопоставляют шаблоны URL-адресов с физическими файлами. Чтобы добавить на веб-сайт маршруты, можно добавить их в статическое свойство (Shared в VisualBasic) Routes класса RouteTable с помощью метода RouteCollection.MapPageRoute.
В следующей процедуре создается метод, который будет использоваться для добавления маршрутов. Вызов этого нового метода осуществляется из обработчика Application_Start со страницы Global.asax.
Добавление метода в файл Global.asax для добавления маршрутов
Если веб-сайт еще не содержит файл Global.asax, добавьте его, выполнив следующие действия:
В обозревателе решений щелкните правой кнопкой мыши веб-проект и выберите команду Добавить новый элемент.
Выберите Глобальный класс приложения и нажмите кнопку Добавить.
Откройте файл Global.asax.
После директивы Application добавьте директиву Import для пространства имен System.Web.Routing, как показано в следующем примере.
VB
<%@ ImportNamespace="System.Web.Routing" %>
После метода Session_End добавьте следующий код.
VB
SubRegisterRoutes(ByValroutesAsRouteCollection)
EndSub
C#
voidRegisterRoutes(RouteCollectionroutes)
{
}
В следующей процедуре в этот метод добавляется код для создания маршрутов.
В методе Application_Start вызовите RegisterRoutes, как показано в следующем примере:
VB
SubApplication_Start(ByValsenderAsObject, ByVal e AsEventArgs)
RegisterRoutes(RouteTable.Routes)
EndSub
Данный код передает статическое свойство (Shared в VisualBasic) Routes класса RouteData в RegisterRoutes.
Предыдущая процедура добавила пустой метод, который можно использовать для регистрации маршрутов. Теперь добавьте в данный метод код, добавляющий на веб-сайт маршруты.
После завершения этой процедуры приложение будет принимать URL-адреса следующего вида:
http://сервер/приложение/SalesReportSummary/2009
http://сервер/приложение/SalesReport/en-US/2009
http://сервер/приложение/ExpensesRoute/
http://сервер/приложение/ExpensesRoute/2009/
http://сервер/приложение/ExpensesRoute/en-US/2009?extrafield=value
Функция маршрутизации ASP.NET применяется к URL-адресам, похожим на адреса страниц Sales.aspx и Expenses.aspx.
Добавление маршрутов
Добавьте в метод RegisterRoutes следующий код:
C#
VB
routes.MapPageRoute("", _
"SalesReportSummary/{year}", _
"~/sales.aspx")
22) Важной особенностью ASP.NET является использование серверных элементов управления на веб-странице (элементы WebForm ), которые являются фактически тэгами, понятными веб-серверу. Эти элементы определены в пространстве имен System.Web.UI.WebControls.
Принято выделять три типа серверных элементов управления:
Серверные элементы управления HTML – обычные HTML тэги.
Элементы управления веб-сервера – новые тэги ASP.NET.
Серверные элементы управления для проверки данных (валидации) – применяются для валидации входных данных от клиентского приложения (обычно веб-браузера).
Преимущества от использования таких элементов при разработке веб-приложений:
|
