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

Лекция№8 Технология ASP.Net : методы доступа к данным. Трассировка страниц.

Аннотация: Данная лекция состоит из двух независимых друг от друга частей: трассировки веб - страниц и методах доступа к данным.

1. Трассировка веб – страниц

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

Трассировка добавляет диагностические сведения и пользовательские сообщения трассировки в выходной поток страницы и посылает эти данные запрашивающему обозревателю. Кроме того, для просмотра этих сведений можно использовать специальное средство просмотра трассировки ( Trace.axd ), отображающее сведения трассировки для каждой страницы приложения ASP.NET. Сведения трассировки могут помочь исследовать ошибки или нежелательные результаты, полученные во время обработки запросов к странице ASP.NET.

Можно настроить отдельные страницы для отображения данных трассировки. Альтернативный способ — настроить файл приложения Web.config таким образом, чтобы сведения трассировки отображали все страницы, если только данная страница явно не отключает трассировку. Настройка трассировки на уровне приложения удобна, поскольку не нужно изменять отдельные страницы для включения и отключения трассировки.

Включение трассировки через файл Web.Config

Функцию трассировки ASP.NET можно включить и в файле Web.config приложения. Для этого выполните следующее:

  1. Откройте файл Web.Config, связанный с сайтом. Это XML-файл, содержащий параметры веб-сайта.
  2. Найдите элемент trace, который выглядит примерно так:
    <trace
    enabled="false"
    requestLimit="10"
    pageOutput="false"
    traceMode="So rtByTime"
    localOnly="true"
    mostRecent="true"
    />
  3. Измените нужные параметры.
  4. Запустите веб-приложение.
  5. Перейдите на страницу trace.axd веб-приложения

Параметры трассировки ASP.Net в Web.Config

Параметр Описание
enabled Включение трассировки.
pageOutput Отображение трассировочных данных на трассируемой веб – странице.
localOnly Значения параметра: local requests only и all requests. Первый – выполняется трассировка только запросов и операций, отправленных с компьютера, на котором работает веб – сервер. Второй – выполняется трассировка всех запросов и операций.
traceMode Включает сортировку трассировочных данных по времени и категории
requestLimit Определяет число элементов, хранимых в кэше
mostRecent Значения параметра: Most Recent Trace Results, Oldest Trace Results. Most Recent Trace Results – кэш продолжает обновляться. Oldest Trace Results – кэш не обновляется до следующего перезапуска приложения, по достижении определенного числа запросов.

Просмотр данных трассировки

После включения функции трассировки ASP.NET можно просматривать ее результаты на каждой веб-странице ( pageOutput="true" ) или на странице trace.axd текущего веб-приложения. При переходе на страницу trace.axd будет показан список кэшированных результатов трассировки. Щелкните любой из них для просмотра результатов отдельного запроса страницы (аналогичных результатам трассировки, отображаемым на отдельных веб-страницах при pageOutput = True)

2. Методы доступа к данным

Веб-приложения обычно получают доступ к источникам данных для сохранения и извлечения динамических данных. Можно создать код для доступа к данным с помощью классов из пространства имен System.Data (обычно называемого ADO.NET) и пространства имен System.Xml. Такой подход широко использовался в предыдущих версиях ASP.NET.

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

  • Выбор и отображение данных.
  • Сортировка, разбиение по страницам и кэширование данных.
  • Обновление, вставка и удаление данных.
  • Фильтрация данных с помощью параметров среды выполнения.
  • Создание сценариев с отношением "основной/подробности" с использованием параметров.

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

Элементы управления источником данных

  • AccessDataSource
  • LinqDataSource
  • ObjectDataSource
  • SiteMapDataSource
  • SqlDataSource
  • XmlDatasource

