2. Доступ к данным с помощью ADO.NET
2.1. Краткий обзор ADO.NET
2.2. Сравнение ADO и ADO.NET
ADO.NET является преемником Microsoft ActiveX Data Objects (ADO). Это W3C стандартизированная
модель программирования для создания распределенных прикладных программ,
нацеленных на совместное использование данных. Подобно ADO, ADO.NET является
программным интерфейсом (API) для прикладного программного обеспечения,
позволяющим обращаться к данным и другой информации. ADO.NET поддерживает такие
современные требования, как создание клиентского интерфейса к базам данных на
фронтальном уровне и на уровне промежуточного слоя объектов клиентских
приложений, инструментальных средств, языков программирования или Internet
браузера.
Технология ADO.NET разработана на основе промышленных стандартов. ADO.NET, подобно ADO,
обеспечивает интерфейс доступа к OLE DB - совместимым источникам данных, таким,
как Microsoft SQL Server 2000. Прикладные программы, позволяющие
пользователям совместно использовать
данные, могут использовать ADO.NET для подключения к источниками данных, а
также для поиска, управления, и модификации этих данных. Также, прикладные
программы (далее ПП) могут использовать OLE DB для управления данными,
хранящимися в не относительных форматах, таких, как Microsoft Excel.
В решениях, требующих офлайнового или удаленного доступа к данным, ADO.NET использует XML
для обмена данными между программами или с Веб страницами. Любой компонент,
который обслуживает XML, также может использовать и компоненты ADO.NET. Если
передача пакетов компонентом ADO.NET подразумевает поставку набора данных в
файле XML, компонентом, способным обеспечить его получение, может быть только
компонент ADO.NET. Передача данных в XML – формате даёт возможность
программистам легко отделить обработку данных от компонент пользовательского интерфейса
data-sharing ПП, разместив их на отдельных серверах. Это может существенно
повысить эффективность и надёжность многопользовательских систем.
Для распределенных ПП, использование наборов данных XML в ADO.NET обеспечивает
лучшую эффективность, чем использование COM для офланового обслуживания данных
в ADO. Поскольку передача наборов данных происходит через файлы XML, описанные
в очень простом, принятом повсюду стандарте и являющиеся (по сути) обычными
текстовыми файлами, компоненты ADO.NET не имеют ни одного из архитектурных
ограничений COM. Наборы данных XML, используемые в ADO.NET избавлены также от
необходимости конвертации данных в рекордсете для получения типов данных,
применимых в COM. Фактически, любые два компонента могут совместно использовать
наборы данных XML при условии, что они оба используют ту же самую схему
форматирования набора данных XML. ADO.NET обладает хорошей масштабируемостью,
что требуется для совместно использующих данные ПП, работающих на основе Веб.
Такие Веб-программы могут обслужить десятки, сотни, а то и тысячи
пользователей. ADO.NET не применяет длительные блокировки баз данных или такие
активные подключения, которые на долгое время монополизируют ресурсы сервера,
являющимися (как правило) весьма ограниченными. Это позволяет увеличивать число
пользователей без значительного увеличения утилизации ресурсов системы.
ADO.NET - эволюционное развитие ADO. Самый простой путь быстрого понимания преимуществ
ADO.NET состоит в сравнении с ADO.
Термин |
ADO |
ADO.NET |
Резидентное представление данных в памяти |
Использует объект RecordSet, который напоминает отдельную таблицу.
|
Использует объект DataSet, который может содержать одну или более таблиц, представленных объектами DataTable
|
Отношения между множеством таблицами
|
Требует, чтобы запрос JOIN транслировал данные из объединяемых таблиц базы данных в отдельную, результирующую таблицу.
|
Поддерживает объект DataRelation, чтобы сопоставить строки в одном объекте DataTable со строками в другом объекте DataTable.
|
Инспектирование данных
|
Последовательное сканирование данных DataSet
|
Использует навигационную парадигму для непоследовательного доступа к строкам в таблице. Следует за отношениями, чтобы передвигаться от строк в одной таблице к
соответствующим строкам в другой таблице.
|
Офлайновый доступ
|
Использует RecordSet, для которого типична поддержка соединения, представленная объектом Connection. Вы подключаетесь к базе данных посредством запросов к OLE DB
провайдеру.
|
Подключается к базе данных посредством стандартизированных запросов к объекту DataSetCommand, который подключается к OLE DB провайдеру (а иногда,
непосредственно к API, обеспечивающемуся СУБД).
|
Программируемость
|
Использует объект Connection, чтобы передать команды, адресуемые источникам данных, лежащим в основе конструкции данных.
|
Использует строгий формат программирования характеристик XML. Данные включают в себя собственные описатели, поэтому, имена
элементов кода отражают реальные проблемы, решаемые кодом. Лежащие в основе конструкций данных типы таблиц, строки, и таблицы, делают код проще для
понимания и написания.
|
Совместное использование офлайновый данных между уровнями или компонентами
|
Использует COM для передачи RecordSet в офлайне. Поддерживаются только те типы данных, которыми располагает стандарт COM. Требуется преобразование типов, которое
отнимает системные ресурсы.
|
Передает DataSet с XML файлом. Формат XML не имеет никаких ограничений на типы данных и не требует никаких преобразований типов.
|
Передача данных через межсетевые экраны (firewalls)
|
Проблематично, потому что межсетевые экраны обычно конфигурируются так, чтобы предотвратить запросы системного уровня, которые используются в COM.
|
Поддерживается, потому что объекты DataSet, используемые ADO.NET, передают XML, разработанный на основе HTML, который может проходить через межсетевые экраны.
|
Масштабируемость
|
Блокировки баз данных и длительные, активные подключения к базам данных могут стать причиной коллизий и сильно ограничивать ресурсы базы данных.
|
Офлайновый доступ к базам данных без накладывания длительных блокировок или применения длительных, активных подключений к базе данных, существенно разгружает
ресурсы базы данных.
|
|
|