desarrollo de aplicaciones en.net daniel laco [email protected] carlos walzer [email protected]

46
Desarrollo de Aplicaciones en .NET Daniel Laco [email protected] Carlos Walzer [email protected]

Upload: dominga-godines

Post on 03-Feb-2015

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Desarrollo de Aplicacionesen .NET

Daniel [email protected]

Carlos [email protected]

Page 2: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Temario

• 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

Page 3: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

ADO.NET

Page 4: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Objetivos

• Introducir Microsoft® ADO.NET• Mostrar la evolución de ADO a

ADO.NET• Introducir los componentes

primarios de ADO.NET

Page 5: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

ADO 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)

Page 6: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

ADO 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”

Page 7: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Beneficios 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

Page 8: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Conceptos 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

Page 9: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

El modelo de objetos de ADO.NET

• DataSet

• Proveedores administrados

Page 10: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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

Page 11: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.Data 2/2

Persistencia en memoria de la tabla de la base de datos

System.Data

DataTable

DataRow

DataRelation

DataColumn

DataSetView

DataSet

Contiene las clases “principales” de ADO.NET

Persistencia en memoria de los datos

Permite manipular una fila en un DataTable

Permite definir columnas en un DataTable

Puede relacionar 2 DataTables entre sí

Presenta una vista del DataSet

Page 12: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.Data y DataSet

DataSet Tables

DataTable

Relations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

Page 13: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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

Page 14: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.Data - DataSet 2/3

• Se usan colecciones para agregar Tablas y relaciones

• Propiedades importantes:– Tables:

Devuelve la colección de objetos DataTable– Relations:

Devuelve la colección de DataRelations– Relacionadas con XML

Page 15: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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

Page 16: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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ícitamenteDataColumn 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 DataSetds.Tables.Add( dt );

Page 17: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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 dr=new DataRelation _(“miRelacion”,...)

• Permite navegación por relaciones• RelationsCollection contiene todas las

DataRelations– Se accede a través de la propiedad Relations del DataSet

Page 18: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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["Clientes"].Columns["ID"];colHija = DataSet.Tables[“Pedidos“].Columns["IDCliente"];

// Crear el DataRelation llamado “CliPedidos”... DataRelation dr; dr = New DataRelation(“CliPedidos", colPadre, colHija); // Agregar la relación al DataSet... ds.Relations.Add( dr );

Page 19: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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

Page 20: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.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

Page 21: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

System.Data - DataView

DataView vista1 = new DataView( miTabla );DataView vista2 = new DataView( miTabla );

// La vista ordenada por Apellidovista1.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”);

//...

• Creando objetos DataView

Page 22: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

DataSet, DataRelation, Data…Views

DataSet Tables

DataTable

Relations

DataRelation

DataRelation

DataRow(s)

DataColumn

Constraint(s)

DataTable

DataTable

DataView

Page 23: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

ADO.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

Page 24: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Proveedores administrados

System.Data

.OleDb.Sql

OleDbCommandOleDbConnectionOleDbDataReaderOleDbDataSetCommand

SqlCommandSqlConnectionSqlDataReader

SqlDataSetCommand

• Dependen deSystem.Data.InternalDataCollectionBase para varias clases heredadas

Page 25: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

OleDbConnection y SqlConnection

• Representa una única sesión con un origen de datos

• Exponen funcionalidad de transacciones• Ejemplo de Conexión OleDbConnection:

String conStr="Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=NWIND_RW.MDB";OleDbConnection aConn = new OleDbConnection(conStr);aConn.Open();// Execute Queries using OleDbDataSetCommand ClassaConn.Close();

Page 26: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

OleDbDataAdapter 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

Basede

DatosDataSetDataAdapter

Page 27: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

OleDbDataAdapter 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 );

Page 28: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

OleDbCommand • 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

Page 29: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

OleDbDataReader 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

Page 30: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

OleDbDataReader 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

Page 31: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Resumen

• 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

Page 32: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Migrando ASP a

ASP.NET

Page 33: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

ASP (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

Page 34: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

ASP (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

Page 35: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Presentamos 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

Page 36: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Compatibilidad 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

Page 37: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

ASP: 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

Page 38: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Cambios semánticos

• Hay varios cambios semánticos en ASP.NET

• Tópicos:– Lenguaje único en cada página – Las funciones deben declararse en bloques <script

runat=server>

Page 39: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Lenguaje ú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

Page 40: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Controles y Eventos en el Servidor

• Server Controls– Web Forms Controls– HTML Server Controls

• Eventos en el Servidor

Page 41: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Componentes 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

Page 42: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Resumen

• 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

Page 43: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Para mayor información…

• Sitio MSDNwww.microsoft.com/argentina/msdn

• Sitio MUGwww.mug.org.ar

• Regístrese al Newsletter MSDN Flash msdn.microsoft.com/flashwww.microsoft.com/latam/msdn/flash

[email protected]

Page 44: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

¿Preguntas?¿Preguntas?

Page 45: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Material entregado: CD1: Web Matrix y .NET Framework CD 2: Windows Server.NET RC1

Formulario de evaluación

Ahora… el show (sorteos y promociones)

Page 46: Desarrollo de Aplicaciones en.NET Daniel Laco danielL@vemn.com.ar Carlos Walzer carlosw@vemn.com.ar

Muchas gracias Muchas gracias

por su participaciónpor su participación

Daniel [email protected]

Carlos [email protected]