Элементы управления с привязкой к данным

  • Элементы управления списка ( BulletedList, CheckBoxList, DropDownList, ListBox и RadioButtonList );
  • DataList - отображает данные в виде таблицы и позволяет отображать записи данных в различных структурах, например, упорядочивая их по столбцам или строкам. Чтобы разрешить пользователям изменять и удалять запись в таблице, необходимо настроить элемент управления DataList ;
  • DetailsView - отображает одновременно одну запись в виде таблицы и позволяет перемещаться по нескольким записям, а также выполнять операции вставки, обновления и удаления записей;
  • FormView - отображает одновременно одну запись из источника данных и позволяет перемещаться по нескольким записям, а также выполнять операции вставки, обновления и удаления записей подобно элементу управления DetailsView ;
  • GridView - отображает список элементов данных посредством привязки полей данных к столбцам и отображения заголовка столбца для идентификации поля;
  • ListView - отображает данные из источника данных в формате, который задается разработчиком с помощью шаблонов. Шаблон содержит форматирование, элементы управления и выражения привязки данных, которые используются для размещения данных;
  • Menu - позволяет иерархически организовать элементы, связанные с командами и обработчиками событий;
  • Repeater - отображает список, доступный только для чтения, из набора записей, полученного от источника данных;
  • TreeView - отображает иерархические данные в структуре дерева с элементами, которые могут разворачиваться и сворачиваться.
Объекты DataSource

BaseDataBoundControl — родитель элементов управления, связываемых с данными, производный от WebControl. Данный класс имеет свойства DataSource и DataSourcelD. Свойство DataSource определяет объект, откуда элемент управления извлекает данные. Объект DataSource обычно является экземпляром класса, в котором реализованы интерфейсы /Enumerable, IListSource, IDataSource или IHierarchicalDatasource. Свойство DataSourcelD определяет идентификатор элемента управления, содержащего источник данных, например SqlDataSource. Обычно устанавливают одно из свойств: либо DataSource, либо DataSourcelD. Связываемый с данными элемент управления автоматически соединяется с элементом-источником данных во время исполнения кода, вызывая на источнике метод DataBind, который, в свою очередь, вызывает метод Data Bound.

AccessDataSource

Представляет базу данных Microsoft Access для использования совместно с элементами управления с привязкой к данным

ASP код создания AccessDataSource:

<asp:accessdatasource
        id="AccessDataSource1"
        runat="server"
        datasourcemode="DataSet"
        datafile="~/App_Data/Northwind.mdb"
        selectcommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"
        updatecommand="Update Employees SET FirstName=?,LastName=?,Title=? WHERE EmployeeID=@EmployeeID">
</asp:accessdatasource>
SqlDataSource

Представляет базу данных SQL для элементов управления с привязкой к данным.

<asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT FirstName, LastName, Title FROM Employees">
</asp:SqlDataSource>
XmlDataSource

Представляет источник данных XML для элементов управления с привязкой к данным

<asp:xmldatasource
        id="XmlDataSource1"
        runat="server"
        datafile="books.xml" />
LinqDataSource

Позволяет использовать LINQ на страницах ASP.NET при помощи текста разметки, для извлечения и изменения данных из объекта данных

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Where="Price > 50"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
ObjectDataSource

Представляет бизнес-объект, предоставляющий данные для элементов управления с привязкой к данным в многоуровневой архитектуре веб-приложений

<asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployees"
         typename="Samples.AspNet.CS.EmployeeLogic" />
SiteMapDataSource

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

<asp:SiteMapDataSource
                id="SiteMapDataSource1"
                runat="server" />

У ЭУ с привязкой к данным присутствует свойство DataSource, которое указывает источник данных для ЭУ. Непосредственно привязка осуществляется вызовом метода Control.DataBind.

Более подробно элементы управления источником данных и с привязкой к источнику данных будут рассмотрены в рамках "Технология ASP.Net: методы доступа к данным, управление состоянием" .

LINQ

LINQ (Language-Integrated Query) представляет собой набор функций Visual Studio 2008, расширяющих мощные возможности запроса в синтаксисе языка C# и Visual Basic. LINQ представляет стандартные, легко изучаемые шаблоны для создания запросов и обновления данных; технология может быть расширена для поддержки потенциально любого типа хранилища данных. Visual Studio 2008 включает сборки поставщиков LINQ, позволяющие использовать LINQ с коллекциями платформы .NET Framework, базами данных SQL Server, наборами данных ADO.NET и XML-документами.

Большей частью LINQ ориентирован на запросы — будь то запросы, возвращающие набор подходящих объектов, единственный объект или подмножество полей из объекта или множества объектов. В LINQ этот возвращенный набор объектов называется последовательностью (sequence).

Компоненты LINQ
  • LINQ to Objects
  • LINQ to XML
  • LINQ to DataSet
  • LINQ to SQL
  • LINQ to Entities

