Vous êtes sur la page 1sur 5

DO .

NET para Programadores de ADO


Por Geykel Ral Moreno Ceballos
Contenido

Introduccin Visin general Diseo de ADO ADO .NET Tipos de datos Elegir un DataReader o un DataSet Conclusin

Introduccin
En el .NET Framework, Microsoft introduce ADO .NET, una evolucin de la arquitectura de acceso a datos proveda por el modelo de programacin Microsoft ActiveX Data Objects (ADO). ADO .NET no viene a reemplazar a ADO para los programadores de COM; ms bien, ste provee a los programadores de .NET un acceso a las fuentes de datos relacionales, XML y aplicaciones de datos. ADO .NET ayuda a una variedad de necesidades de desarrollo, incluyendo clientes de bases de datos y objetos del negocio intermedios usados por aplicaciones, herramientas, lenguajes y navegadores de Internet. Este artculo presenta una visin general de la arquitectura de acceso a datos disponible a travs de ADO .NET. Principio de la pgina

Visin general
Desde su nacimiento, ADO ha provedo una eficiente y robusta interfaz para el trabajo con datos a los programadores de COM. ADO es extensamente usado por diferentes variedades de almacenes porque ste puede ser llamado desde cualquier lenguaje incluyendo Microsoft Visual Basic 6.0, Microsoft Visual C++, y una gran variedad de interfaces de scripting. ADO .NET es una evolucin de ADO que provee una mejor interoperabilidad de plataformas y acceso a datos escalable. Creando un nuevo conjunto de API de acceso a datos en ADO .NET nos ofrece las siguientes ventajas sobre portar directamente ADO al .NET Framework: 1. Mejor integracin con XML: Subsiguiente al diseo de ADO, XML comenz a jugar un papel cada vez ms significante en el diseo de aplicaciones. ADO .NET aprovecha la eficacia de XML para proporcionar acceso a datos sin mantener una conexin abierta. ADO .NET fue diseado teniendo en cuenta las clases de XML incluidas en .NET Framework: ambos son componentes de una nica arquitectura.

ADO .NET y las clases de XML incluidas en .NET Framework convergen en el objeto DataSet. El DataSet se puede llenar con datos procedentes de un origen XML, ya sea ste un archivo o una secuencia XML. El DataSet se puede escribir como XML compatible con el del consorcio World Wide Web (W3C), incluyendo su esquema como esquema XSD (Lenguaje de definicin de esquemas XML), independientemente del origen de los datos incluidos en el DataSet. Puesto que el formato nativo de serializacin del DataSet es XML, es un medio excelente para mover datos de un nivel a otro, por lo que el DataSet es idneo para utilizar datos y contextos de esquemas de interaccin remota desde y hacia un servicio Web XML. ADO .NET adems usa herramientas XML para llevar a cabo validaciones, consultas jerrquicas y transformaciones de datos en datos relacionales. 2. Integracin con el .NET Framework: Las construcciones de ADO, como los Recordset, no emplean construcciones de programacin familiares pero en cambio son modelados para ser orientados a la base de datos. Por ejemplo, los cursores que se usan para navegar y recuperar datos funcionan diferente a otras construcciones de datos tales como los arreglos y las colecciones. Sin embargo, en ADO .NET los datos pueden ser expuestos en memoria a travs de estructuras comunes del .NET Framework, incluyendo arreglos y colecciones, proveyndote de mtodos de acceso comunes cuando trabajas con datos relacionales. 3. Mejor soporte para el modelo de negocio desconectado: ADO provee limitado soporte para el acceso desconectado usando Recordset. ADO .NET introduce un nuevo objeto, el DataSet, esencial para admitir escenarios de datos distribuidos de ADO .NET sin mantener una conexin. El DataSet es una representacin residente en memoria de datos que proporciona un modelo de programacin relacional coherente independientemente del origen de datos. Se puede utilizar con mltiples y distintos orgenes de datos, con datos XML o para administrar datos locales de la aplicacin. El DataSet representa un conjunto completo de datos entre los que se incluyen tablas relacionadas, restricciones y relaciones entre las tablas. En la Figura 1 se muestra el modelo de objeto DataSet.

