ADO.Net TGP (Tecnología de la Programación) 3º Curso de ITI (gestión)
Jmrr@infor.uva.es
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
1
Ado.NET • Evolución del Modelo de datos ADO • Integrado en la Plataforma .NET Framework – Sistema de Clases integrado en los espacios de Nombres .NEt
• Mas Flexible – trabaja con modelos multitabla desconectados)
• Permite Escalabilidad • Orientado a la arquitecturas Multinivel jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
2
Ado.Net
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
3
ADO.Net • ADO.NET es el modelo de acceso a datos para las aplicaciones basadas en .NET • Se puede utilizar para acceder a sistemas debase de datos relacionales. Ejemplos: – SQL Server, Oracle, etc.
• Muchas otras fuentes de datos (para las cuales existe un proveedor OLE DB u ODBC) • Soporte intrínseco para XML • Programación Orientada a Componentes jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
4
• ADO trabaja bien, pero: – Necesita COM y Windows – Los recordsets no viajan bien a través de Internet
• ADO.NET resuelve estos problemas: – Utiliza XML (a bajo nivel) para realizar el transporte de datos – XML no tiene requisitos específicos de runtime/transporte • No se necesita un código especial para hacer el marshaling a través de Internet
• ADO .NET, una nueva mentalidad: – Entorno desconectado – Todo el transporte de datos utiliza XML
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
5
Evolución •
ODBC (Open DataBase Connectivity) – Interoperatibilidad con amplio rango de SGBD – API acceso ampliamente aceptada – Usa SQL como lenguaje de acceso a datos
•
DAO (Data Access Objects) – Interfaz de programación para bases de datos JET/ISAM (e.g. – MS Access)
•
RDO (Remote Data Objects) – Estrechamente ligado a ODBC – 2rientado a aplicaciones cliente/servidor
•
OLE DB (Object Linking and Embedding for Databases) – – – – –
No restringido a acceso a datos relacionales No limitado a SQL como lenguaje de recuperación de datos Tecnología desarrollada por Microsoft Construido sobre COM (Component Object Model) Proporciona una interfaz a bajo nivel en C++
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
6
Plataforma .Net
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
7
Arquitectura Framework .NET
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
8
Componentes
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
9
Dos Componentes • Proveedores de datos – Proporcionar conexión con las bases de datos – Manipulación de Datos – Acceso rápido en avance de solo lectura
• Data Set – Componente Central de la Arquitectura – Acceso a datos y su manejo independiente del origen
• Entre ambos se incluyen: – Connection, Command, DataReader y DataAdapter jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
10
Arquitectura
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
11
Proveedores de datos .NET Framework • Los proveedores de datos .NET Framework son componentes diseñados explícitamente para la manipulación de datos y el acceso rápido a datos de solo lectura y solo avance. – Connection • proporciona conectividad a un origen de datos.
– Command • permite tener acceso a comandos de base de datos para devolver datos, modificar datos, ejecutar procedimientos almacenados y enviar o recuperar información sobre parámetros.
– DataReader • proporciona un flujo de datos de alto rendimiento desde el origen de datos.
– DataAdapter • proporciona el puente entre el objeto DataSet y el origen de datos. • utiliza objetos Command para ejecutar comandos SQL en el origen de datos tanto para cargar DataSet con datos y reconciliar en el origen de datos los cambios aplicados a los datos incluidos en el DataSet.
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
12
DataSet • El DataSet de ADO.NET es el componente central de la arquitectura sin conexión de ADO.NET. • El DataSet está expresamente diseñado para el acceso a datos independientemente del origen de datos. • Como resultado, se puede utilizar con múltiples y distintos orígenes de datos, con datos XML o para administrar datos locales de la aplicación. • El DataSet contiene una colección de uno o más objetos DataTable formados por filas y columnas de datos, así como información sobre claves principales, claves externas, restricciones y relaciones relativa a los datos incluidos en los objetos DataTable. jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
13
Conceptos Básicos • Modelo de objetos – Objetos de System.Data – Proveedores de acceso a datos .NET
• Jerarquía de espacio de nombres (namespace) – Organiza el modelo de objetos – Incluye: • • • • • jmrr@2010
System.Data System.Data.Common System.Data.OleDb System.Data.SqlClient System.Data.SqlTypes
TGp‐2010 (Capa Persistencia)
23/11/2010
14
ADO.NET: Connection • OleDbConnection/SQLConnection • Representa la sesión contra la BD • Utilizado por objetos Data Adapter y Command para recuperar/actualizar • Inicia las transacciones – Connection.BeginTransaction() devuelve un objeto Transaction – xxxTransaction • Un comando se enlista en una transacción • Isolation Level • Commit() / Rollback()
• Configuración del pool de conexionesen el connection string jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
15
ADO.NET: Command • OleDbCommand/SQLCommand • Representa Transact‐SQL o procedimientos almacenados • Devuelve un resultset (ExecuteReader), un valor (ExecuteScalar), o ejecuta sentencias de modificación (ExecuteNonQuery) • Generación automática con el objeto CommandBuilder jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
16
ADO.NET: DataReader • • • • •
OleDbDataReader/SQLDataReader Stream forward‐only read‐only Utilizado por el DataAdapter Muy rápido Creado por un objeto Command (ExecuteReader)
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
17
ADO.NET: DataAdapter • OleDbDataAdapter/SQLDataAdapter • Representa un conjunto de Commands y una Connection • Puente entre el DataSet y la BD • Lee y actualiza la BD: – SelectCommand, – UpdateCommand, – InsertCommand – DeleteCommand jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
18
ADO.NET: DataAdapter
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
19
ADO.NET: DataSet • • • • •
Objeto estrella en ADO.NET Representa una caché de datos en memoria Contiene DataTables Lee y escribe datos y esquemas en XML Puede ser tipado o no tipado: – Ambos heredan de la clase DataSet – El tipado se apoya en un esquema XML (.XSD) para generar la clase – El tipado tiene ventajas: • Expone estructura como propiedades y métodos: Intellisense • Recoge la Primary key
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
20
Otros Objetos • DataTable – Representa una tabla en memoria – Lo rellena un DataAdapter o a mano – Componente principal de los objetos DataSet y DataView
• DataView – Vista personalizada de un objeto DataTable – Filtros, ordenación, búsquedas …
• DataRelation – Define relaciones entre tablas – Utiliza columnas de un DataTable jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
21
DataSet
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
22
Elegir un DataReader o un DataSet • •
La elección entre DataReader (vea Recuperar datos mediante DataReader) o un DataSet (vea Crear y utilizar DataSets), debe tener en cuenta el tipo de funcionalidad que su aplicación requiere. Usar 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 dinámicamente, •
por ejemplo para enlazar con un control de Windows Forms o para combinar y relacionar datos procedentes de varios orígenes.
– Almacenar datos en memoria caché localmente, dentro de su aplicación. – Proporcionar una vista XML jerárquica de datos relacionales y utilizar herramientas como una transformación XSL o una consulta Xpath (XML Path Language) en sus datos. – Realizar procesamientos exhaustivos de datos sin necesidad de tener una conexión abierta con el origen de datos, lo que libera la conexión para que la utilicen otros clientes.
•
Se puede mejorar el rendimiento de su aplicación si utiliza el DataReader para devolver sus datos de sólo avance y de sólo lectura. – al utilizar el DataReader puede mejorar el rendimiento porque no usará la memoria que utilizaría el DataSet, – Evita el procesamiento necesario para crear y rellenar el contenido del DataSet.
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
23
ADO.NET: Lecturas • Método Fill del objeto DataAdapter • Se utiliza el SelectCommand del DataAdapter • Inserta/actualiza datos del DataSet – Si la tabla existe, actualiza datos – Si no existe, crea y rellena la tabla – Una tabla por cada resultset
• Mantiene la conexión en su estado original jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
24
ADO.NET: Actualizaciones • La funcionalidad en ADO es implícita. Recordset= caja negra. – Ejemplo: UpdateBatch
• En ADO.NET: Se crea un modelo más explícito y transparente. – – – –
InsertCommand, UpdateCommand, DeleteCommand Eventos de Update
• CommandBuilder – generación automática de los comandos de Insert, Update y Delete a partir del Select Command jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
25
ADO.NET: Actualizaciones • DataAdapter.Update: – Analiza los cambios del DataSet – Ejecuta los comandos Insert, Update y Delete necesarios
• Refresca el DataSet • Orden de ejecución por defecto: – Insert, Update y Delete.
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
26
ADO.NET: Enlace Controles (binding) • ADO.NET soporta enlazar (binding) DataSets a Windows Forms / Web Forms y sus controles • VStudio.NET incluye bastantes Ayudas (wizards) para hacer el enlace entre datosy controles
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
27
Ejemplo
jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
28
“WCF Data Services” • Implementar servicios de datos en web o en una intranet. • Los datos se estructuran como entidades y relaciones de acuerdo a las especificaciones de Entity Data Model. • Los datos implementados en este modelo se pueden direccionar mediante el protocolo HTTP estándar. jmrr@2010
TGp‐2010 (Capa Persistencia)
23/11/2010
29