Freigeben über


ADO.NET-Architektur

Die traditionelle Datenverarbeitung basierte primär auf einem verbindungsbasierten Modell mit zwei Ebenen. Da für die Datenverarbeitung immer mehr Architekturen mit mehreren Ebenen verwendet werden, wechseln Programmierer zu einer nicht verbundenen Lösung, um eine bessere Skalierbarkeit für die Anwendungen zu erzielen.

XML und ADO.NET

ADO.NET nutzt die Vorteile von XML, um nicht verbundenen Zugriff auf Daten zur Verfügung zu stellen. ADO.NET wurde Hand in Hand mit den XML-Klassen in .NET Framework entworfen. Bei beiden handelt es sich um Komponenten einer einzelnen Architektur.

ADO.NET und die XML-Klassen in .NET Framework konvergieren zu einem DataSet-Objekt. Das DataSet kann mit Daten aus einer XML-Quelle gefüllt werden, ungeachtet dessen, ob es sich dabei um eine Datei oder einen XML-Stream handelt. Das DataSet kann als W3C-kompatibles XML-Format (World Wide Web Consortium) geschrieben werden, einschließlich seines Schemas als XSD-Schema (XML Schema Definition Language), wobei die Quelle der Daten im DataSet keine Rolle spielt. Da das systemeigene Serialisierungsformat des DataSets XML ist, ist es hervorragend als Medium zum Verschieben von Daten zwischen Ebenen geeignet. Somit ist das DataSet eine optimale Wahl zum Senden von Daten und Schemakontexten zu und von einem XML-Webdienst.

Das DataSet kann auch mit einem XmlDataDocument synchronisiert werden, um relationalen und hierarchischen Zugriff auf Daten in Echtzeit zu bieten. Weitere Informationen hierzu finden Sie unter Synchronisieren eines DataSets mit einem XmlDataDocument.

ADO.NET-Komponenten

ADO.NET-Komponenten wurden zum Trennen des Datenzugriffs von der Datenbearbeitung entworfen. Hierfür gibt es zwei Hauptkomponenten in ADO.NET: das DataSet und den .NET Framework-Datenprovider, bei dem es sich um eine Gruppe von Komponenten handelt, einschließlich der Objekte Connection, Command, DataReader und DataAdapter.

Das ADO.NET-DataSet ist die Hauptkomponente der nicht verbundenen Architektur von ADO.NET. Das DataSet wurde explizit für den Datenzugriff unabhängig von Datenquellen entworfen. Aus diesem Grund kann es mit mehreren und unterschiedlichen Datenquellen, mit XML-Daten oder zum Verwalten von lokalen Anwendungsdaten verwendet werden. Das DataSet enthält eine Auflistung von einem oder mehreren DataTable-Objekten, die aus Datenzeilen und -spalten sowie aus Primärschlüsseln, Fremdschlüsseln, Einschränkungen und Beziehungsinformationen über die Daten in den DataTable-Objekten besteht.

Das andere Hauptelement der ADO.NET-Architektur ist der .NET Framework-Datenprovider, dessen Komponenten explizit für die Datenbearbeitung und den schnellen, vorwärts gerichteten, schreibgeschützten Zugriff auf Daten entworfen wurden. Das Connection-Objekt sorgt für eine Verbindung mit einer Datenquelle. Mit dem Command-Objekt können Sie auf Datenbankbefehle zugreifen, um Daten zurückzugeben oder zu ändern, gespeicherte Prozeduren auszuführen und Parameterinformationen zu senden oder abzurufen. Das DataReader-Objekt stellt einen Hochleistungsstream von Daten aus der Datenquelle zur Verfügung. Der DataAdapter fungiert als Brücke zwischen dem DataSet-Objekt und der Datenquelle. Der DataAdapter verwendet Command-Objekte zum Ausführen von SQL-Befehlen in der Datenquelle, um das DataSet mit Daten zu laden und Änderungen an den Daten im DataSet in die Datenquelle zu übernehmen.

Sie können .NET Framework-Datenprovider für jede beliebige Datenquelle schreiben. Im Lieferumfang von .NET Framework sind zwei .NET Framework-Datenprovider enthalten: der .NET Framework-Datenprovider für SQL Server und der .NET Framework-Datenprovider für OLE DB.

Das folgende Diagramm zeigt die Komponenten der ADO.NET-Architektur.