Традиционно запросы к данным выражаются в виде простых строк без проверки типов при компиляции или поддержки IntelliSense. Кроме того, разработчику приходится изучать различные языки запросов для каждого типа источника данных: базы данных SQL, XML-документов, различных веб-служб и т. д. LINQ делает запрос первоклассной конструкцией языка в C# и Visual Basic. Можно создавать запросы к строго типизированным коллекциям объектов с помощью зарезервированных слов языка и знакомых операторов. На следующем рисунке показан частично выполненный запрос LINQ к базе данных SQL Server в C# с полной проверкой типов и поддержкой IntelliSense.


В Visual Studio запрос LINQ можно написать на Visual Basic или C# с базами данных SQL Server, XML-документами, наборами данных ADO.NET и любой коллекцией объектов, поддерживающей интерфейс IEnumerable или универсальный интерфейс IEnumerable<(Of <(T>)>). Также планируется поддержка LINQ для платформы объектов ADO.NET, третьими лицами создаются поставщики LINQ для многих веб-служб и других реализаций базы данных.

Запросы LINQ можно использовать в новых проектах или параллельно с запросами, не относящимися к LINQ, в существующих проектах. Единственное требование заключается в наличии целевой версии проекта .NET Framework — 3.5. 1http://msdn.microsoft.com/ru-ru/library/bb397897.aspx

Пример запроса к XML:

using System; 
using System.Linq; 
using System.Xml.Linq; 
XElement books = XElement.Parse 
( @"<books> 
    <book>
      <title>Pro LINQ: Language Integrated Query in C# 2008</title>
      <author>Joe Rattz</author> 
    </book> 
    <book>
      <title>Pro WF: Windows Workflow in .NET 3.0</title>
      <author>Bruce Bukovics</author>
    </book> 
    <book>
      <title>Pro C# 2005 and the .NET 2.0 Platform, Third Edition</title> 
      <author>Andrew Troelsen</author> 
    </book>
  </books>"); , 
var titles = from book in books.Elements ("book")
where (string) book.Element("author") == "Joe Rattz" 
select book.Element("title"); 
foreach(var title in titles) Console.WriteLine(title.Value);

Пример запроса к SQL:

using System.Linq; 
using System.Data.Linq; 
using nwind;
Northwind db = new Northwind (@"Data Source=.\SQLEXPRESS; Initial Catalog=Northwind"); 
var custs = from с in db.Customers where c.City == "Rio de Janeiro" select c; 
foreach (var cust in custs)
   Console.WriteLine("{0}", cust.CompanyName);
LinqDataSource

Элемент управления LinqDataSource позволяет использовать LINQ на страницах ASP.NET, путем указания свойств а тексте разметки. Элемент управления LinqDataSource использует LINQ для SQL для автоматической генерации команд данных.При извлечении данных из коллекции, содержащейся в памяти, можно задать в свойстве ContextTypeName класс, содержащий коллекцию данных. Свойству TableName следует передать свойство или поле, возвращающее коллекцию данных. Например, если есть класс с именем Person, содержащий свойство с именем FavoriteCities, возвращающее массив строковых значений. В этом случае следует присвоить свойству ContextTypeName значение Person, а свойству TableName значение FavoriteCities.

При отправке запроса базе данных следует сначала создать классы сущностей, представляющие базу данных и ее таблицы. Для создания данных классов можно воспользоваться Сред. Объектно-реляционный конструктор или программой SqlMetal.exe. Затем следует задать в свойстве ContextTypeName класс, представляющий базу данных, и присвоить свойству TableName свойство, представляющее таблицу базы данных.

Элемент управления LinqDataSource применяет операции данных в следующем порядке:

  1. Where (укажите возвращаемые записи данных).
  2. Order By (сортировать).
  3. Group By (группировать записи данных с общими значениями).
  4. Order Groups By (сортировка групп данных).
  5. Select (определение возвращаемых полей или свойств).
  6. Auto-sort (сортировка записей данных по свойству, выбранному пользователем).
  7. Auto-page (извлекает набор записей данных, выбранных пользователем).

Пример использования LinqDataSource в качестве источника данных и элемента управления с привязкой к данным приведен в "Технология ASP.Net: методы доступа к данным, управление состоянием" .

Дополнительные источники

  1. http://msdn.microsoft.com/ru-ru/library/bb386420.aspx
  2. http://msdn.microsoft.com/ru-ru/library/bb386420.aspx
  3. http://msdn.microsoft.com/ru-ru/library/system.web.ui.webcontrols.linqdatasource.aspx