Title: Session Title
1Desarrollo de Aplicaciones en .NET
Daniel Laco danielL_at_vemn.com.ar Carlos
Walzer carlosw_at_vemn.com.ar
2Temario
- Presentación del caso
- Como integrar componentes de negocios COM
- en .NET
- Migrar el componente de negocios a .NET
- Diferencias entre ADO y ADO.NET
- Migrar la aplicación ASP a ASP.NET
- Diferencias entre ASP y ASP.NET
- Instalación de la aplicación ASP.NET
3ADO.NET
4Objetivos
- Introducir Microsoft ADO.NET
- Mostrar la evolución de ADO a ADO.NET
- Introducir los componentes primarios de ADO.NET
5ADO vs. ADO.NET 1/2
- ADO
- Diseñado para acceso conectado
- Vinculado al modelo físico de los datos
- El RecordSet es el contenedor central de datos
- El RecordSet es una tabla que contiene todos los
datos - Obtener datos de más de una tabla u origen,
requiere un JOIN en la base - Los datos son aplanados pierden sus relaciones
y la navegación suele ser secuencial - Los tipos de datos se encuentran relacionados con
tipos COM/COM - Los datos se comparten por marshalling COM
- Hay problemas para enviar información a través de
firewalls (DCOM, datos binarios)
6ADO vs. ADO.NET 2/2
- ADO.NET
- Diseñado para acceso desconectado
- Se puede modelar la información por lógica!
- El DataSet reemplaza al RecordSet
- El DataSet puede contener múltiples tablas
- No se requieren JOIN
- Se preservan las relaciones La navegación es
relacional - Los tipos de datos sólo están vinculados al
esquema de XML - No se requieren conversiones de tipos de datos
- XML, como HTML, es texto plano Pasa las
barreras
7Beneficios de ADO.NET
- Interoperabilidad por el uso de XML
- Estándar abierto
- Texto descifrable por Humanos
- Los datos se describen a sí mismos
- Se usa en todas las transferencias de datos en
ADO.NET - Escalabilidad por el DataSet desconectado
- No se mantienen conexiones por períodos largos
- No se producen bloqueos en la base de datos
- Trabaja como la Web Toco y me voy
- Facilidad en el Mantenimiento
- Separación de la lógica de datos y la interfaz
del usuario
8Conceptos y arquitectura
- El modelo de Objetos de ADO.NET
- Objetos DataSet
- Proveedores administrados
- Namespaces relacionados con ADO.NET
- System.Data
- System.Data.OleDb
- System.Data.Internal
- System.Data.Sql
- System.Data.SqlTypes
9El modelo de objetos de ADO.NET
- DataSet
- Proveedores administrados
10System.Data 1/2
- Contiene las bases de ADO.NET
- Namespace centrado en Datos
- Provee los mecanismos para trabajar con y sobre
los datos - Clases y métodos para manipular los datos
- Habilidad para crear vistas de los datos
- Formas para representar lógicamente los datos
- Permite la utilización de XML para ver, compartir
y almacenar datos
11System.Data 2/2
12System.Data y DataSet
13System.Data - DataSet 1/3
- Un repositorio en memoria de datos desde un
origen - Forma común de representar y manipular datos
- Contenedor universal
- No sólo para base de datos
- Representación lógica o física de los datos
depende de - La consulta / Conjunto de resultados
- Donde existen DataTables y Relations
- Diseñado para estar desconectado del origen
- Conectar, ejecutar la consulta, desconectar
- Se utiliza XML para leer y almacenar, tanto los
datos como el Esquema
14System.Data - DataSet 2/3
- Se usan colecciones para agregar Tablas y
relaciones - Propiedades importantes
- Tables Devuelve la colección de objetos
DataTable - RelationsDevuelve la colección de DataRelations
- Relacionadas con XML
15System.Data - DataTable
- Puede ser vinculado a una tabla física de una
base - Y relacionarla con otras a través de
DataRelations - Bloqueo concurrente optimista
- Propiedades importantes
- Columns Devuelve la colección de DataColumns
como ColumnsCollection - Rows Devuelve objetos DataRow como una
RowsCollection - ParentRelations Devuelve una RelationsCollection
- Constraints Devuelve la ConstraintsCollection de
la tabla - DataSet Devuelve el conjunto de datos de la
DataTable - PrimaryKey Obtiene los DataColumns que conforman
la clave primaria de la tabla
16System.Data-DataSet y DataTable
- Crear una DataTable y agregarla al DataSet
DataSet ds new DataSet() // Crear el objeto
Clientes. DataTable dt new DataTable(
Clientes ) // Crear y agregar columnas // 1.
Explícitamente DataColumn dc new DataColumn(
ID, Int16 ) dt.Columns.Add( dc ) // 2.
Implícitamente. dt.Columns.Add( Nombre, String
) dt.Columns.Add( Apellido, String ) //
Agregar el objeto DataTabla al DataSet ds.Tables.A
dd( dt )
17System.Data - DataRelation 1/2
- Utilizada para crear relaciones lógicas
- Entre dos (2) objetos DataTable
- Requiere un objeto DataColumn de cada DataTable
- El tipo de datos (DataType) de ambas DataColumns
debe ser el mismo - No es posible relacionar un Int32 con un String
- Se le asigna un nombre (por el desarrollador!)
- DataRelation drnew DataRelation
_(miRelacion,...) - Permite navegación por relaciones
- RelationsCollection contiene todas las
DataRelations - Se accede a través de la propiedad Relations del
DataSet
18System.Data - DataRelation 2/2
- Como crear un DataRelation
- Obtener los objetos DataColumn a relacionar
- Crear y nombrar un DataRelation usando las
columnas - Agregar la relación al DataSet
// Obtener las columnas a utilizar...DataColumn
colPadre, colHija colPadre DataSet.Tables"Clien
tes".Columns"ID"colHija DataSet.TablesPed
idos.Columns"IDCliente" // Crear el
DataRelation llamado CliPedidos...
DataRelation dr dr New DataRelation(CliPedid
os", colPadre,
colHija) // Agregar la relación al DataSet...
ds.Relations.Add( dr )
19System.Data - DataSet y XML
- El DataSet puede leer y escribir XML desde sus
datos y del esquema - O sea es posible crear o modificar un DataSet
usando XML - Método de lectura con formato XML
- GetXml Obtiene los datos del DataSet (incluyendo
el esquema) - GetXmlSchema obtiene el esquema XSD del DataSet
- Para escribir WriteXml, WriteXmlSchema
20System.Data - DataView
- Crea múltiples vistas de los objetos DataTable
- Vinculable a controles
- Propiedades importantes
- Item Obtiene una fila de una tabla determinada
- Table Obtiene o asigna el objeto DataTable
- Sort Obtiene o asigna la/s columna/s y el
ordenamiento - RowFilter Obtiene o asigna la expresión para
filtrar la vista - RowStateFilter Indica o asigna el estado del
filtro - None, Unchanged, New, Deleted, ModifiedCurrent, y
otros
21System.Data - DataView
DataView vista1 new DataView( miTabla
) DataView vista2 new DataView( miTabla ) //
La vista ordenada por Apellido vista1.Sort
Apellido ASC // Filtrar para ver sólo los
modificados vista2.RowStateFilter
DataViewRowState.ModifiedOriginal // Vincular
a un control de usuario... DataGrid myGrid
new DataGrid() myGrid.SetDataBinding( view1,
Clientes) //...
22DataSet, DataRelation, DataViews
23ADO.NET y Proveedores Administrados
- Una colección de clases que permiten acceder a
los orígenes de datos - Microsoft SQL Server 2000, SQL Server 7, y MSDE
- Otros proveedores OLEDB
- Por ejemplo Oracle
- Establece la conexión entre los DataSets y el
repositorio de los datos - Dos proveedores base
- OLEDB Namespace System.Data.OleDb
- SQL Server Namespace System.Data.Sql
24Proveedores administrados
- Dependen deSystem.Data.InternalDataCollectionBase
para varias clases heredadas
25OleDbConnection y SqlConnection
- Representa una única sesión con un origen de
datos - Exponen funcionalidad de transacciones
- Ejemplo de Conexión OleDbConnection
String conStr"ProviderMicrosoft.Jet.OLEDB.4.0"
"Data SourceNWIND_RW.MDB"OleDbC
onnection aConn new OleDbConnection(conStr)aCo
nn.Open()// Execute Queries using
OleDbDataSetCommand ClassaConn.Close()
26OleDbDataAdapter 1/2
- Es un Puente entre el DataSet y el origen de
datos - Hereda de la clase DataAdapter
- Es el mecanismo para actualizar un DataSet hacia
su origen
27OleDbDataAdapter 2/2
- Propiedades de Interés
- Objetos OleDbCommand que contienen los
procedimientos (o sentencias SQL), para las
distintas acciones - DeleteCommand
- InsertCommand
- SelectCommand
- UpdateCommand
- TableMappings Definen las relaciones de los
DataTable obtenidos por los comandos OleDb de
Select - Hereda métodos de la clase DbDataAdapter
- public virtual int Fill( DataSet dataSet )
- public virtual int Update( DataSet dataSet )
28OleDbCommand
- Representa una consulta a ejecutar en la base de
datos - Propiedades
- Connection Conexión utilizada (Objeto
OleDbConnection) - CommandText Sentencia a ejecutar
- CommandType Tipo de sentencia asignada
- Texto, Procedimiento Almacenado, o Nombre de la
tabla - CommandTimeout Cantidad de segundos para que se
considere fuera de tiempo la ejecución de una
sentencia
29OleDbDataReader 1/2
- Permite acceso secuencial, de sólo lectura
- Modelo de programación más liviano
- Con menor sobrecarga que el OleDbDataAdapter
- Se obtiene por el método ExecuteReader de un
OleDbCommand - Depende del OleDbCommand hasta finalizar la
lectura - Mantiene la conexión abierta
30OleDbDataReader 2/2
- Propiedades Importantes
- FieldCount Cantidad de Columnas del conjunto de
datos - IsClosed Indica el estado del Conjunto de datos
- RecordsAffected La cuenta de registros obtenidos
- Métodos para obtener Datos
- Por tipo de dato e índice de la columna
GetString, GetInt32, etc. - Read Desplaza al siguiente registro
31Resumen
- ADO.NET es la evolución de ADO
- Es desconectado, para acompañar el modelo basado
en Web - Muy flexible para trabajar con Datos
- Aumenta las capacidades de organizar lógicamente
los datos - Amplio soporte para XML
- Lo que permite mayores habilidades para trabajar
y compartir datos - Interactúa con una gran variedad de orígenes
32Migrando ASP a ASP.NET
33ASP (Lo Bueno)
- Tecnología líder en desarrollo para Web
- Más de un millón de desarrolladores en ASP
- Desarrollo simple
- HTML combinado con script
- No requiere compilación sólo grabar
- Flexible y extensible
- Soporta múltiples lenguajes
- VBScript, JScript, etc.
- Puede utilizar Objetos COM para acceder a
recursos y encapsular lógica de negocios
34ASP (Desventajas)
- El código ASP se vuelve complicado!
- Código mezclado con contenido
- Sólo soporta lenguajes de scripting
- La implementación de componentes y la
configuración es compleja - DLLs bloqueadas, regsvr32, metabase de IIS
- Estado de Session limitado a un único servidor
35Presentamos ASP.NET
- Plataforma para construir, implementar y ejecutar
aplicaciones Web - Es un cambio radical con respecto a ASP
- Modelo de páginas simplificado y más poderoso
- Lenguaje de programación compilado
- Arquitectura factorizada
- Implementación simplificada
- Mejoras en rendimiento y escalabilidad
- Soporte de desarrollo con Visual Studio .NET
36Compatibilidad con ASP
- Migrar aplicaciones de ASP a ASP.NET siempre va a
requerir cierto trabajo - Se decidió romper la backward compatibility en
ciertos puntos para mejorar la plataforma - Tenemos más tiempo por delante en Internet que
por detrás - Nos permite asegurar una plataforma por mucho más
tiempo
37ASP Soporte conjunto
- ASP.NET corre side-by-side con ASP
- Extensiones de archivo separadas (.aspx vs .asp)
- Configuraciones separadas
- Las páginas/aplicaciones ASP siguen utilizando el
motor de ASP existente sin problemas - No se han hecho cambios a ASP.DLL
- Ningún componente se rompe al instalar ASP.NET
- Importante no se comparte estado entre
páginas/aplicaciones ASP y ASP.NET
38Cambios semánticos
- Hay varios cambios semánticos en ASP.NET
- Tópicos
- Lenguaje único en cada página
- Las funciones deben declararse en bloques ltscript
runatservergt
39Lenguaje único en cada página
- ASP permitía tener múltiples lenguajes en una
misma página - ASP.NET sólo soporta un único lenguaje por página
- Se puede tener varias páginas, cada una con un
lenguaje diferente
40Controles y Eventos en el Servidor
- Server Controls
- Web Forms Controls
- HTML Server Controls
- Eventos en el Servidor
41Componentes COM
- Los componentes COM legacy continúan
funcionando normalmente - Invocar Server.CreateObject(progid) y
accederlos late-bound - Los componentes COM legacy también pueden ser
accedidos early-bound creando wrappers - Mejora el rendimiento en la invocación
- Utilizar TLBIMP.exe
42Resumen
- La migración de aplicaciones ASP a ASP.NET no es
directa - Requiere cierto trabajo
- Pero se pueden ejecutar aplicaciones ASP y
ASP.NET al mismo tiempo - Los beneficios de migrar a ASP.NET valen la pena
el esfuerzo - Mejor performance
- Desarrollo más simple
- Mejor código
43Para mayor información
- Sitio MSDNwww.microsoft.com/argentina/msdn
- Sitio MUG
- www.mug.org.ar
- Regístrese al Newsletter MSDN Flash
msdn.microsoft.com/flash - www.microsoft.com/latam/msdn/flash
- Email
- argmsdn_at_microsoft.com
44Preguntas?
45Material entregado CD1 Web Matrix y .NET
Framework CD 2 Windows Server.NET
RC1 Formulario de evaluación Ahora el show
(sorteos y promociones)
46Muchas gracias por su participación
Daniel Laco danielL_at_vemn.com.ar Carlos
Walzer carlosw_at_vemn.com.ar