Comparación de ADO.NET con ADO

Actualización: noviembre 2007

Para comprender las funciones de ADO.NET, puede compararlas con determinadas funciones de ActiveX Data Objects (ADO).

Representaciones de datos en memoria

En ADO, la representación de datos en memoria es el conjunto de registros. En ADO.NET, es el conjunto de datos. Existen importantes diferencias entre ellos.

Número de tablas

Un conjunto de registros se asemeja a una sola tabla. Si un conjunto de registros va a contener datos procedentes de múltiples tablas de bases de datos, debe utilizar una consulta JOIN, que ensambla datos de varias tablas de bases de datos en una sola tabla resultante.

Por el contrario, un conjunto de datos es una colección de una o varias tablas. Las tablas de un conjunto de datos se denominan tablas de datos; específicamente, son objetos DataTable. Si un conjunto de datos contiene datos procedentes de múltiples tablas de bases de datos, lo más habitual es que contenga múltiples objetos DataTable. Es decir, lo habitual es que cada objeto DataTable corresponda a una sola tabla o vista de una base de datos. De este modo, un conjunto de datos puede imitar la estructura de la base de datos subyacente.

Habitualmente, un conjunto de datos también contiene relaciones. Una relación dentro de un conjunto de datos es análoga a una relación de clave externa en una base de datos: es decir, asocia filas de tablas entre sí. Por ejemplo, si un conjunto de datos contiene una tabla sobre inversores y otra tabla con la compra de acciones de cada inversor, podría contener también una relación que conectara cada fila de la tabla de inversores con las filas correspondientes de la tabla de compras.

Dado que el conjunto de datos puede contener múltiples tablas separadas y mantener información acerca de las relaciones entre ellas, puede contener estructuras de datos mucho más ricas que un conjunto de registros, incluidas tablas autorreferentes y tablas con relaciones varios a varios.

En ADO, la búsqueda de las filas del conjunto de registros se realiza de forma secuencial, mediante el método MoveNext de ADO. En ADO.NET, las filas se representan como colecciones, por lo que es posible recorrer una tabla en bucle tal como se haría con cualquier colección o tener acceso a determinadas filas mediante un índice ordinal o de clave principal. Los objetos DataRelation mantienen información relativa a los registros maestros y de detalle, y proporcionan un método para obtener registros relacionados con el registro con el que se está trabajando. Por ejemplo, si empieza desde la fila de la tabla Investor correspondiente a "José Lugo", puede navegar hasta el conjunto de filas de la tabla Purchase que describen sus compras.

Nota:

Las aplicaciones de los formularios Windows Forms proporcionan el BindingNavigator para navegar por los registros en un origen de datos. Para obtener más información, vea BindingNavigator (Control, formularios Windows Forms).

Un cursor es un elemento de una base de datos que controla la navegación por los cursores, la capacidad de actualizar datos y la visibilidad de los cambios realizados en la base de datos por otros usuarios. ADO.NET no tiene un objeto de cursor inherente, pero incluye clases de datos que proporcionan la funcionalidad de un cursor tradicional. Por ejemplo, la funcionalidad de un cursor de sólo avance y sólo lectura está disponible en el objeto DataReader de ADO.NET.

Minimizar las conexiones abiertas

En ADO.NET las conexiones se abren sólo el tiempo necesario para realizar una operación de base de datos, como una selección o una actualización, ya que es posible incorporar las filas en un conjunto de datos y a continuación trabajar con ellas sin estar conectado con el origen de datos. En ADO, el conjunto de registros puede proporcionar acceso desconectado, pero se diseñó principalmente para el acceso conectado.

Hay una diferencia importante entre el procesamiento desconectado en ADO y ADO.NET. En ADO, la comunicación con la base de datos se hace mediante llamadas a un proveedor OLE DB. En ADO.NET, se comunica con la base de datos mediante TableAdapters o adaptadores de datos (por ejemplo, SqlDataAdapter), que realiza llamadas a un proveedor OLE DB o a las API proporcionadas por el origen de datos subyacente. La diferencia más importante radica en que el adaptador de datos permite controlar cómo se transmiten a la base de datos las modificaciones del conjunto de datos, ya sea mediante la optimización del rendimiento, la ejecución de comprobaciones de validación de datos o la adición de cualquier otro procesamiento adicional.

Compartir datos entre aplicaciones

La transmisión de un conjunto de datos de ADO.NET entre aplicaciones es mucho más sencilla que la transmisión de un conjunto de registros desconectado de ADO. Para transmitir un conjunto de registros desconectado ADO de un componente a otro, se utiliza el cálculo de referencias de COM. Para transmitir datos en ADO.NET, se usa un conjunto de datos, que puede transmitir una secuencia XML.

La transmisión de archivos XML ofrece las siguientes ventajas sobre el cálculo de referencias de COM:

Tipos de datos más ricos

El cálculo de referencias de COM proporciona un conjunto limitado de tipos de datos: los definidos por el estándar de COM. Dado que la transmisión de conjuntos de datos en ADO.NET se basa en un formato XML, no hay restricciones sobre los tipos de datos. De este modo, los componentes que comparten el conjunto de datos pueden utilizar cualquier conjunto enriquecido de tipos de datos que utilicen habitualmente.

Rendimiento

La transmisión de un conjunto de registros ADO grande o de un conjunto de datos ADO.NET grande puede consumir recursos de red; a medida que crece el volumen de datos, crece también la tensión a la que está sometida la red. Tanto ADO como ADO.NET permiten minimizar los datos que se transmiten. Sin embargo, ADO.NET ofrece otra ventaja de rendimiento, puesto que ADO.NET no necesita conversiones de tipos de datos. ADO, que requiere el cálculo de referencias de COM para transmitir conjuntos de registros entre componentes, sí necesita convertir los tipos de datos ADO a tipos de datos COM.

Penetrar en firewalls

Un firewall puede interferir con dos componentes que intenten transmitir conjuntos de registros ADO desconectados. Recuerde, los firewall suelen configurarse para permitir que pase el texto HTML, pero para evitar que pasen peticiones de nivel de sistema (como, por ejemplo, el cálculo de referencias de COM).

Dado que los componentes intercambian conjuntos de datos ADO.NET mediante XML, los firewall pueden permitir el paso de los conjuntos de datos.

Vea también

Conceptos

Ventajas de ADO.NET

Otros recursos

Introducción a Data Access

Conectarse a datos en Visual Studio

Preparar la aplicación para recibir datos

Buscar datos en la aplicación

Mostrar datos en formularios en aplicaciones para Windows

Modificar datos en la aplicación

Validar datos

Guardar datos

Recursos de datos