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

Багато розробники страждають від того, що помилково вважають ADONET всього лише черговим оновленням обєктної моделі ADO Модель ADO створювалася для підтримки додатків, що використовують архітектуру клієнт / сервер і які передбачають наявність постійного зєднання між користувачем і джерелом даних протягом усього циклу виконання програми Ризикуючи занадто спростити відмінності між цими моделями, зазначу, що ADO зберігає стан в джерелі даних, а ADONET створювалася для можливості підтримки стану за відсутності підключення до бази даних Одним з головних достоїнств середовища NET є відсутність необхідності наявності постійного зєднання програми до бази даних протягом усього циклу виконання В деякій мірі ця конструктивна мета була досягнута за допомогою технології XML, яка лягла в основу ADONET Більшою мірою управління станом виконується на рівні додатку ADONET в кеші локального додатки, відомому як клас DataSet У ADONET 20 управління станом було розширено з допомогою асинхронного виконання команд і використання множинних активних результуючих наборів даних (MARS)

У наступних розділах будуть описані обєкти ADONET як результат природної еволюції обєктів ADO, а також відзначені нові функції, що зявилися у версії ADONET 20 Іншими словами, при розгляді концепцій ADONET дискусія буде побудована на основі інформації про ADO, представленої раніше в цьому розділі ADONET являє собою керовану обєктну модель з функціональними можливостями, наближеними до класичної моделі ADO, але дозволяють створювати більш масштабовані програми, зокрема, в ізольованому середовищі, яку можна зустріти в багатьох додатках, орієнтованих на служби і Web-служби і використовують багаторівневу архітектуру і ASPNET

Обєктна модель ADONET

Обєктна модель ADONET відрізняється від тієї, яка використовувалася в ADO Ця модель складніша, хоча, безсумнівно, і більш потужна

Найбільш разючим відмінністю стало запровадження класу кеша даних в памяті, званого DataSet Цей обєкт ADONET можна розділити на два компоненти: власне набір даних і постачальник даних DataSet є спеціальним обєктом, який містить одну або кілька таблиць Дані в обєкт DataSet витягуються з джерела даних за допомогою постачальника і зберігаються в робочій області програми Цими даними можна маніпулювати безпосередньо в додатку DataSet є підмножиною джерела даних, визначеного у властивостях постачальника Серед властивостей постачальника наступні: Connection, Command, DataReader і DataAdapter Кожен з цих обєктів також має можливості, не існували в обєкті постачальника моделі ADO Наприклад, обєкт DataAdapter може обслуговувати більше одного підключення і набору правил Як і в багатьох інших керованих обєктах, для доступу з коду програми до різних обєктів, що містяться в основних обєктах, використовуються перерахування

■ Постачальник даних Містить класи, що створюють підключення, що виконують команди, обслуговуючі обєкт читання даних і забезпечують підтримку адаптера даних Обєкт Connection підтримує канал до бази даних Обєкт Command дозволяє клієнту запитувати інформацію з бази через адаптер даних На додаток до забезпечення доступу до даних обєкт адаптера дозволяє клієнтського кешу синхронізуватися з джерелом даних і оновлювати його Обєкт DataReader є одностороннім (тобто забезпечує тільки читання даних) каналом звязку з базою даних в моделі ADO Водночас обєкт DataAdapter забезпечує підтримку зєднання в реальному часі, тобто двосторонній обмін даними

■ Набір даних Надає інформацію, що міститься в базі даних Цей обєкт складається з двох колекцій: DataTableCollection і DataRelationCollec-tion DataTableCollection містить стовпці і рядки таблиці поряд з обмеженнями, застосовуваними до цієї інформації DataRelationCollection містить інформацію про відносини, використаних для створення набору даних

У табл 303 представлений огляд найбільш часто використовуваних класів даних ADONET

Таблиця 303 Огляд класів ADONET 20

Тип класу

Опис

Connection

Створює фізичне зєднання між СУБД і обєктом DataAdapter, DataReader АБО factory

ProviderFactory Новий клас AD0NET 20 Кожен постачальник NET реалізує клас

ProviderFactory, який управляється із загального базового класу DBProviderFactory Клас factory містить методи створення специфічних для постачальника компонентів AD0NET Ідея, закладена в цьому класі, дозволяє розробнику написати узагальнений програмний код, який використовує постачальника, що визначається в ході виконання програми Можливі постачальники, які можуть використовуватися, зберігаються в файлі machine conf ig

Command

Визначає дія, що виконується в СУБД, наприклад вставку, оновлення або видалення рядка Клас DataAdapter містить обєкти команд, необхідних для виконання запитів до бази даних, а також видалення, вставки і редагування її записів

Parameter

Параметр команди

Error

Інформація про помилку або попередження, повернутому з бази даних

