Огляд AD0.NET – ЧАСТИНА 6

ADONET 11 містить керований постачальник odbc Простір імен для На замітку цього постачальника в ADONET 20 більше не підтримується Водночас SQL Native Client містить драйвер ODBC, що забезпечує підтримку існуючих додатків, що використовують ODBC Проте видалення простору імен SystemDataODBC з ADONET20 є сигналом завершення підтримки програмного інтерфейсу ODBC API для доступу до даних

Незважаючи на те що обєктні моделі ADONET 1x використовували загальну архітектуру MDAC, в них не існувало єдиного обєкта, що забезпечує виконання команд, читання даних і підтримуючого адаптер даних У них існували різні обєкти, виконують дані завдання, специфічні для класів постачальників, які перебували в різних бібліотеках Виходячи з цього, розробнику доводилося вибирати простір імен, що підходить для конкретного додатка Вбрання простір імен повинно було бути узгоджене з конкретним постачальником

У контексті роботи з SQL Server це мало на увазі використання обєктів, які компанія Microsoft оптимізувала для роботи з SQL Server, в тому числі SqlConnection, SqlCommand SqlDataReader і SqlDataAdapter

Ці специфічні для постачальника класи продовжують підтримуватися Коли джерелом даних є SQL Server, природно, краще використовувати класи, оптимізовані для даного постачальника У цьому випадку можна чекати кращої продуктивності До того ж в ADONET існує альтернативний загальний базовий клас, який можна використовувати як варіант в нових проектах У середовищі, яка повинна підтримувати безліч джерел даних, використання загального класу може зажадати меншого обсягу програмування, ніж дублювання однієї і тієї ж логіки для кожного з постачальників У той же час висока ймовірність того, що програмування з використанням загального базового класу потребують додаткового налаштування під конкретного постачальника

У табл 304 представлені перехресні посилання класів SystemData Common і класів, специфічних для постачальників класів, доступних для кожного з типів, перерахованих в табл 302

При роботі в ADONET 11 з джерелами даних інших СУБД розробнику На замітку необхідно використовувати окреме, але паралельне безліч класів постачальників ADONET для кожного з постачальників При роботі із середовищем NET Framework 11 це відноситься до класів просторів імен SystemDataOleDb, SystemDataOdbc і SystemDataOracleClient Розробники також можуть створювати і додаткових постачальників, а сторонні джерела даних можуть зробити доступними простору імен своїх постачальників Ті ж інтерфейси, які були використані компанією Microsoft для створення включаються класів постачальників, можуть бути використані і для створення додаткових постачальників

Таблиця 304 Посилання на класи з просторів імен ADONET 20

Тип класу (з табл 303)

System

DataCommon

SystemData SQLCIient

SystemData OracleClient

SystemData OleDb

Connection

DbConnection

SqlConnection

OracleConnection

OleConnection

ProviderFactory

DbProviderFactory

SqlClientFactory

OracleClientFactory

OleDbFactory

Command

DbCoirimand

DqlCommand

OracleCommand

OleCommand

Parameter

DbParameter

SqlParameter

OracleParameter

OleParameter

Error

Відсутня

SqlError

Відсутня

OleError

Exception

DbException

SqlException

OracleException

OleException

DataAdapter

DbDataAdapter

SqlDataAdapter

OracleDataAdapter

OleDataAdapter

DataReader

DbDataReader

SqlDataReader

Orас1eDataReader

OleDataReader

Transaction

DbTransaction

SqlTransact ion

OracleTransaction

OleTransaction

У ADONET 20 простір імен System Data Common представило базовий клас для створення незалежного від постачальника програмного коду (часто його називають узагальненим), що використовує загальний базовий клас, спільно використовуваний усіма постачальниками У цій моделі постачальник визначається, і до нього здійснюється доступ за допомогою класу DbProviderFactory Компонентами даного постачальника є DbConnection, DbCommand, DbDataReader і DbDataAdapter Незалежна від постачальника модель дозволяє визначити у файлі конфігурації програми, реєстрі або іншій структурі не тільки рядок підключення, а й самого постачальника, а також приймати ці дані від самого користувача в момент ініціалізації класу підключення Дана модель отримала назву фабричної завдяки своїй здатності автоматично створювати екземпляри класів, специфічних для конкретних постачальників Створювані таким чином класи є спадкоємцями класів відповідних просторів імен (SqlClient, OracleClient або OleClient) З точки зору програміста, результатом такого підходу є спрощення коду та його інваріантність

