Вообще говоря, не существует единственно верного и универсального способа. Каждый из них следует применять в зависимости от используемых источников данных и поставленной задачи. Платформа .NET Framework позволяет гибко использовать данные из любых источников: реляционных или иерархических. Независимо от источника, данные можно сохранять как реляционные или как иерархические в соответствии с конкретными потребностями. Кроме того, если источник данных и полученные после обработки данные должны иметь формат XML, а вы в недостаточной степени владеете технологиями и инструментами XML, то поставленную задачу все равно можно успешно выполнить с помощью реляционных инструментов на основе объектов DataSet и DataTable.
ГЛАВА 11
Web-формы: приложения на основе ASP.NET для работы с базами данных
До сих пор демонстрировались различные способы работы с базой данных на разных этапах создания приложения и способы использования результатов выполнения приложения (на основе объектов DataSet, DataAdapter и Connection). В этой главе эти способы комбинируются для просмотра информации из базы данных в Web-среде с помощью Web-броузера. В контексте платформы.NET Framework Web-страница, которая применяется для извлечения или вставки данных, называется Web-формой (WebForm). Прежде, при создании приложения с помощью технологии ASP, единственным способом извлечения данных из реляционной базы данных было применение объектов ADODB.Connection и ADODB.Recordset. С появлением платформы .NET модель ADO.NET позволяет использовать не только новые классы и параметры, но и встроенную поддержку для работы с XML-данными так, как если бы они были элементами базы данных. Описание новых способов работы на основе технологии ASP .NET начинается с базовых сведений, а затем приводятся более сложные понятия.
После изобретения возможностей использования серверного кода для создания Web-страниц разработчики пытались найти способы его упрощения для конечных пользователей и разработчиков. Рассмотрим следующую бизнес-ситуацию: пользователи могут осуществлять доступ к Web-узлу, получать базовую контактную информацию и звонить по телефону для оформления заказа. (Не так давно именно такими ограниченными возможностями обладали все Web-узлы электронной коммерции.) Проблема заключается в том, что пользователи при этом хотели бы видеть выставленные на продажу товары, причем таких пользователей может быть очень много.
Для организации такого взаимодействия с Web-узлом начали появляться разные языки и технологии создания сценариев. Одной из таких технологий является технология активных серверных страниц (Active Server Pages — ASP). Она предоставляет средства вставки в Web-страницу кода, который выполняется во время обработки Web-сервером поступившего запроса. В контексте разработки приложений эта новинка была революционной: по крайней мере теперь разработчики могли использовать сценарий на языке VBScript, который выполняется на сервере. Этот тип взаимодействия постепенно начал превосходить другие подходы на основе языков JavaScript и ActiveX. Кроме того, язык VBScript был расширен таким образом, чтобы вызывать компилированные COM-объекты на Web-сервере и включать их функции в Web-страницу. На этом этапе появился Microsoft Transaction Server, который теперь называется набором компонентных служб Component Services.
Итак, что же произойдет при смешении серверного кода, клиентских сценариев, а также кода, откомпилированного для обеспечения безопасности и масштабируемости. Именно эти компоненты и образуют основу технологии ASP.NET. Полученный в результате такой комбинации ASPX-файл позволяет использовать мощный серверный код, основанный на полноценном языке программирования, которым привыкли пользоваться разработчики. Теперь поддержка языков программирования С#, Visual Basic, C++, FoxPro, Perl, COBOL и Fortran осуществляется благодаря общеязыковой исполняющей среде (Common Language Runtime — CLR), и эти языки могут использоваться в специальных Web-страницах для более полного удовлетворения требований пользователей.
Кроме того, все ASPX-файлы компилируются и кэшируются, т.е. после использования ASPX-страницы она компилируется во временный DLL-файл, который фактически выполняет всю работу при поступлении следующих запросов. В результате повышается производительность и уменьшается время задержки ответа на запрос.
HTML-элементы управления и серверные элементы управления
Еще одной новинкой технологии ASP.NET является использование серверных элементов управления. Серверный элемент управления кодируется в Web-странице, а все его события и свойства обрабатываются Web-сервером. Серверные элементы управления аналогичны HTML-элементам управления, но обладают существенными преимуществами.
Любому разработчику, которому приходилось создавать Web-страницу с формой ввода данных, уже известны HTML-элементы управления. Для программирования формы ввода данных используется элемент FORM вместе с несколькими элементами INPUT, например для создания текстового поля, списка или флажка, как показано ниже.
<input type="text" name="txtxName" value=" ">
Элемент INPUT также доступен в технологии ASP.NET, но для работы с его содержимым требуется создать клиентский или серверный сценарий. В рассматриваемой бизнес-ситуации поставлена задача обеспечить полную совместимость созданного приложения со всеми типами Web-броузеров. При использовании клиентского сценария всегда существует вероятность, что какой-то Web-броузер не поддерживает данный сценарий либо выполнение сценариев отключено по соображениям безопасности. Для исключения этих проблем и предназначены серверные элементы управления.
Еще один интересный аспект использования серверных элементов управления связан с технологией ActiveX. Эта технология основана на использовании "толстого" клиента. ("Толстый" клиент — это компьютер с богатыми функциональными возможностями и ресурсами, которые часто избыточны с точки зрения сетевых вычислений. — Прим.ред.) По причинам, полное описание которых выходит за рамки данной книги, использование вставленных в Web-страницу элементов управления ActiveX, которыми можно управлять через Internet, было крайне неудачной идеей. В отличие от элемента управления ActiveX, серверный элемент управления не содержит никакого кода, который выполняется на клиентской стороне. Клиент получает только HTML-код, а все операции взаимодействия с пользователям выполняются Web-сервером после получения соответствующего запроса от пользователя ("posting back"). Далее на примере объекта DataGrid показан способ применения серверного элемента управления, который принимает набор данных, обрабатывает его и создает HTML-таблицу, которую можно отобразить в любом Web-броузере. Следует признать, что она несколько отличается от стандартной HTML-таблицы с данными.
НА ЗАМЕТКУ
Серверные элементы управления можно создавать с помощью интегрированной среды разработки Visual Studio .NET.
Завершая сравнение HTML-элементов управления и серверных элементов управления, рассмотрим приведенный ниже фрагмент кода ASP.NET, предназначенного для представления серверного элемента управления, а именно текстового поля txtName.
<asp:TextBox id="txtName" runat="server" text="></asp:TextBox>
Этот серверный элемент управления выполняет точно ту же задачу, которую выполняет HTML-элемент управления из приведенного фрагмента кода. Единственным отличием является то, что это текстовое поле обрабатывается Web-сервером.
Дополнительные преимущества технологии ASP.NET
Описанию технологии ASP.NET посвящено множество книг, здесь же описываются два компонента ASP.NET.
Первый компонент связан со свойством IsPostBack. При создании ASPX-файла (или, иначе говоря, Web-формы) ему по умолчанию передаются данные. Свойство IsPostBack используется для того, чтобы избежать появления сообщений об ошибках при отсутствии таких данных на Web-странице, которую пользователь еще даже не успел увидеть. Свойство IsPostBack имеет значение true, если данная Web-страница запрашивается пользователем, либо значение false, если данная Web-страница загружается самостоятельно впервые. Ниже приводится фрагмент кода с примером использования этого метода.
If Page.IsPostBack Then
' Обработка данных.
End If
Конечно, ASPX-файл или HTML-файл можно использовать для передачи данных другому ASPX-файлу. Это позволяет создать файл с нужной функциональностью, например переадресовать пользователя после проверки и исправления данных к другой Web-странице с помощью метода Response.Redirect.
Еще одно важное достоинство ASP.NET связано с процессом доставки готового приложения. Для этого достаточно скопировать все файлы с одного компьютера на другой. Конечно, на новом компьютере под управлением Web-сервера Internet Information Server (IIS) нужно также создать новый виртуальный каталог с помощью консоли управления IIS ММС. Для этого выберите команду Start→Settings→Control Panel Administrative Tools→Internet Services Manager (Пуск→Параметры→Панель управления→Административные инструменты→Менеджер Internet-служб), в появившемся окне Internet Information Services (Информационные Internet-службы) выберите узел Default Web Site (Web-узел по умолчанию) и щелкните правой кнопкой мыши на нужном каталоге. Выберите в контекстном меню команду Properties. Появится одноименное диалоговое окно; выберите в нем вкладку Virtual Directory (Виртуальный каталог) или Home Directory (Домашний каталог), в зависимости от используемой операционной системы. Если выбранный каталог не сконфигурирован, то в группе элементов управления Application Settings (Параметры приложения) будет присутствовать кнопка Create (Создать). (В противном случае этой кнопки не будет и тогда следует щелкнуть на кнопке Cancel.) После щелчка на кнопке Create и конфигурирования каталога щелкните на кнопке OK для закрытия диалогового окна. Теперь выбранный виртуальный каталог сконфигурирован как приложение.