Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_собственные.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
701.16 Кб
Скачать

13. Поставщики данных ado.Net. Поведение объектов подключения.

Поставщики данных ADO.NET. ADO.NET не предлагает единого набора типов для связи со всеми СУБД. Вместо этого в ADO.NET имеются различ поставщики данных (провайдеры данных), каждый из к-ых оптимизирован для взаимод-вия с конкретн СУБД. Первая выгода этого подхода состоит в том, что можно запрограммировать особый поставщик данных для доступа к любым уникальн особенностям конкретн СУБД. Еще одна выгода — конкретн поставщик данных может напрямую подключиться к механизму соотв СУБД, не пользуясь междууровневым слоем отображения.По сути, поставщик данных — это мост м-ду приложением и источником данных.

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

В рамках .NET Framework поставляется набор поставщиков данных, например, поставщик в стиле Oracle, Microsoft SQL Server и OLE DB/ODBC (рис.):

Рисунок – Уровни модели поставщиков данных

Поставщик SQL Server.NET Data Provider предоставляет оптимизированный доступ к БД Microsoft SQL Server (версии 7.0 и выше) и взаимодействует с ней напрямую по «родному» протоколу передачи данных SQL Server. Он расположен в пространстве имен System.Data.SqlClient. Поставщик OLE DB предоставляет доступ к любому источнику данных, который имеет драйвер OLE DB. Это включает базы данных SQL Server версий, предшествующих 7.0. Он расположен в пространстве имен System.Data.OleDb. Поставщик Oracle предоставляет оптимизированный доступ к базам данных Oracle (версии 8 и выше).

Примеч. Если ваше приложение работает с СУБД Microsoft Access, то следует подключить следующие директивы использования пространства имен:

using System.Data; using System.Data.OleDb;

Если ваше приложение работает с СУБД Microsoft SQL Server, то следует подключить следующие директивы использования пространства имен:

using System.Data; using System.Data.SqlClient;

Любой поставщик данных определяет набор типов, обеспеч-щих базовые функцион возможности. Базовые объекты поставщика данных ADO.NET, их базовые классы определены в пространстве имен System.Data.Common:

*Тип объекта→[Базовый класс]→(Реализованные интерфейсы)→Назначение*

Connection → [ SqlConnection; DbConnection; OracleConnection] → (IDbConnection) → Объект соединения. Позволяет подключаться к хранилищу данных и отключаться от него. Кроме того, объекты подключения обеспечивают доступ к соответствующим объектам транзакций

Command → [DbCommand; SqlCommand] → (IDbCommand) → Объект команды. Представляет SQL-запрос или хранимую процедуру. Кроме того, объекты команд предоставляют доступ к объекту чтения данных конкретн поставщика данных.

DataReader → [DbDataReader] → (IDataReader; IDataRecorder) → Объект чтения данных. Предоставляет однонаправленный доступ к данным только для чтения на стороне сервера.

DataAdapter → [DbDataAdapter; SqlDataAdapter; OracleDataAdapter] → (IDataAdapter; IDbDataAdapter) → Объект адаптера данных. Пересылает наборы данных из хранилища данных к вызывающему процессу и обратно. Адаптеры данных содержат подключение и набор из 4х внутрен объектов команд для выборки, вставки, изменения и удаления информации в хранилище данных.

Parameter → [DbParameter, SqlParametrs] → (IDataParameter; IDbDataParameter) → Объект параметра. Представл именованный параметр в параметриз. запросе

Transaction → [DbTransaction; SqlTransaction] → (IDbTransaction) → Объект транзакции. Выполняет транзакцию базы данных.

Хотя имена соотв-щих типов для разных поставщиков данных оказываются разными (напр, DbDataAdapter, SqlDataAdapter, OracleDataAdapter), каждый из таких объектов получается из одного и того же базового класса, что предполагает идентичность работы с ними.

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]