ADO.NET-Architektur

Remote- oder Marshalldaten zwischen Ebenen und Clients

Der Entwurf des DataSets ermöglicht es Ihnen, Daten einfach mit Hilfe der XML-Webdienste über das Web an Clients zu senden und Daten mit Hilfe der .NET-Remotedienste zwischen .NET-Komponenten zu marshallen. Auf diese Weise können Sie auch ein DataSet mit starkem Typ verschieben. Eine Übersicht über XML-Webdienste finden Sie unter Übersicht über XML-Webdienste. Ein Beispiel für die Verarbeitung eines DataSets über einen XML-Webdienst finden Sie unter Verwenden eines DataSets aus einem XML-Webdienst.

Eine Übersicht über Remotedienste finden Sie unter Übersicht über .NET Remoting. Beachten Sie, dass DataTable-Objekte auch mit Remotediensten verwendet, jedoch nicht über einen XML-Webdienst gesendet werden können.

ADO.NET-Plattformanforderungen

Microsoft .NET Framework SDK (einschließlich ADO.NET) wird von Microsoft® Windows® 2000, Microsoft® Windows NT® 4 mit Service Pack 6a, Microsoft® Windows® Millennium Edition, Microsoft® Windows® 98 und Microsoft® Windows® SE unterstützt. Wenn Sie den .NET Framework-Datenprovider für SQL Server oder den .NET Framework-Datenprovider für OLE DB verwenden möchten, müssen Sie Microsoft Data Access Components, Version 2.6 oder höher, installieren.

Das folgende Codebeispiel zeigt, wie der System.Data-Namespace für die Verwendung von ADO.NET in die Anwendung eingefügt wird.

Imports System.Data
[C#]
using System.Data;

Die ADO.NET-Klassen befinden sich in System.Data.dll und sind in die XML-Klassen integriert, die sich in System.Xml.dll befinden. Beim Kompilieren von Code, der den System.Data-Namespace verwendet, müssen Sie auf System.Data.dll und auf System.Xml.dll verweisen. Ein Beispiel für das Kompilieren einer ADO.NET-Anwendung mit einem Befehlszeilencompiler finden Sie unter Beispielanwendung zu ADO.NET.

Auswählen eines DataReaders oder eines DataSets

Wenn Sie sich zwischen einem DataReader (siehe Abrufen von Daten mit dem DataReader-Objekt) oder einem DataSet (siehe Erstellen und Verwenden von DataSets) für die Anwendung entscheiden möchten, müssen Sie den für die Anwendung erforderlichen Funktionalitätstyp berücksichtigen. Verwenden Sie für folgende Zwecke ein DataSet:

  • Verschieben von Daten zwischen Ebenen oder von einem XML-Webdienst.
  • Dynamisches Interagieren mit Daten, wie Datenbindung an ein Windows Forms-Steuerelement, oder Kombinieren von und Erstellen einer Beziehung zwischen Daten aus mehreren Quellen.
  • Zwischenspeichern der Daten lokal in der Anwendung.
  • Bereitstellen einer hierarchischen XML-Ansicht für relationale Daten und Verwenden von Tools wie einer XSL-Transformation oder einer XPath-Abfrage für die Daten. Weitere Informationen finden Sie unter XML und das DataSet.
  • Ausführen umfangreicher Datenverarbeitungsschritte ohne eine offene Verbindung zur Datenquelle. Dadurch wird die Verbindung zur Nutzung durch andere Clients freigegeben.

Wenn Sie die Funktionalität im DataSet nicht benötigen, können Sie die Leistung der Anwendung verbessern, indem Sie mit Hilfe des DataReaders die Daten als schreibgeschützte Vorwärtsdaten zurückgeben. Obwohl der DataAdapter den DataReader zum Füllen des DataSet-Inhalts verwendet (siehe Auffüllen eines DataSets mit einem DataAdapter-Objekt), können Sie die Leistung erhöhen, wenn Sie den DataReader verwenden. Dies ist möglich, weil Sie den Arbeitsspeicher, der für das DataSet erforderlich ist, nicht benötigen und die Verarbeitung, die zum Erstellen und Füllen des DataSet-Inhalts nötig ist, überflüssig ist.

Siehe auch

Übersicht über ADO.NET | Zugreifen auf Daten mit ADO.NET | Beispielanwendung zu ADO.NET