Comparaison de ADO.NET et ADO

Mise à jour : novembre 2007

Vous pourrez mieux comprendre les fonctionnalités d'ADO.NET si vous les comparez à celles d'ADO (ActiveX Data Objects).

Représentation en mémoire des données

Dans ADO, les données sont représentées en mémoire par un jeu d'enregistrements. Dans ADO.NET, la représentation des données est le groupe de données. Il existe entre eux des différences importantes.

Nombre de tables

Un jeu d'enregistrements ressemble à une table. Si un jeu d'enregistrements est appelé à contenir des données provenant de plusieurs tables, il doit utiliser une requête JOIN qui réunit dans une même table les données de plusieurs tables.

Un groupe de données, en revanche, est une collection d'une ou de plusieurs tables. Les tables d'un groupe de données sont appelées tables de données ou plus précisément objets DataTable. Si un groupe de données contient des données provenant de plusieurs tables de bases de données, il contient en général plusieurs objets DataTable. Autrement dit, chaque objet DataTable correspond généralement à une même table ou vue de base de données. Ainsi, un groupe de données peut reproduire la structure de la base de données sous-jacente.

D'autre part, un groupe de données contient également des relations. Une relation dans un groupe de données s'apparente à une relation de clé étrangère dans une base de données ; elle établit des associations entre les lignes des tables. Par exemple, si un groupe de données contient une table des actionnaires et une autre de leurs achats de titres, elle peut également contenir une relation associant chaque ligne de la table des actionnaires aux lignes correspondantes de la table des achats.

Parce qu'il peut contenir plusieurs tables distinctes et maintenir des informations sur les relations qui les unissent, un groupe de données est en mesure d'accepter des structures de données beaucoup plus élaborées qu'un jeu d'enregistrements, notamment des tables liées avec elles-mêmes ou contenant des relations plusieurs-à-plusieurs.

Dans ADO, vous parcourez séquentiellement les lignes d'un jeu d'enregistrements à l'aide de la méthode ADO MoveNext. Dans ADO.NET, les lignes sont représentées par des collections, de sorte que vous pouvez parcourir en boucle une table comme vous le feriez dans une collection ou accéder à certaines lignes par leur numéro ou par leur index de clé primaire. Les objets DataRelation maintiennent des informations sur les enregistrements principaux et secondaires et proposent une méthode vous permettant d'obtenir des enregistrements liés à ceux avec lesquels vous travaillez. Par exemple, en partant de la ligne « Nate Sun » de la table Investor, vous pouvez naviguer jusqu'au jeu de lignes de la table Purchase décrivant les achats de cet actionnaire.

Remarque :

Les applications Windows Forms fournissent le BindingNavigator permettant de parcourir les enregistrements dans une source de données. Pour plus d'informations, consultez BindingNavigator, contrôle (Windows Forms).

Un curseur est un élément de base de données qui contrôle la navigation dans les données, la possibilité de mettre à jour des données et la visibilité aux autres utilisateurs des modifications apportées à la base de données. ADO.NET ne possède pas d'objet curseur inhérent, mais il contient en revanche des classes de données qui garantissent les fonctionnalités d'un curseur traditionnel. Les fonctionnalités d'un curseur avant uniquement et en lecture seule, par exemple, sont disponibles via l'objet DataReader ADO.NET.

Moins de connexions ouvertes

Dans ADO.NET, les connexions ne demeurent ouvertes que pendant la durée d'exécution d'une opération sur la base de données (sélection ou mise à jour, par exemple). Il est possible de lire des lignes pour les placer dans un groupe de données, puis de les manipuler sans rester connecté à la source. Dans ADO, le jeu d'enregistrements peut offrir un accès déconnecté, mais ADO est principalement conçu pour un accès connecté.

Il existe une différence essentielle entre le traitement déconnecté dans ADO et dans ADO.NET. Dans ADO, vous communiquez avec la base de données par l'intermédiaire d'appels à un fournisseur OLE DB. En revanche, dans ADO.NET, vous communiquez avec la base de données par le biais de TableAdapters et d'adaptateurs de données (par exemple, SqlDataAdapter), qui passent des appels à un fournisseur OLE DB ou aux API fournies par la source de données sous-jacente. La différence principale est que l'adaptateur vous permet de contrôler la manière dont les modifications apportées au groupe de données sont transmises à la base de données (en optimisant les performances, en exécutant des contrôles de la validation des données ou en ajoutant tout autre traitement supplémentaire).

Partage des données entre les applications

Il est beaucoup plus facile de transmettre un groupe de données ADO.NET d'une application à une autre qu'un jeu d'enregistrements déconnecté ADO. Pour transmettre un jeu d'enregistrements déconnecté ADO d'un composant à un autre, vous utilisez le marshaling COM. Dans ADO.NET, cette transmission s'effectue via un groupe de données, qui peut diffuser un flux XML.

La transmission de fichiers XML offre les avantages suivants par rapport au marshaling COM :

Types de données plus riches

Le marshaling COM n'offre qu'un nombre limité de types de données (ceux qui sont définis par la norme COM). Comme la transmission des groupes de données dans ADO.NET repose sur un format XML, il n'existe aucune restriction au nombre de types de données. Ainsi, les composants partageant le groupe de données peuvent utiliser toute la gamme des types de données qu'ils utiliseraient d'ordinaire.

Performances

La transmission d'un jeu d'enregistrements ADO ou d'un groupe de données ADO.NET de grande taille peut consommer des ressources du réseau ; à mesure qu'augmente le volume des données, la contrainte imposée au réseau s'accroît aussi. ADO et ADO.NET vous permettent tous deux de minimiser les données transmises. Toutefois, ADO.NET offre un autre avantage en matière de performances, car il n'exige pas de conversion des types de données. ADO, qui fait appel au marshaling COM pour transmettre des jeux d'enregistrements parmi les composants, exige que les types de données ADO soient convertis en types de données COM.

Pénétration des pare-feu

Un pare-feu peut interférer avec deux composants essayant de transmettre des jeux d'enregistrements ADO déconnectés. N'oubliez pas qu'un pare-feu est en général configuré pour permettre le passage de texte HTML, mais aussi pour empêcher celui des demandes de niveau système (comme le marshaling COM).

Dans la mesure où les composants échangent des groupes de données ADO.NET à l'aide du format XML, les pare-feu peuvent permettre le passage des groupes de données.

Voir aussi

Concepts

Avantages d'ADO.NET

Autres ressources

Mise en route avec l'accès aux données

Connexion aux données dans Visual Studio

Préparation de votre application pour recevoir des données

Extraction de données dans votre application

Affichage des données sur des formulaires dans les applications Windows

Modification des données dans votre application

Validation des données

Enregistrement des données

Ressources de données