Главная  
  • Программы  
  • Методички  
  • Рефераты  
  • Дипломы  
  • Разное  
  • Фото  
  • Контакты  
  • Карта сайта  
  • Я:
    Найти:
    Возраст:
    -

    Обзор технологии ADO.NET


    HashFlare


    Обзор технологии ADO.NET


    ADO.NET упрощает доступ к источникам данных, например к серверу, Microsoft SQL Server, а также к источникам данных, предоставленным с помощью OLE DB или XML. Клиентские приложения могут подключаться к источникам данных, получать данные, редактировать и обновлять их с помощью ADO.NET.

    Компоненты доступа к данным и управления данными ADO.NET можно использовать по отдельности или совместно. В ADO.NET включены провайдеры данных .NET Framework для подключения к базе данных, выполнения команд и получения результатов. Эти данные либо непосредственно обрабатываются, либо помещаются в объект ADO.NET DataSet для специального предоставления пользователю вместе с данными из нескольких источников или равноудаленными от различных уровней. Объект ADO.NET DataSet может быть использован отдельно от провайдера данных .NET Framework для управления локальными данными приложения или получения данных из XML.

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

    ADO.NET повышает производительность XML для организации отключенного доступа к данным. Классы ADO.NET и XML разрабатывались в .NET Framework параллельно, и являются компонентами единой архитектуры.

    Совместная работа классов ADO.NET и XML в .NET Framework обеспечивается объектом DataSet. Данные в объект DataSet можно отправить из XML-источника (файла или потока). Объект DataSet можно описать как W3C-совместимый XML с XSD-схемой, не взирая на источник данных объекта DataSet. Объект DataSet служит отличным средством передачи данных между уровнями приложения, так как благодаря встроенному формату сериализации XML с его помощью можно легко и надежно передавать данные и содержание схем веб-служб XML и обратно.

    Объект DataSet можно синхронизировать с XmlDataDocument для предоставления надежного иерархического доступа к данным в реальном времени.

    Компоненты ADO.NET позволяют отделить доступ к данным от их обработки. Разделение выполняется с помощью двух основных компонентов ADO.NET: DataSet и провайдера данных .NET Framework, представляющего собой набор компонентов (в том числе объектов Connection, Command, DataReader и DataAdapter).

    Объект ADO.NET DataSet является основным компонентом отключенной архитектуры ADO.NET. Этот объект разработан для доступа к данным независимо от их источника. Он может применяться для доступа к множеству различных источников, предоставляющих XML-данные, или для управления локальными данными приложения. Объект DataSet состоит из набора объектов DataTable, в свою очередь состоящих из строк и столбцов данных, первичного ключа, внешнего ключа, ограничений и сведений о связи данных в объектах DataTable.

    Вторым основным элементом архитектуры ADO.NET является провайдер данных .NET Framework, компоненты которого предназначены для обработки данных и быстрого доступа к ним в режиме чтения. Объект Connection служит для подключения к источнику данных. Для выполнения команд в базе данных, изменения данных, запуска хранимых процедур, отправки и получения значений параметров применяется объект Command. Объект DataReader служит для создания высокопроизводительного потока данных от источника данных. Объект DataAdapter обеспечивает взаимодействие объекта DataSet с источником данных. Объект Command используется в объекте DataAdapter для выполнения SQL-команд в источнике данных при загрузке данных в объект DataSet и для переноса изменений, сделанных в объекте DataSet, в источник данных.

    Провайдер данных .NET Framework можно разработать для любого источника данных. В состав платформы .NET Framework входят два провайдера данных, которые обеспечивают доступ к OLE DB и SQL Server.

    Компоненты архитектуры ADO.NET показаны на рисунке 4.

    Структура объекта DataSet упрощает передачу данных клиентам через Интернет с помощью веб-служб XML и позволяет маршалировать данные между компонентами .NET с помощью служб удаленного взаимодействия .NET. Кроме того, доступно удаленное взаимодействие с объектом DataSet со строгим типом.

    Для работы пакета разработки .NET и ADO.NET требуется операционная система Microsoft® Windows® 2000, Microsoft® Windows NT® 4 с пакетом обновлений версии 6a, Microsoft® Windows® Millennium Edition, Microsoft® Windows® 98 или Microsoft® Windows® SE. Работа с провайдерами данных .NET Framework для SQL server или OLE DB требует установки компонентов корпорации Майкрософт для доступа к данным (Microsoft Data Access Components 2.6 или более поздней версии).



    Рисунок 4 - Архитектура ADO.NET


    В приведенном ниже примере демонстрируется включение пространства имен System.Data в приложение для работы с ADO.NET.

    Imports System.Data

    Классы ADO.NET расположены в файле System.Data.dll; они интегрированы с XML-классами файла System.Xml.dll. При компиляции кода, использующего пространство имен, следует ссылаться на файлы System.Data.dll и System.Xml.dll.

    Выбор объекта DataReader или DataSet

    При выборе объекта DataReader или объекта DataSet следует учитывать тип функциональности, требуемый для приложения. Объект DataSet используется для выполнения следующих действий.

    Удаленное взаимодействие уровней и веб-служб XML.

    Динамическое взаимодействие с данными, например связывание с элементом управления форм Windows Forms или сочетание данных из нескольких источников.

    Локальное кэширование данных приложения.

    Иерархическое XML-представление реляционных данных, например XSL-преобразования или язык XML-путей.

    Расширенная обработка данных после отключения от источника данных.

    Если функциональность объекта DataSet не используется в приложении, можно повысить производительность, включив вместо него в приложение объект DataReader, получающий данные в режиме чтения. Хотя для получения данных для объекта DataSet в объекте DataAdapter используется DataReader, с помощью объекта DataReader производительность можно повысить за счет экономии памяти, занимаемой объектом DataSet, и процессов, требуемых для создания и заполнения содержимого DataSet.

    Провайдеры данных .NET Framework служат для подключения к базе данных, выполнения команд и получения результатов. Эти данные либо непосредственно обрабатываются, либо помещаются в объект ADO.NET DataSet для специального предоставления с данными из нескольких источников или равноудаленными между уровнями. Провайдер данных .NET Framework является небольшим промежуточным уровнем между источником данных и кодом; за счет этого производительность повышается без потери функциональности.

    В таблице 1 описаны четыре основных объекта, образующих провайдер данных .NET Framework.

    В .NET Framework включены провайдеры данных .NET Framework для SQL server (Microsoft SQL Server версии 7.0 и более поздних), провайдеры данных .NET Framework для OLE DB и провайдеры данных .NET Framework для ODBC.

    Примечание. Провайдер данных .NET Framework для ODBC не входит в состав .NET Framework версии 1.0. Если при использовании .NET Framework версии 1.0 требуется провайдер данных .NET Framework для ODBC, его можно загрузить с узла http://msdn.microsoft.com/downloads. Пространство имен для загружаемого провайдера данных .NET Framework для ODBC - Microsoft.Data.Odbc.

    Таблица 1 - Объекты входящие в состав провайдера данных .NET Framework
    Объект Описание
    Connection Устанавливает подключение к заданному источнику данных
    Command Выполняет команду в отношении источника данных. Объект предоставляет объект Parameters и может выполняться в области видимости Transaction в объекте Connection
    DataReader Выполняет однонаправленное чтение потока данных, доступного только для чтения только в прямом направлении, из источника данных
    DataAdapter Заполняет объект DataSet и выполняет обновления в источнике данных


    При взаимодействии провайдера данных .NET Framework с SQL-сервером используется особый протокол. Этот протокол обладает высокой производительностью за счет оптимизации доступа к SQL-серверу и отсутствия уровней OLE DB и ODBC. Ниже объясняется различие между провайдером данных для SQL Server и провайдером данных для OLE DB платформы .NET Framework (рисунок 5). Провайдер данных .NET Framework для OLE DB взаимодействует с источником данных OLE DB с помощью компонента служб OLE DB и поставщика для источника данных OLE DB.

    Примечание. Архитектура поставщика данных ODBC аналогична архитектуре провайдера данных .NET Framework для OLE DB; например, этот поставщик вызывает компонент служб ODBC.



    Рисунок 5 - Сравнение поставщика данных для SQL Server и поставщика данных для OLE DB платформы .NET Framework


    Для работы с провайдером данных .NET Framework для SQL Server требуется иметь доступ к серверу Microsoft SQL Server 7.0 или более поздней версии. Классы поставщика данных для SQL-сервера расположены в пространстве имен System.Data.SqlClient. Для более ранних версий Microsoft SQL Server следует использовать провайдер данных .NET Framework для OLE DB с поставщиком для SQL-сервера OLE DB (SQLOLEDB).

    Провайдер данных .NET Framework для SQL Server поддерживает локальные и распределенные транзакции. Для распределенных транзакций в провайдере данных .NET Framework для SQL Server в транзакции по умолчанию автоматически перечисляются сведения о транзакции служб компонентов Windows 2000.

    В следующем примере показано, как включить в приложение пространство имен System.Data.SqlClient.

    Imports System.Data.SqlClient

    Провайдер данных .NET Framework для SQL Server требует установки компонентов доступа к данным 2.6 или более поздней версии.

    Провайдер данных .NET Framework для OLE DB использует собственную базу данных OLE через COM-взаимодействие для разрешения доступа к данным. Провайдер данных .NET Framework для OLE DB поддерживает локальные и распределенные транзакции. Для распределенных транзакций в провайдере данных .NET Framework для OLE DB в транзакции по умолчанию автоматически перечисляются сведения о транзакции служб компонентов Windows 2000.

    Для работы с провайдером данных .NET Framework для OLE DB следует использовать поставщика OLE DB, поддерживающего интерфейсы, перечисленные в разделе Интерфейсы OLE DB, используемые провайдером данных .NET Framework для OLE DB.

    Примечание. Не рекомендуется использовать базы данных Microsoft Access в многопоточных приложениях, например приложениях ASP.NET. При использовании баз данных Microsoft Access в качестве источника данных для приложения ASP.NET могут возникнуть трудности при подключении к базам данных, обычно возникающие из-за разрешений безопасности. Сведения о разрешении проблем, связанных с доступом к базам данных Access.

    Провайдер данных .NET Framework для классов OLE DB не поддерживает интерфейсы OLE DB версии 2.5. Поставщики OLE DB, требующие поддержки интерфейсов OLE DB версии 2.5, будут работать неправильно с провайдерами данных .NET Framework для OLE DB. В их число входят поставщики Microsoft OLE DB для Exchange и Internet Publishing.

    Провайдер данных .NET Framework для классов OLE DB не поддерживает поставщик MSDASQL. Для доступа к источнику данных ODBC в ADO.NET следует использовать провайдер данных .NET Framework для ODBC.

    Провайдер данных .NET Framework для классов OLE DB расположен в пространстве имен System.Data.OleDb. В следующем примере показано, как включить в приложение пространство имен System.Data.OleDb.

    Imports System.Data.OleDb

    Провайдер данных .NET Framework для OLE DB требует установки компонентов доступа к данным 2.6 или более поздней версии.

    Поставщик данных .NET Framework для ODBC

    Провайдер данных .NET Framework для ODBC использует собственный диспетчер драйверов ODBC через COM-взаимодействие для разрешения доступа к данным. Провайдер данных ODBC поддерживает локальные и распределенные транзакции. Для распределенных транзакций в провайдере данных .NET Framework для ODBC в транзакции по умолчанию автоматически перечисляются сведения о транзакции служб компонентов Windows 2000.

    Провайдер данных .NET Framework для классов OLE DB расположен в пространстве имен System.Data.Odbc.

    Примечание. Провайдер данных .NET Framework для ODBC не входит в состав .NET Framework версии 1.0. Если при использовании .NET Framework версии 1.0 требуется провайдер данных .NET Framework для ODBC, его можно загрузить с узла http://msdn.microsoft.com/downloads. Пространство имен для загружаемого провайдера данных .NET Framework для ODBC - Microsoft.Data.Odbc.

    В следующем примере показано, как включить в приложение пространство имен System.Data.Odbc.

    Imports System.Data.Odbc

    Провайдер данных .NET Framework для ODBC требует установки компонентов доступа к данным 2.6 или более поздней версии. Рекомендуется использовать версию 2.7.

    Провайдер данных .NET Framework для Oracle обеспечивает подключение к источникам данных Oracle с помощью программного обеспечения Oracle. Провайдер данных поддерживает клиентское программное обеспечение 8.1.7 или более поздней версии. Провайдер данных поддерживает локальные и распределенные транзакции (провайдер данных автоматически указывается в распределенной транзакции, но на данный момент метод EnlistDistributedTransaction не поддерживается).

    Для работы с провайдером данных .NET Framework для Oracle следует установить клиентское программное обеспечение Oracle.

    Провайдер данных .NET Framework для классов Oracle расположен в пространстве имен System.Data.Odbc и в сборке System.Data.OracleClient.dll. При компиляции приложения с этим провайдером данных следует ссылаться на System.Data.dll и System.Data.OracleClient.dll.

    Примечание. Провайдер данных .NET Framework для Oracle не входит в состав .NET Framework версии 1.0. Если при использовании .NET Framework версии 1.0 требуется провайдер данных .NET Framework для Oracle, его можно загрузить с узла http://msdn.microsoft.com/downloads.

    В следующем примере показано, как включить в приложение пространство имен System.Data.OracleClient.

    Imports System.Data.OracleClient

    Провайдер данных .NET Framework для Oracle требует установки компонентов доступа к данным 2.6 или более поздней версии.

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

    Таблица 2 - Преимущества и ограничения провайдеров данных .NET Framework
    Провайдер Примечания
    Провайдер данных NET Framework для SQL-сервера Рекомендуется для приложений среднего уровня, работающих с сервером Microsoft SQL Server 7.0 или более поздней версии. Рекомендуется для одноуровневых приложений, работающих с сервером Microsoft SQL Server 7.0 или более поздней версии, а также с Microsoft Data Engine. Этот провайдер следует использовать вместо провайдера данных .NET Framework для SQL Server (SQLOLEDB) с провайдером данных для OLE DB. Для сервера Microsoft SQL Server версии 6.5 или более ранней следует использовать провайдер OLE DB для SQL-сервера с провайдером данных .NET Framework для OLE DB.
    Провайдер данных .NET Framework для OLE DB Рекомендуется для приложений среднего уровня, работающих с сервером Microsoft SQL Server 6.5 или более ранней версии и провайдером OLE DB, поддерживающим интерфейсы, перечисленные в разделе Интерфейсы OLE DB, используемые провайдером данных .NET Framework для OLE DB; интерфейсы OLE DB версии 2.5 не требуются. Для сервера Microsoft SQL Server версии 7.0 следует использовать провайдер данных .NET Framework для SQL Server. Рекомендуется для одноуровневых приложений, взаимодействующих с базами данных Microsoft Access. Не рекомендуется использовать базы данных Microsoft Access в приложениях среднего уровня.
    Провайдеры данных .NET Framework для ODBC Рекомендуется для одноуровневых приложений, взаимодействующих с источниками данных ODBC. Рекомендуется для приложений среднего уровня, взаимодействующих с источниками данных ODBC.
    Провайдер данных .NET Framework для Oracle Рекомендуется для одноуровневых приложений, взаимодействующих с источниками данных Oracle. Рекомендуется для приложений среднего уровня, взаимодействующих с источниками данных Oracle. Поддерживает клиентское программное обеспечение 8.1.7 или более поздней версии. Провайдер данных .NET Framework для классов Oracle расположен в пространстве имен System.Data.OracleClient и в сборке System.Data.OracleClient.dll. При компиляции приложения с этим провайдером данных следует ссылаться на System.Data.dll и System.Data.OracleClient.dll..

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



    Рисунок 6 - Объектная модель объекта DataSet


    Методы и объекты DataSet имеют структуру, аналогичную модели реляционных баз данных.

    Содержимое объекта DataSet можно сохранить и перегрузить в виде XML и его схемы (схемы языка определения схем - XSD).

    Объект DataSet ADO.NET содержит ноль или более таблиц, представленных объектами DataTable. Все объекты DataTable объекта DataSet содержатся в коллекции DataTableCollection.

    Объект DataTable определен в пространстве имен System.Data; эти объекты служат для представления таблицы, находящейся в памяти данных. В объекте содержится коллекция столбцов, представленных объектами DataColumnCollection и ограничений, представленных объектами ConstraintCollection, формирующими схему таблицы. Данные объекта DataTable расположены в коллекции столбцов DataRowCollection. В объекте DataRow хранится не только его текущее состояние, но и исходные данные, позволяющие отслеживать изменения данных.

    Отношения объекта DataSet хранятся в объекте DataRelationCollection. Отношения, хранящиеся в объекте DataRelation, связывают строки одной таблицы DataTable со строками другой таблицы DataTable. Это отношение аналогично пути соединения столбцов первичного и внешнего ключей в реляционной базе данных. В объекте DataRelation хранятся сведения о связанных столбцах таблиц объекта DataSet.

    Отношения позволяют просматривать в объекте DataSet одну таблицу из другой. Элементами объекта DataRelation являются имя отношения, имя связанных таблиц и столбцов. Отношения могут связывать несколько столбцов в каждой таблице. Чтобы задать такое отношение, следует определить в качестве ключевых столбцов массив объектов DataColumn. При добавлении отношения в коллекцию DataRelationCollection для сохранения целостности автоматически могут быть добавлены ограничения UniqueKeyConstraint и ForeignKeyConstraint.

    Объект DataSet имеет свойство ExtendedProperties (как и объекты DataTable и DataColumn). Свойство ExtendedProperties представляет собой коллекцию PropertyCollection, в которой можно сохранить любые данные, например оператор SELECT, служащий для создания выходных данных, или сведения о времени создания данных. Коллекция ExtendedProperties хранится со сведениями о схеме DataSet (как и объекты DataTable и DataColumn).

    Поставщик данных .NET Framework для SQL Server предоставляет подключение к Microsoft SQL Server версии 7.0 или выше с помощью объекта SqlConnection.

    Поставщик данных .NET Framework для SQL Server поддерживает формат строки подключения, аналогичный формату строки подключения OLE DB (ADO). Допустимые имена и значения формата строки.

    В следующем примере кода демонстрируется создание и открытие подключения к базе данных SQL Server (версии 7.0 или более поздней).

    Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;" & _
    "Initial Catalog=northwind")

    nwindConn.Open()

    По завершении использования объекта Connection рекомендуется всегда закрывать его, чтобы подключение было возвращено в пул. Это можно осуществить с помощью метода Close или Dispose объекта Connection. Подключение, не закрытое явно, не может быть добавлено или возвращено в пул. Например, подключение, которое вышло за пределы области действия, но не было явно закрыто, будет возвращено в пул подключений, только если размер пула достигнет максимального значения, а подключение все еще будет действительно.

    Примечание. Не вызывайте методы Close и Dispose для объектов Connection, DataReader и любых других управляемых объектов в методе Finalize класса. В этом методе освобождаются только неуправляемые ресурсы, находящиеся в непосредственном владении класса. Если в классе отсутствуют неуправляемые ресурсы, не включайте метод Finalize в его определение.


    © Copyright 2006-2017. Все права защищены. Сайт бесплатно.