Figura 1: Modelo de objeto DataSet. Volver al texto. 4. Los mtodos y objetos contenidos en un DataSet son coherentes con los del modelo de base de datos relacional. El DataSet tambin puede persistir y volver a cargar su contenido como XML y su esquema como esquema XSD (Lenguaje de definicin de esquemas XML). 5. Control explcito de los comportamientos de acceso a dato: El diseo de ADO incorpora comportamientos implcitos que podran no siempre ser los requeridos por la aplicacin y esto podra por consiguiente limitar el rendimiento. ADO .NET provee componentes factorizados bien definidos con comportamientos y rendimiento predecibles y una semntica que te permite dirigir escenarios comunes de una manera favorablemente perfeccionada. 6. Mejor soporte en tiempo de diseo: ADO deriva informacin acerca de los datos implcitamente en tiempo de ejecucin, basado en la metadata que frecuentemente es costosa de obtener. ADO .NET, por otra parte, obtiene la metadata conocida en

tiempo de diseo con el propsito de proveer un mejor rendimiento y comportamiento consistente en tiempo de ejecucin. Principio de la pgina

Diseo de ADO
Para entender mejor el modelo y diseo de ADO .NET, es til repasar algunos de los principales aspectos de ADO. ADO usa un objeto sencillo, el Recordset, como representacin comn para trabajar con todos los tipos de datos. El Recordset se utiliza para trabajar solamente con un flujo hacia delante (forward-only) de resultados de la base de datos, para desplazarse a travs de los datos guardados en un servidor, o para desplazarse a travs de un conjunto de resultados cacheados. Los cambios hechos a los datos pueden ser aplicados inmediatamente en la base de datos, o aplicados en lote usando bsquedas ptimas y operaciones de actualizacin. Puedes especificar la funcionalidad deseada cuando creas el Recordset, y el comportamiento del Recordset resultante puede variar enormemente dependiendo de las propiedades que desees. Debido a que ADO utiliza un objeto sencillo que puede comportarse de muchas formas diferentes, te permite mantener el modelo de objetos de tu aplicacin muy simple. Sin embargo, es difcil escribir cdigo comn, previsible y optimizado porque el comportamiento, rendimiento y la semntica exhibida por este objeto vara grandemente dependiendo de cmo el objeto es generado y a qu dato est accediendo. Esta es una realidad particular para componentes genricos (como el control grilla grid control) que intenta consumir datos que no han sido generado por el componente y por lo cual el componente no tiene la habilidad de especificar el comportamiento o funcionalidad requerida. Principio de la pgina

ADO .NET
En el diseo de ADO .NET, se tuvieron en consideracin tareas a las cuales se enfrenta un desarrollador comnmente cuando accede o trabaja con datos. Al contrario de usar un objeto simple para llevar a cabo un determinado nmero de tareas, ADO .NET agencia funcionalidades especficas en objetos explcitos que estn optimizados para permitir al desarrollador llevar a cabo de cada una de las tareas. La funcionalidad que un Recorset de ADO provee ha sido dividida en los siguientes objetos explcitos en ADO .NET: el DataReader, que provee un acceso rpido, hacia delante (forward-only) y de slo lectura en los resultados de una consulta; el DataSet, que provee una representacin relacional de los datos en memoria; y el DataAdapter, que provee un puente entre el DataSet y la fuente de datos. El objeto Command de ADO .NET incluye adems funcionalidad explcita tales como el mtodo ExecuteNonQuery para comandos que no retornan filas, y el mtodo ExecuteScalar para consultas que devuelven un nico valor en cambio de un conjunto de filas. Para una mejor comprensin de cmo el diseo de ADO .NET est constituido por objetos optimizados para llevar a cabo un comportamiento explcito, considera las siguientes tareas comunes cuando se trabaja con datos:

