ADO.NET – новая стратегия доступа к данным

Программирование с помощью библиотек .NET

В рамках концепции .NET получили эволюционное развитие все, ранее созданные технологии программирования, например, для визуализации графических данных GDI++ (в счет своей предшественницы GDI), ADO .NET для разработки интерфейса программных приложений доступа к базам данных (в счет ADO), для разработки Web-приложений – ASP .NET (была ASP).

ADO.NET представляет собой не просто усовершенствованную версию ADO, скорее это новая стратегия доступа к данным.

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

ADO.NET представляет первичные средства доступа к данным: через объекты DataReader и DataSet. Объект DataReader предназначен исключительно для последовательного считывания информации, и поэтому используется для быстрого и эффективного доступа к потоковым данным. Объект DataSet представляет собой копию данных, размещенных в памяти. Рассмотрим подробнее место этих объектов в архитектуре ADO.NET (рис. 1).

Рисунок 1

Объект DataReader работает в режиме активного подключения и позволяет выполнять только последовательное извлечение из хранилища данных, доступных для чтения. Подключение к базе данных остается открытым, пока вы работаете с объектом DataReader, и должно быть закрыто, когда работа с ним будет завершена.

Объект DataReader изначально был создан для максимально быстрого доступа к информации, которая после извлечения должна выводиться на экран, после этого соединение может быть разорвано. Соответственно, объект не предназначен для навигации по результирующему множеству в произвольном направлении или модификации данных.

Объект DataSet можно считать главным объектом в ADO.NET. Он может содержать несколько таблиц, извлеченных из различных источников данных. Таблицы в объекте DataSet могут быть связаны между собой отношениями. По сути, объект DataSet является временной базой данных, хранимой в памяти, которая не связана активными подключениями с источниками данных.

ADO .NET не предполагает унифицированного набора типов для связи со всеми системами управления базами данных (СУБД). Вместо этого ADO .NET поддерживает множество поставщиков данных, каждый их которых оптимизирован для взаимодействия с СУБД конкретного вида, в частности для Oracle, SQL Server и ODBC.

Упрощенно говоря, поставщик данных – это набор типов (классов), определенных в конкретном пространстве имен библиотеки классов и «понимающий» как общаться с конкретным источником данных.

Все базовые компоненты ADO .NET имеют конкретные реализации в виде типов поставщика данных. Например, для работы с Microsoft SQL Server (версии 7.0 и выше) в пространстве имен System.Data.SqlClient содержатся типы SqlConnection, SqlDataAdapter, SqlDataReader, SqlCommand.