Сравнение ADO.NET и ADO

Обновлен: Ноябрь 2007

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

Представление данных в памяти

В ADO представлением данных в памяти является набор записей. В ADO.NET это набор данных. Между ними имеются существенные различия.

Количество таблиц

Набор записей выглядит как единая таблица. Если набор записей должен содержать данные из нескольких таблиц данных, он должен использовать запрос JOIN, который объединяет данные из разных таблиц базы данных в одну таблицу результатов.

Набор данных наоборот является коллекцией из одной или нескольких таблиц. Таблицы в наборе данных называются таблицами данных; в частности, они являются объектами DataTable. Если набор данных содержит данные из различных таблиц базы данных, обычно в нем содержится несколько объектов DataTable. В сущности, каждый объект DataTable обычно соответствует одной таблице или представлению базы данных. Таким образом, набор данных может копировать структуру базы данных.

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

Так как набор данных может содержать несколько отдельных таблиц и хранить информацию о связях между ними, он может воспроизводить гораздо более многофункциональные структуры данных, чем наборы записей, включая таблицы с внутренними ссылками и таблицы с отношениями "многие ко многим".

Перемещение по данным и курсоры

В ADO имеется метод MoveNext, последовательно перебирающий строки в наборе записей. В ADO.NET строки представлены как коллекции, поэтому можно перебирать таблицу в цикле, как любую коллекцию, или обращаться к определенной строке по порядковому номеру или первичному ключу. Объекты DataRelation хранят сведения о главных и подчиненных записях и предоставляют метод для извлечения записей, связанных с текущей. Например, из строки "Nate Sun" таблицы Investor можно перейти к набору строк таблицы Purchase, описывающему приобретения этого инвестора.

904fck4k.alert_note(ru-ru,VS.90).gifПримечание.

Приложения Windows Forms предоставляют BindingNavigator для перехода между записями в источнике данных. Дополнительные сведения см. в разделе Элемент управления BindingNavigator (Windows Forms).

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

Минимизация потребности в открытых подключениях

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

Между неподключенной обработкой данных в ADO и ADO.NET имеется одно существенное различие. В ADO взаимодействие с базой данных происходит путем вызова поставщика OLE DB. В ADO.NET вы взаимодействуете с базой данных с помощью Адаптер таблицы или адаптеров обработки данных (например, SqlDataAdapter), которые вызывают поставщик OLE DB или API-интерфейсы, предоставляемые базовым источником данных. Важное отличие заключается в том, что адаптеры обработки данных позволяют контролировать то, как изменения в наборе данных передаются в базу данных — здесь можно выполнять оптимизацию для повышения производительности, проверять данные на допустимость или добавлять любые дополнительные операции обработки.

Совместный доступ приложений к данным

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

Передача файлов XML обеспечивает следующие преимущества по сравнению с упаковкой COM:

Более широкий выбор типов данных

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

Производительность

Передача большого набора записей ADO или большого набора данных ADO.NET может потребовать большого расхода сетевых ресурсов; с ростом количества данных нагрузка на сеть также возрастает. И ADO, и ADO.NET позволяют минимизировать количество пересылаемых данных. Но при этом в ADO.NET имеется еще один плюс — дополнительный выигрыш в производительности за счет того, что данные можно не преобразовывать. В ADO, поскольку для передачи наборов записей между компонентами необходима упаковка COM, требуется преобразование типов данных ADO в типы данных COM.

Работа через брандмауэры

Обмену неподключенными наборами записей ADO между компонентами часто мешают брандмауэры. Следует помнить, что обычно брандмауэры настроены так, чтобы пропускать текст в формате HTML, но не пропускать запросы системного уровня (к которым относится упаковка COM).

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

См. также

Основные понятия

Преимущества ADO.NET

Другие ресурсы

Начало работы с доступом к данным

Подключение к данным в Visual Studio

Подготовка приложения к получению данных

Выборка данных в приложение

Отображение данных на форме в приложениях Windows

Редактирование данных в приложении

Проверка данных

Сохранение данных

Ресурсы данных