1. Flujos de datos hacia delante y de slo lectura: Frecuentemente las aplicaciones procesan una seria de resultados en tiempo de ejecucin, sin requerir la interaccin del usuario y no tener que actualizar o desplazarse hacia atrs a travs de los resultados mientras se van leyendo. En ADO este tipo de recuperacin de datos se lleva a cado utilizando el Recordset. En ADO .NET, sin embargo, el objeto DataReader optimiza este tipo de recuperacin de datos proveyendo un flujo sin el uso de buffers, hacia delante (forward-only), y de slo lectura proveyendo un mecanismo ms eficiente de recuperacin de resultados de una base de datos. La mayor parte de esta eficiencia se obtiene como resultado de que el DataReader fue diseado con este propsito solamente, sin tener que enfrentarse a escenarios donde los datos son actualizados hacia la fuente de datos o cacheado localmente como con los Recordset de ADO. 2. Acceso desconectado a datos: Un caso frecuente para exponer datos es en una representacin en la cual el usuario pueda navegar en ellos sin atarse a restricciones o ligarse a recursos en el servidor. Algunos ejemplos de este escenario es cuando vinculamos datos a un control o combinamos datos de diferentes fuentes de datos y/o XML. El Recordset de ADO provee algn soporte para estos escenarios, usando un cursor del lado del cliente. Sin embargo, en ADO .NET el DataSet est diseado para estas tareas. El DataSet provee una representacin comn y completamente desconectada de los datos que puede guardar resultados de distintas fuentes de datos. Debido a que el DataSet es completamente independiente de la fuente de datos, provee el mismo rendimiento y semntica sin tener en cuenta desde dnde se estn cargando los datos, desde una base de datos, desde un fichero XML, o si son generados por la aplicacin. Un simple DataSet puede contener tablas copuladas desde distintas bases de datos u otras fuentes que no necesariamente tienen que ser bases de datos; toda la apariencia y comportamiento para el cliente del DataSet ser exactamente el mismo. Las capacidades relacionales del DataSet proveen un avance sobre el Recordset las cuales son limitadas exponiendo datos de diferentes tablas, o para retornar mltiples conjuntos de datos distintos, teniendo el desarrollador que manipular y relacionar los datos manualmente, el DataSet provee mucha ms flexibilidad cuando trabaja con conjuntos de datos relacionados, adems provee la habilidad de transmitir resultados desde un cliente remoto o servidor en formato XML, usando el lenguaje de definicin de esquema de XML (XSD Schema definition language). 3. Recuperando y actualizando datos desde la fuente de datos: El DataAdapter de ADO .NET provee un puente entre el DataSet y la fuente de datos. El DataAdapter se usa para llenar un DataSet con resultados obtenidos desde la base de datos, y para leer cambios en el DataSet y actualizarlos a la base de datos. Usando un objeto separado, el DataAdapter, para comunicarse con la base de datos permite completamente al DataSet mantenerse genrico con respecto a los datos que contiene, y permite que tengas un mayor control sobre cundo y cmo se ejecutan los comandos y se envan los cambios a la base de datos. ADO desempea mucho de este comportamiento implcitamente, sin embargo, el diseo explcito de ADO .NET nos permite una mejor interaccin con la fuente de datos para un mejor rendimiento y escalabilidad. Principio de la pgina

Tipos de datos
En ADO, todos los resultados se retornan en el tipo estndar OLE Automation Variant. Esto puede deteriorar el rendimiento porque, adems de los gastos en las conversiones, a Variant se le asigna espacio en memoria usando task-allocated system memory, lo cual provoca contenciones a travs del sistema. Cuando recuperamos resultados desde un DataReader en ADO .NET, sin embargo, puedes obtener columnas en su tipo de dato nativo, como un objeto comn de la clase Object, sin tener que pasar por conversiones costosas. Los valores de los datos pueden exponerse tanto como tipos del .NET Framework, o pueden ponerse en una estructura propia en el .NET Framework para preservar la fidelidad del tipo de dato nativo. Un ejemplo de esto es el SQL Server .NET Data Provider, el cual puede ser usado para exponer datos provenientes de Microsoft SQL Server como tipo de datos del .NET Framework, o como tipo propio definido en las clases del espacio de nombres System.Data.SqlTypes. Principio de la pgina

Elegir un DataReader o un DataSet


A la hora de decidir si tu aplicacin debe utilizar un DataReader o un DataSet, debes tener en cuenta el tipo de funcionalidad que tu aplicacin requiere. Usa un DataSet para hacer lo siguiente: utilizar datos de forma remota entre un nivel y otro o desde un servicio Web XML; Interactuar con datos dinmicamente, por ejemplo, para enlazar con un control de Windows Forms o para combinar y relacionar datos procedentes de varios orgenes; Almacenar datos en memoria cach localmente, dentro de tu aplicacin; Proporcionar una vista XML jerrquica de datos relacionales y utilizar herramientas como una transformacin XSL o una consulta Xpath (XML Path Language) en tus datos. Realizar procesamientos exhaustivos de datos sin necesidad de tener una conexin abierta con el origen de datos, lo que libera la conexin para que la utilicen otros clientes. Si no necesita la funcionalidad proporcionada por el DataSet, puede mejorar el rendimiento de tu aplicacin si utilizas el DataReader para devolver tus datos de slo avance y de slo lectura. Aunque el DataAdapter usa el DataReader para rellenar el contenido de un DataSet, al utilizar el DataReader puedes mejorar el rendimiento porque no usars la memoria que utilizara el DataSet, adems de evitar el procesamiento necesario para crear y rellenar el contenido del DataSet.

Vous aimerez peut-être aussi