ADO.NET architectuur
Gegevensverwerking is traditioneel voornamelijk gebaseerd op een model met twee lagen op basis van een verbinding. Naarmate gegevensverwerking steeds vaker gebruikmaakt van architecturen met meerdere lagen, schakelen programmeurs over naar een niet-verbonden benadering om hun toepassingen betere schaalbaarheid te bieden.
ADO.NET-onderdelen
De twee belangrijkste onderdelen van ADO.NET voor het openen en bewerken van gegevens zijn de .NET Framework-gegevensproviders en de DataSet.
.NET Framework-gegevensproviders
De .NET Framework-gegevensproviders zijn onderdelen die expliciet zijn ontworpen voor gegevensmanipulatie en snelle, alleen-lezentoegang tot gegevens. Het Connection
object biedt connectiviteit met een gegevensbron. Het Command
object maakt het mogelijk om toegang te krijgen tot databaseopdrachten om gegevens te retourneren, gegevens te wijzigen, opgeslagen procedures uit te voeren en parametergegevens te verzenden of op te halen. Het DataReader
biedt een krachtige stroom van gegevens uit de gegevensbron. Ten slotte biedt het de DataAdapter
brug tussen het DataSet
object en de gegevensbron. Er DataAdapter
worden Command
objecten gebruikt om SQL-opdrachten uit te voeren op de gegevensbron om de DataSet
gegevens te laden en wijzigingen in de gegevens in de DataSet
back-up naar de gegevensbron af te stemmen. Zie .NET Framework-gegevensproviders en het ophalen en wijzigen van gegevens in ADO.NET voor meer informatie.
De dataset
De ADO.NET DataSet
is expliciet ontworpen voor gegevenstoegang onafhankelijk van elke gegevensbron. Als gevolg hiervan kan het worden gebruikt met meerdere en verschillende gegevensbronnen, gebruikt met XML-gegevens of worden gebruikt voor het beheren van gegevens lokaal voor de toepassing. Het DataSet
bevat een verzameling van een of meer DataTable objecten die bestaan uit rijen en kolommen met gegevens, en ook primaire sleutel, refererende sleutel, beperking en relationele informatie over de gegevens in de DataTable
objecten. Zie DataSets, DataTables en DataViews voor meer informatie.
In het volgende diagram ziet u de relatie tussen een .NET Framework-gegevensprovider en een DataSet
.
ADO.NET architectuur
Een DataReader of een DataSet kiezen
Wanneer u besluit of uw toepassing een DataReader
(zie Gegevens ophalen met behulp van een DataReader) of een DataSet
(zie DataSets, DataTables en DataViews) moet gebruiken, moet u rekening houden met het type functionaliteit dat uw toepassing nodig heeft. Gebruik een DataSet
opdracht om het volgende te doen:
Cachegegevens lokaal in uw toepassing, zodat u deze kunt bewerken. Als u alleen de resultaten van een query hoeft te lezen, is dit
DataReader
de betere keuze.Externe gegevens tussen lagen of vanuit een XML-webservice.
Interactie met gegevens dynamisch, zoals binding met een Besturingselement Windows Forms of het combineren en koppelen van gegevens uit meerdere bronnen.
Voer uitgebreide verwerking uit op gegevens zonder dat er een open verbinding met de gegevensbron is vereist, waardoor de verbinding wordt vrijgemaakt die door andere clients moet worden gebruikt.
Als u de functionaliteit van de DataSet
toepassing niet nodig hebt, kunt u de prestaties van uw toepassing verbeteren door de DataReader
gegevens alleen-lezen te retourneren. Hoewel de toepassingen de DataAdapter
DataReader
inhoud van een DataSet
(zie Een DataSet uit een DataAdapter vullen) vullen met behulp van de DataReader
, kunt u de prestaties verbeteren omdat u geheugen bespaart dat wordt verbruikt door de DataSet
, en vermijd de verwerking die nodig is voor het maken en vullen van de inhoud van de DataSet
.
LINQ naar DataSet
LINQ naar DataSet biedt querymogelijkheden en compileertijdtypecontrole over gegevens die in een DataSet-object in de cache zijn opgeslagen. Hiermee kunt u query's schrijven in een van de ontwikkeltaal van .NET Framework, zoals C# of Visual Basic. Zie LINQ naar DataSet voor meer informatie.
LINQ naar SQL
LINQ naar SQL ondersteunt query's op een objectmodel dat is toegewezen aan de gegevensstructuren van een relationele database zonder een tussenliggend conceptueel model te gebruiken. Elke tabel wordt vertegenwoordigd door een afzonderlijke klasse, die het objectmodel nauw koppelt aan het relationele databaseschema. LINQ naar SQL vertaalt taalgebaseerde query's in het objectmodel naar Transact-SQL en verzendt deze naar de database voor uitvoering. Wanneer de database de resultaten retourneert, vertaalt LINQ de resultaten terug naar objecten. Zie LINQ naar SQL voor meer informatie.
ADO.NET Entity Framework
Het ADO.NET Entity Framework is ontworpen om ontwikkelaars in staat te stellen toepassingen voor gegevenstoegang te maken door te programmeren op basis van een conceptueel toepassingsmodel in plaats van rechtstreeks te programmeren op basis van een relationeel opslagschema. Het doel is om de hoeveelheid code en onderhoud te verminderen die nodig is voor gegevensgerichte toepassingen. Zie ADO.NET Entity Framework voor meer informatie.
WCF Data Services
WCF Data Services wordt gebruikt voor het implementeren van gegevensservices op het web of een intranet. De gegevens zijn gestructureerd als entiteiten en relaties volgens de specificaties van het Entiteitsgegevensmodel. Gegevens die op dit model zijn geïmplementeerd, kunnen worden adresseerbaar door het standaard HTTP-protocol. Zie WCF Data Services 4.5 voor meer informatie.
XML en ADO.NET
ADO.NET maakt gebruik van de kracht van XML om niet-verbonden toegang tot gegevens te bieden. ADO.NET is hand-in-hand ontworpen met de XML-klassen in .NET Framework; beide onderdelen van één architectuur zijn.
ADO.NET en de XML-klassen in .NET Framework convergeren in het DataSet
object. De DataSet
gegevens kunnen worden gevuld met gegevens uit een XML-bron, ongeacht of het een bestand of een XML-stroom is. De DataSet
kan worden geschreven als W3C-compatibele XML (World-Wide Web Consortium) die het schema als XSD-schema (XML Schema Definition Language) bevat, ongeacht de bron van de gegevens in de DataSet
. Vanwege de systeemeigen serialisatie-indeling van het DataSet
is XML, is het een uitstekend medium voor het verplaatsen van gegevens tussen lagen, waardoor de DataSet
optimale keuze is voor externe gegevens en schemacontext van en naar een XML-webservice. Zie XML-documenten en -gegevens voor meer informatie.