Архитектура ADO.NET
Обработка данных традиционно полагалась в основном на двухуровневую модель, основанную на сетевом соединении. Так как при обработке данных все больше используется многоуровневая архитектура, программисты переходят на метод, не использующий подключение, чтобы обеспечить лучшую масштабируемость для их приложений.
Компоненты ADO.NET
Два основных компонента ADO.NET для доступа к данным и управления ими являются поставщиками платформа .NET Framework и даннымиDataSet.
Поставщики данных .NET Framework
Поставщиками данных .NET Framework являются компоненты, которые специально сконструированы для обработки данных и быстрого, однопроходного доступа к данным только для чтения. Объект Connection
обеспечивает обмен данными с источником данных. Объект Command
позволяет обращаться к командам базы данных для возврата данных, изменения данных, выполнения хранимых процедур и передачи или получения сведений о параметрах. DataReader
обеспечивает высокопроизводительный поток данных из источника данных. Наконец, DataAdapter
предоставляет мост между объектом DataSet
и источником данных. DataAdapter
использует объекты Command
для выполнения команд SQL на источнике данных для загрузки DataSet
с данными и согласования изменений данных, выполненных в DataSet
, вновь с источником данных. Дополнительные сведения см. в разделе платформа .NET Framework Поставщики данных и получение и изменение данных в ADO.NET.
DataSet
Класс DataSet
в ADO.NET специально сконструирован для доступа к данным независимо от источника данных. Поэтому он может быть использован со многими и разными источниками данных, с XML-данными или для управления данными, локальными для приложения. DataSet
содержит коллекцию одного или нескольких объектов DataTable, состоящих из строк и столбцов данных, а также первичный ключ, внешний ключ, ограничение и связанные сведения о данных в объектах DataTable
. Дополнительные сведения см. в разделе DataSets, DataTables и DataViews.
На следующей схеме показана связь между поставщиком данных платформа .NET Framework и поставщиком DataSet
данных.
Архитектура ADO.NET
Выбор между DataReader или DataSet
Если вы решите, следует ли использовать DataReader
приложение (см. раздел "Извлечение данных с помощью DataReader") или DataSet
(см. раздел "Наборы данных", "DataTables" и "DataViews"), рассмотрите тип необходимых функций приложения. DataSet
предназначен для выполнения следующих задач.
Локальное кэширование данных в приложении для последующей обработки. Если нужно только считывать результаты запроса, класс
DataReader
подходит наилучшим образом.Удаленное взаимодействие с данными между уровнями или от веб-службы XML.
Динамическое взаимодействие с данными, например привязка к элементу управления Windows Forms или комбинирование и связывание данных из нескольких источников.
Выполнение интенсивной обработки, не требующей открытого соединения с источником данных, что освобождает соединение для использования другими клиентами.
Если функциональность, предоставляемая классом DataSet
, не нужна, можно повысить производительность приложения, используя класс DataReader
для возврата данных в однопроходном режиме только для чтения. DataAdapter
Хотя используется DataReader
для заполнения содержимого DataSet
объекта (см. заполнение набора данных из DataAdapter), с помощью DataReader
этого можно повысить производительность, так как вы будете сохранять память, которая будет использоваться DataSet
в ней, и избегайте обработки, необходимой для создания и заполнения содержимогоDataSet
.
LINQ to DataSet
Технология LINQ to DataSet предоставляет возможности выполнения запросов и проверки типов во время компиляции для данных, кэшированных в объекте DataSet. Эта технология позволяет писать запросы на одном из языков .NET Framework, например C# или Visual Basic. Дополнительные сведения см. в разделе LINQ to DataSet.
LINQ to SQL
LINQ to SQL поддерживает запросы к модели объектов, сопоставленной со структурами данных реляционной базы данных, без использования промежуточной концептуальной модели. Каждая таблица представляется отдельным классом; таким образом, модель объектов тесно привязывается к схеме реляционной базы данных. LINQ to SQL преобразует запросы LINQ из модели объектов в язык Transact-SQL и передает их в базу данных для выполнения. При возврате результатов базой данных LINQ to SQL преобразует результаты обратно в объекты. Для получения дополнительной информации см. LINQ to SQL.
ADO.NET Entity Framework
Платформа ADO.NET Entity Framework разработана, чтобы разработчики могли создавать приложения для доступа к данным путем программирования по концептуальной модели приложения, а не по реляционной схеме хранения. Ее целью является уменьшение объема кода и затрат на сопровождение приложений, ориентированных на обработку данных. Дополнительные сведения см. в разделе ADO.NET Entity Framework.
Службы данных WCF
службы данных WCF используется для развертывания служб данных в Интернете или интрасети. Данные структурируются как сущности и отношения согласно спецификациям модели EDM. Данные, развертываемые в данной модели, адресуются по стандартному протоколу HTTP. Дополнительные сведения см. в разделе Службы данных WCF 4.5.
XML и ADO.NET
ADO.NET использует возможности XML для предоставления отключенного доступа к данным. ADO.NET был разработан вручную с классами XML в платформа .NET Framework; оба являются компонентами одной архитектуры.
ADO.NET и XML-классы в платформа .NET Framework конвергентно в объектеDataSet
. Объект DataSet
может заполняться данными из XML-источника, будь то файл или поток XML-данных. Объект DataSet
может быть записан в виде XML-кода, соответствующего спецификациям консорциума W3C, который включает в себя схему в виде XSD, независимо от источника данных, находящихся в DataSet
. Так как в DataSet
собственным форматом сериализации является XML, он является отличным способом перемещения данных между уровнями. Это делает DataSet
оптимальным решением для удаленного взаимодействия с контекстом данных и схемы как в направлении к веб-службе XML, так и в обратном направлении. Дополнительные сведения см. в разделе XML-документы и данные.