Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


ЗАКЛЮЧЕНИЕ

В современном мире в основе любой информационной системы лежит база данных, а точнее СУБД. И выбор той или иной СУБД существенно влияет на функциональные возможности информационной системы и проектные решения. Предложение на рынке СУБД огромно, и перед разработчиком встает сложный выбор, какую СУБД использовать. Ситуация усугубляется при необходимости обеспечить поддержку различных источников данных, причем каждый из таких источников данных может хранить и обрабатывать данные по- своему. Кроме того, в различных языках программирования различна поддержка работы с той или иной СУБД. То есть, еще возникает проблема несоответствия обработки информации большинством СУБД и способам обработки информации различными языками программирования.

Решение выдвинутых проблем предлагается в рассмотренной в данном пособии технологии ADO .NET, разработанной компанией Microsoft, и включенной в их новую платформу .NET Framework. ADO .NET, как часть Microsoft .NET Framework, представляет собой набор средств и слоев, позволяющих приложению легко управлять и взаимодействовать со своим файловым или серверным хранилищем данных (рис 136).

Рис. 136. Место ADO.NET в организации доступа к данным

ADO.NET наследует предыдущую технологию доступа к данным, разработанную Microsoft, которая называется классической ADO, или просто ADO. Хотя ADO .NET и ADO - это полностью различные архитектуры доступа к данным.

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

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

Архитектуру ADO .NET можно разделить на две фундаментальные части: подключаемую и автономную. Все классы в ADO . NET можно поделить по этому критерию. Единственное исключение составляет класс DataAdapter, который является посредником между подключенной и автономной частями ADO .КЕТ.

Подключаемая часть ADO .NЕТ представляет собой набор объектов подключений. Объекты подключений разделяются в ADO .NET по конкретным реализациям для различных СУБД. То есть для подключения к базе данных SQL SERVER имеется специальных класс SqlConnection. Эти отдельные реализации для конкретных СУБД называются поставщиками данных .NET.

В подключаемой части ADO.NET имеются следующие основные классы:

Connection. Этот класс, позволяющий устанавливать подключение к источнику данных ( OleDbConnection, SqlConnection, OracleConnection).

Transaction. Объект транзакций (OleDbTransaction, SqlTransaction, Oracle- Transaction). В ADO .NET имеется пространство имен System.Transaction.

DataAdapter. Это своеобразный шлюз между автономными и подключенными аспектами ADO .NET. Он устанавливает подключение, и если подключение уже установлено, содержит достаточно информации, чтобы воспринимать данные автономных объектов и взаимодействовать с базой данных. (DataAdapter - SqlDataAdapter, OracleDataAdapter)

Command. Это класс, представляющий исполняемую команду в базовом источнике данных.

Parameter. Объект параметр команды.

DataReader. Это эквивалент конвейерного курсора с возможностью только чтения данных в прямом направлении.

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

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

Приложение должно разделять дорогостоящий ресурс - открытое подключение - и совместно использовать его с другими пользователями. Для этих целей введен пул подключений. По умолчанию пул подключений включен. При запросе ADO . NET неявно проверяет, имеется ли доступное неиспользуемое физическое подключение к базе данных. Если такое подключение имеется, то оно и используется. Для принятия решения, имеется ли такое физическое подключение или нет, ADO .МЕТ учитывает загрузку приложения, и если поступает слишком много одновременных запросов, ADO .^ЕТ может удерживать одновременно открытыми несколько физических подключений, то есть увеличивать при необходимости количество подключений.

Вторым наиболее ресурсоемким объектом в ADO.NET являются транзакции, отвечающие за корректность изменений в БД. Транзакции - это набор операций, которые для обеспечения целостности и корректного поведения системы должным быть выполнены успешно или неудачно только все вместе. Обычно транзакции следуют определенным правилам, известным как свойства ACID, это: неделимость (Atomic), согласованность (Consistent), изолированность (Isolated) и долговечность (Durable). Для гибкого управления поведением транзакций используются уровни изоляции, которые описаны в перечислении IsolationLevel, это: Chaos, ReadUncommited, ReadCommited, RepeatableRead, Snapshot, Serializable.

В ADO .NET реализован мощный механизм поддержки транзакций БД. Сама технология ADO .NET поддерживает транзакции одиночной БД, которые отслеживаются на основании подключений. Но она может задействовать пространство имен System.Transactions для выполнения транзакций с несколькими БД или транзакций с несколькими диспетчерами ресурсов.

В ADO.NET класс подключений используется для начала транзакции.

Все управляемые в .NET поставщики, доступные в .NET Framework OleDb, SqlClient, OracleClient, ODBC имеют свои собственные реализации класса транзакций. Все эти классы реализуют интерфейс IDbTransaction из пространства имен System.Data.

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

Одни лишь подключенные приложения не удовлетворяют всем требованиям, предъявляемым к современным распределенным приложениям. В автономных приложениях, созданных с помощью ADO .NET, используют иной подход. Для обеспечения автономности используются объекты DataAdapter. Они осуществляют выполнение запросов, используя для этого объекты подключения. А результаты выполнения, то есть данные, передает автономным объектам. Благодаря такому принципу автономные объекты не знают о существовании объектов подключения, так как напрямую не работают с ними. Таким образом, реализация объекта, хранящего данные, не зависит от конкретного поставщика данных, а именно от СУБД. Поскольку конкретная реализация адаптера данных зависит от соответствующего источника данных, конкретные адаптеры данных реализованы в составе конкретных поставщиков.

Автономные приложения обычно подключаются к базе как можно позже и отключаются как можно раньше. Важным элементом в такой схеме подключения и предоставления автономного доступа к данным является контейнер для табличных данных, который не знает о СУБД. Такой незнающий о СУБД автономный контейнер для табличных данных представлен в библиотеках ADO .NET классом DataSet или DataTable.

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

Напомним несколько основных классов автономной модели ADO .NET:

DataSet. Класс DataSet является ядром автономного режима доступа к данным в ADO.NET. Лучше всего рассматривать его с позиции, как будто в нем есть своя маленькая СУБД, полностью находящаяся в памяти.

DataTable. Больше всего этот класс похож на таблицу БД. Он состоит из объектов DataColumn, DataRow, представляющих из себя строки и столбцы.

DataView. Это объект представлений базы данных.

DataRelation. Этот класс позволяет задавать отношения между различными таблицами, с помощью которых можно проверять соответствие данных из различных таблиц.

Технология ADO.NET в полной мере способна предоставить механизм для доступа к любому источнику данных, тем самым давая разработчику мощный механизм взаимодействия с базами данных, способный в полной мере реализовать все потребности, возникающие при проектировании ИС.

 



<< ПредыдущаяОглавлениеСледующая >>