Acceso a Datos en .NET: Escenarios Conectados y Desconectados con ADO.NET
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 7,99 KB
1. Acceso a Bases de Datos con el Escenario Conectado
En la actualidad se plantean dos tipos de escenarios de acceso a bases de datos relacionales. El primero de ellos es el que se conoce como "Escenario Conectado", ya que en él se requiere una conexión física establecida con el servidor de datos durante todo momento para poder efectuar cualquier consulta o actualización sobre los datos.
Esto tiene algunas ventajas y también sus desventajas.
Algunas Ventajas:
- Al haber una única conexión a la base de datos por usuario, o incluso a veces por aplicación, establecida permanentemente, puede resultar más sencillo administrar la seguridad y el acceso al servidor de datos.
- Lo mismo ocurre con el control de concurrencia: en un escenario donde múltiples usuarios se estuvieran conectando y desconectando permanentemente para realizar distintas acciones, este control sería más difícil de llevar.
- Siempre la aplicación tiene acceso a los datos actualizados.
Algunas Desventajas:
- Se requiere una conexión abierta todo el tiempo con el servidor de base de datos, lo cual consume recursos innecesariamente si no se la está utilizando.
- La escalabilidad del acceso a los datos se ve limitada por la cantidad de conexiones establecidas simultáneamente contra el servidor de base de datos.
2. Acceso a Bases de Datos con el Escenario Desconectado
El segundo escenario de acceso a bases de datos relacionales se conoce como "Escenario Desconectado", ya que en él una parte de los datos del servidor central se copia localmente y puede luego ser consultada y actualizada sin contar con una conexión abierta. Luego, si se desea, puede establecerse una conexión con el servidor de base de datos para sincronizar los cambios efectuados sobre la copia local y actualizar los datos. Este tipo de funcionalidad es particularmente útil para escenarios de usuarios móviles, que salen de su oficina con una laptop, un SmartPhone o una PocketPC y desean poder continuar trabajando por más que no tengan conectividad física con el servidor de base de datos ubicado en la red interna de la empresa.
Algunas ventajas que provee un escenario de acceso a datos desconectado son:
- La posibilidad de trabajar sobre los datos independientemente del resto de los usuarios de la aplicación.
- Mayor escalabilidad en el acceso a datos y utilización más óptima de recursos del servidor, ya que se mantiene en un mínimo indispensable la cantidad y duración de conexiones abiertas.
- Mayor performance, al trabajar con una copia local de los datos.
Algunas Desventajas:
- Puede ocurrir que en un momento dado un usuario no esté accediendo a los datos más actualizados del repositorio central.
- Al momento de sincronizar los cambios efectuados localmente contra el repositorio central pueden surgir conflictos, los cuales deben ser resueltos manualmente.
ADO.NET soporta el acceso a datos tanto en escenarios conectados como desconectados.
.NET - Arquitectura de ADO.NET
ADO.NET es un conjunto de clases que contiene todas las funcionalidades necesarias para conectarse e interactuar con dos tipos de repositorios permanentes de información:
La arquitectura de ADO.NET está basada en el concepto de proveedores de acceso a datos, siendo un proveedor un conjunto de clases que permiten conectarse a una base de datos, ejecutar un comando sobre ella y tener acceso a los resultados de su ejecución, tanto de forma conectada como desconectada.
- A) Bases de Datos, como Microsoft SQL Server.
- B) Archivos XML
6. Los Proveedores de Acceso de Datos ADO.NET
(1) SQL Server/Access (System.Data.SqlClient)
(2) OLE DB (System.Data.OleDb)
(3) ODBC (System.Data.Odbc)
(4) Oracle (System.Data.OracleClient)
(5) MySQL, PostgreSQL, DB2
Los proveedores de acceso a datos ADO.NET (conocidos como "Managed Data Providers") representan conjuntos específicos de clases que permiten conectarse e interactuar con una base de datos, cada uno utilizando un protocolo particular. El .NET Framework incluye cuatro proveedores de acceso a datos, que en conjunto le permiten conectarse e interactuar virtualmente con cualquier base de datos existente en la actualidad:
Data Provider For SQL Server:
Es el proveedor de acceso nativo a servidores de bases de datos Microsoft SQL Server 7.0 o superior, y Microsoft Access. Al conectarse vía protocolos nativos de bajo nivel, provee la alternativa más performante para conexiones contra estos motores de bases de datos. Sus clases se encuentran en el namespace System.Data.SqlClient.
Data Provider For OLE DB:
Es el proveedor de acceso a datos que permite interactuar vía el protocolo estándar OLE DB con cualquier repositorio de datos que lo soporte. Sus clases se encuentran en el namespace System.Data.OleDb.
Data Provider For ODBC:
Es el proveedor de acceso a datos que permite interactuar vía el protocolo estándar ODBC con cualquier repositorio de datos que lo soporte. Sus clases se encuentran en el namespace System.Data.Odbc.
Data Provider For Oracle:
Es el proveedor de acceso nativo a bases de datos Oracle, desarrollado por Microsoft utilizando las herramientas de conectividad de Oracle. De esta forma puede lograrse un acceso más performante a bases de datos Oracle desde aplicaciones .NET que utilizando ODBC.
Clases Comunes de ADO.NET - Gráfica de ADO.NET
XxxConnection: Representa una conexión. Almacena, entre otras cosas, el string de conexión (connection string), y permite conectarse y desconectarse con una base de datos.
XxxCommand: Permite almacenar y ejecutar una instrucción SQL contra una base de datos, enviando parámetros de entrada y recibiendo parámetros de salida.
Estas dos clases se utilizan tanto en escenarios conectados como desconectados.
XxxDataReader: Permite acceder a los resultados de la ejecución de un comando contra la base de datos de manera read-only (sólo lectura), forward-only (sólo hacia adelante). Esta clase se utiliza en escenarios conectados, ya que no es posible operar sobre los registros de un DataReader estando desconectado de la fuente de datos.
xxDataAdapter y DataSet: En conjunto, estas clases constituyen el corazón del soporte a escenarios desconectados de ADO.NET. El DataSet es una representación en memoria de una base de datos relacional, que permite almacenar un conjunto de datos obtenidos mediante un DataAdapter. El DataAdapter actúa como intermediario entre la base de datos y el DataSet local desconectado. Una vez que el DataSet se encuentra lleno con los datos que se necesitan para trabajar, la conexión con la base de datos puede cerrarse sin problemas y los datos pueden ser modificados localmente. Por último, el DataAdapter provee un mecanismo para sincronizar los cambios locales contra el servidor de base de datos. Nótese que la clase System.Data.DataSet no tiene el prefijo Xxx, ya que es independiente del proveedor de acceso a datos utilizado.
DataSet
Como ya se ha mencionado, el DataSet es una representación residente en memoria de datos relacionales, independiente de la base de datos y del protocolo utilizado para interactuar con la misma. Un DataSet, al igual que una base de datos, está compuesto por un conjunto de tablas (colección de clases "DataTable"), cada una de las cuales está compuesta a su vez por un conjunto de filas (colección de clases "DataRow") y columnas (colección de clases "DataColumn"). Dentro de un DataSet pueden establecerse relaciones entre DataTables, y hasta restricciones de integridad referencial (Claves Primarias y Foráneas). Internamente, los DataSets representan toda su estructura y datos contenidos en formato XML.