У багатьох ситуаціях можна очікувати певних вигод від використання простору імен SystemData Common Додатки, які повинні бути здатні запускатися на багатьох платформах баз даних, є першими кандидатами на узагальнення постачальників в ADONET Однак на практиці кожен конкретний постачальник вимагає наявності розширень базової моделі Базовий клас може виявитися не в повній мірі придатним для ис-аользованія деякими постачальниками NET без наявності в програмному коді посилань на специфічні для даного постачальника класи Як результат, програмування з використанням узагальнених класів може виявитися більш трудомістким, ніж використання специфічних для постачальників просторів імен Безсумнівно, в наступних версіях ADONET практичність узагальнених базових класів буде підвищуватися Можливо навіть, що специфічні для постачальників класи, керовані з узагальненого, в майбутньому навіть потраплять у немилість У теперішній же час, мабуть, всім програмістам (зрозуміло, крім самих нерозважливих) має сенс підходити до узагальненої моделі з неабиякою часткою обережності

Більш детальну інформацію про узагальнені базових класах і DBProvider Factory ви можете отримати зі статті Боба Бошем (Bob Beauchemin) Generic Coding with the ADONET 20 Base Classes and Factories та статті доктора Шахрама Хосраві (Shahram Khosravi) Writing Generic Data Access Code in ASPNET 20 and ADONET 20, опублікованих на сайті MSDN за адресами:

http://msdnmicrosoftcom/library/defaultaspurl=/library/ en-us/dnvs05/html/vsgenericsasp

http://msdnmicrosoftcom/library/defaultaspurl=/library/ en-us/dnvs05/html/vsgenericsasp

Керовані постачальники в ADONET володіють деякою часткою інтелекту, якого не було у версії ADO тих же постачальників Наприклад, постачальники NET краще використовують підключення до бази даних Вони встановлюють і розривають зєднання в міру необхідності з метою оптимізації використання ресурсів сервера і клієнта Відмінності між некерованим і керованим постачальником можна легко розбити на чотири категорії

■ Методика доступу до обєктів Некерований постачальник для доступу до необхідних обєктах буде використовувати ідентифікатор COM proglD При роботі з керованим постачальником додаток повністю покладається на клас Command Цей клас також має доступ до ідентифікатора COM proglD, але він приховує від розробника деталі цього доступу, що прискорює процес створення додатків і захищає його від помилок Цей клас також дозволяє раціоналізувати доступ до даних клієнта SQL і робить можливим створення такого коду ADONET, який буде мати один і той же вид, незалежно від того, чи використовує доступ ідентифікатор COM prog ID чи ні

■ Обробка результуючих даних Некерований постачальник для представлення даних у додатку покладається на обєкти Parameter обєкта Command, а також на обєкти Recordset і Stream моделі ADO Керований еквівалент використовує класи Parameter, DataSet, DataTable і DataReader, а також методи ExecuteReader, ExecutePageReader, ExecuteNonQuery і ExecuteScalar обєкта Command і потоки XML Некерований інтерфейс СОМ завжди буде випробовувати перевантаження від перетворення типів даних SQL в типи даних СОМ Керовані постачальники в цьому відношенні мають істотну перевагу, оскільки використовують транспортні потоки, засновані на XML

■ Оновлення даних Так як в некерованою середовищі використовується постійно підтримуване підключення, ресурси також знаходяться в постійному використанні У результаті цього користувач завжди повинен мати підключення до бази даних, а розробнику доводиться витрачати масу часу на створення команд вручну Керована середу використовує підключення, тільки якщо потрібно транспортування даних Внаслідок цього використання ресурсів стає більш ефективним, і користувачеві немає необхідності підтримувати постійне підключення Як буде показано нижче в цьому розділі, керована середу надає й інші засоби автоматизації, включаючи метод CommandBuilder

■ Формат передачі даних Некерована середу використовує передачу двійкових даних Керовані постачальники даних при передачі даних в ADONET 1x покладаються виключно на формат XML Розподілені додатки в ADONET 20 також можуть при передачі використовувати двійкову сериализацию, значно виграючи в обсязі переданих даних у порівнянні з XML, в тих випадках, коли віддаленість застосовна в задачі Віддаленість забезпечує підвищену продуктивність і інтероперабельність у процесах взаємодії додатків NET Якщо або джерело, або приймач не є додатком NET, стандартизований метод передачі даних забезпечує формат XML Це вимагає набагато меншого обсягу програмного коду і менших витрат на підтримку, ніж некеровані методи передачі даних

Відмінності між методами передачі даних некерованих і керованих постачальників вимагають від програміста грунтовного дослідження Формат передачі даних XML використовуваний керованим постачальником, більше підходить для архітектури SOA та Інтернету, оскільки дозволяє передавати дані через брандмауери, які зазвичай блокують двійкові потоки Водночас XML є більш витратним методом передачі даних і не настільки безпечний У минулому було привабливо використовувати ADO для потреб локальних баз даних і ADONET для розподілених додатків, так як формат XML явно програє в розмірах і продуктивності Також у цьому мала значення оманлива підвищена захищеність двійкових даних в порівнянні з байтами ASCII при передачі по приватної мережі Двійкова сериализация ADONET 20 має перевагами продуктивності при напрямку даних в зовнішні потоки, таким чином послаблюючи, часто збиткове, прагнення одночасно підтримувати моделі ADO і ADONET

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*