Hola:
Creo que antes de escribir el codigo deberiamos reflexionar un poco sobre el uso y caracteristicas de cada objeto, en este caso d e ADO .NET. A continuacion algunas diferencias:
1. DataReader
- Es muy rapido por almacenar un solo registro a la vez.
- La conexion siempre debe estar abierta para trabajar con el objeto DataReader (Esquema Conectado).
- No es actualizable, es de solo lectura (Read Only)
- Es de avance solo hacia adelante (Forward Only)
- No es enlazable a Controles Windows Forms NET, si a los controles Web Forms NET.
- Permite leer varios Select usando el método NextResult para obtener los demas conjuntos de resultados.
- Permite leer y escribir sobre campos con imagenes (binarios) en Bases de Datos, etc.
- Es usado en Aplicaciones Windows Cliente/Servidor 2 niveles donde se necesita velocidad y no existe problemas con el numero de conexiones que maneja el Servidor.
- No es serializable, es decir no puede pasar como XML entre capas o niveles (Tiers) en una solucion remota.
2. DataSet
- Es mas pesado por almacenar todos los registros.
- La conexion siempre esta cerrada al trabajar con el objeto DataSet (Esquema Desconectado).
- Es actualizable mediante el metodo Update
- Es desplazable en todos los sentidos, en Windows se usa el objeto CurrencyManager.
- Sus miembros (DataTables y DataViews) son enlazables a Controles Windows Forms y Web Forms.
- Permite leer un solo Select en una Tabla, aunque esta traiga datos de varias.
- No permite leer y escribir sobre campos con imagenes (binarios) en Bases de Datos, etc.
- Es usado en Aplicaciones de N capas o niveles donde se necesita interoperabilidad entre plataformas y exista problemas con el numero de conexiones que maneja el Servidor.
- Por ejemplo es usado en aplicaciones de 3 niveles con COM+ o NET Remoting. Tambien es muy usado en Aplicaciones Web y Servicios Web XML
- Es serializable, es decir se pasa como XML entre capas o niveles (Tiers) en una solucion remota.
Consejo
- Si vas a usar datos dentro de componentes recuerda que van a ser llamados por multiples usuarios lo cual implica que debes trabajar en un esquema desconectado (DataSet).
- No interesa si tecnicamente puedes heredar o implementar tu propia clase de acceso a datos "Conectada" que use "DataReaders". Esta implementacion debe estar pensada en la arquitectura en la cual se va a desarrollar.
Post Data
En la version 2.0 de ADO NET, la que viene con el Visual Studio NET 2005 (Whidbey) ya existe un objeto llamado el DataTableReder que combina la funcionalidad del DataReader en un esquema desconectado (DataSet).
Saludos:
MCT Luis Dueñas. |