У SQL Server ця інформація містить номер і текст помилки, а також її частоту

Exception

Виняток додатки, що генерується, коли AD0NET 20 зустрічає помилку Клас Error створюється класом Exception Клас Exception використовується в AD0NET 20 для обробки помилок у виразах try .. catch

DataAdapter

Перетворює дані з джерела даних постачальника в знаходиться в памяті обєкт DataSet АБО DataReader Клас DataAdapter виконує всі запити, перетворення даних з одного формату в іншій, а також відображення таблиць Один обєкт DataAdapter може підтримувати одне відношення бази даних У результаті колекція може мати будь-який рівень складності DataAdapter також відповідає за відправку запитів на нові підключення та закриття підключень після отримання даних

DataReader

Обслуговує зєднання з базою даних в реальному часі Однак цей обєкт забезпечує роботу тільки механізму читання даних До того ж курсор DataReader працює тільки в прямому напрямку Цей обєкт зазвичай використовують для швидкого отримання даних з локальної таблиці, коли не існує потреби в оновленні бази даних Обєкт DataReader блокує подальші обєкти DataAdapter та асоційовані з ними обєкти Connection Виходячи з цього, не забувайте закривати обєкт DataReader, як тільки потреба в ньому відпала

DataSet

Містить локальну копію даних, витягнутих одним або декількома обєктами DataAdapter Обєкт DataSet використовує локальну копію даних, так що підключення до бази даних не обслуговується в реальному часу Користувач може внести всі зміни в локальну копію, а потім додаток зажадає оновлення (Оновлення можуть виконуватися в пакетному режимі або по одному запису за прохід) Обєкт DataSet підтримує інформацію як про вихідний, так і про поточний стан кожної модифікованої рядка Якщо вихідна рядок даних відповідає знаходиться в базі даних, то обєкт DataAdapter виконує затребованное оновлення в іншому випадку DataAdapter повертає помилку, яку додаток повинен обробити Набори даних DataSet в ADONET 20 можуть бути типізований і нетипізований Обєкти DataSet визначаються в просторі імен SystemData, вони не специфічні для конкретного постачальника З постачальником асоційовані лише класи DataAdapter

Тип класу

Опис

Transaction

Це новий клас AD0NET 20 Обєкт транзакції AD0NET за замовчуванням є звичайним контейнером, що працюють з одним джерелом даних Якщо код ADO зажадає в транзакції інше джерело даних, транзакція буде непомітно перетворена в розподілену або багатоетапну, не вимагаючи від розробника додаткового програмування

Visual Studio 2005 пропонує розробнику клас TableAdapter – набір дан-Назаметку них однієї таблиці, який можна використовувати в додатку, подібне до обєкта DataSet ADONET 20 Якщо робота виконується з однією таблицею, то клас TableAdapter істотно легше програмувати, ніж використовувані ним компоненти ADONET 20 Клас TableAdapter не керується з класу SystemDataDataSet, як всі інші набори даних Більш того, клас TableAdapter навіть не є складовим компонентом середовища NET Framework Він знаходиться на рівні абстракції, підтримуваному програмою Visual Studio 2005 Всі обєкти TableAdapter успадковують з класу System Component Component Model Це означає, що дані обєкти повністю інтегровані з інструментами Visual Studio, такими як Data Grid До того ж базовим класом для TableAdapter може служити будь-який з постачальників NET, оснащений класом DataTable Базовий клас задається при створенні обєкту TableAdapter Клас TableAdapter захищає типи і містить всі властивості і методи, необхідні для підключення до джерела даних, добування інформації з таблиці та оновлення джерела даних Більш детальну інформацію про клас TableAdapter ви зможете знайти на сайті MSDN у статті TableAdapters in Visual Studio 2005”:

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

Керовані постачальники

У ADONET 20 міститься чотири керованих постачальника

■ OracleClient Постачальник від Microsoft для баз даних Oracle Цей постачальник вимагає установки на компютері клієнта СУБД Oracle

■ OleDb Сполучний постачальник для використання постачальників OLE DB в ADONET

■ SqlClient Постачальник від Microsoft для SQL Servber 70 і пізніших версій Точно так само як постачальник OLE DB безпосередньо повязує SQL Server і ADO, SQLClient використовує закритий протокол для прямого підключення до SQL Server з ADONET

■ SqlServerCe Постачальник від Microsoft для СУБД SQL Server РЄ Mobile Edition

Як вже говорилося раніше, постачальник OracleClient вимагає наявності встановленого клієнта СУБД Oracle Постачальник OleDB NET для забезпечення тих же функцій покладається на компоненти MDAC SqlClient і SqlServerCe містяться в бібліотеці SQL Native Client

Джерело: Нільсен, Пол 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>

*

*