540 likes | 742 Views
Desarrollo de Aplicaciones en .NET. Andrés Reynoso Jorge Pagano de Harriague. Temario. Nuevas posibilidades en .NET Diferencias entre ASP y ASP.NET Diferencias entre ADO y ADO.NET Programación 100% orientada a objetos Como integrar componentes de negocios COM en .NET
E N D
Desarrollo de Aplicaciones en .NET Andrés Reynoso Jorge Pagano de Harriague
Temario • Nuevas posibilidades en .NET • Diferencias entre ASP y ASP.NET • Diferencias entre ADO y ADO.NET • Programación 100% orientada a objetos • Como integrar componentes de negocios COM en .NET • Desarrollo de una Aplicación .NET • Ejemplo práctico de una Aplicación en 3 capas http://www.microsoft.com/latam/msdn/comunidad/uni.net/default.asp
Nuevas posibilidades en .NET • ASP • Tecnología líder en desarrollo para Web • Más de un millón de desarrolladores en ASP • Forma de Desarrollo • HTML combinado con script • No requiere compilación – “sólo grabar” • Flexible y extensible • Soporta lenguajes de scripts • VBScript, JScript®, etc. • Puede utilizar Objetos COM para acceder a recursos y encapsular lógica de negocios
Nuevas posibilidades en .NET • Desventajas de ASP • 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 Demo 1:Aplicación 3 capas (VB6 y ASP)
Nuevas posibilidades en .NET • 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
Nuevas posibilidades en .NET • 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
Nuevas posibilidades en .NET • Soporte conjunto ASP + ASP.NET • 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
Nuevas posibilidades en .NET • Ventajas de ASP.NET • Web Forms • Permiten programar las páginas Webs al estilo de los formularios de Windows • ASP.NET permite separar el código de presentación con la lógica de pagina (Code Behind) • Server Controls • Web Forms Controls • HTML Server Controls • Eventos en el Servidor • Captura en el servidor los eventos disparados por los controles que se visualizan en el cliente
Nuevas posibilidades en .NET • Ventajas de ASP.NET • Herramientas de Profiling, Tracing y Debugging • Configuración autónoma de IIS • Cache del lado del servidor • Fácil Vinculación a datos • Manejo mejorado del “estado” • Instalación XCOPY • Manejo Estructurado de Errores Demo 2:Mostrar “Code Behind” en un WebForm
Nuevas posibilidades en .NET • 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 requiere 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”
Nuevas posibilidades en .NET • Objetos ADO.NET
Nuevas posibilidades en .NET • Proveedores de Datos de .NET • 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 • 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 • Se pueden agregar otros (Por ejemplo Oracle)
Nuevas posibilidades en .NET • ADO.NET: Connection • Representa una única sesión con un origen de datos • En una conexión, usted puede… • Personalizar la conexión a la base de datos • Iniciar, comprometer y abortar transacciones • Equivalente al objeto ADODB.Connection Imports System.Data.OleDb .... Dim miCon As New OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND_RW.MDB") miCon.Open() .... miCon.Close()
Nuevas posibilidades en .NET • ADO.NET: Command • Representa un comando que se va a ejecutar • No necesariamente SQL • Con un comando ADO usted puede: • Definir un enunciado para que se ejecute en el servidor • Establecer información de parámetros para ese comando • Recuperar valores de retorno de la ejecución del comando • Corresponde al objeto ADODB.Command • Puede contener parámetros • Valores que se van a utilizar cuando se ejecute el enunciado
Nuevas posibilidades en .NET • ADO.NET: DataReader • Acceso a datos rápido, únicamente hacia adelante, únicamente de lectura • Funciona como un socket • Permite un acceso escrito de manera sólida • Se obtiene por el método ExecuteReader de un OleDbCommand • Depende del OleDbCommand hasta finalizar la lectura • Mantiene la conexión abierta
Nuevas posibilidades en .NET • ADO.NET: DataSet • Almacén en memoria para datos del cliente • Vista relacional de datos • Tablas, columnas, filas, restricciones, relaciones • Persisten los datos y el esquema como XML • Modelo desconectado explícito • Objeto remoto, desconectado • Indice en forma de arreglo • No hay conocimiento de Fuente de datos o Propiedades • Modelo común sobre datos heterogéneos • Características de rendimiento predecibles
DataSet Tables DataTable DataRow(s) DataView DataColumn Constraint(s) Relations DataRelation DataTable DataRelation DataTable Nuevas posibilidades en .NET • ADO.NET: DataSet
Nuevas posibilidades en .NET • ADO.NET: DataRelations • 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
Nuevas posibilidades en .NET • ADO.NET: DataAdapter • Administra el Intercambio de datos entre DataSet y la Fuente de datos • Llenar (DataSet o DataTable) • Actualizar (DataSet o DataTable) • Ofrece cruces de información entre tablas y columnas • El usuario puede anular los comandos: insertar / actualizar / eliminar • Componente de autogeneración disponible • Permite que un único DataSet se llene de varios orígenes de datos diferentes
SelectCommand InsertCommand UpdateCommand DeleteCommand Nuevas posibilidades en .NET Base de datos DataAdapter • ADO.NET: DataAdapter DataSet TableMappings
Nuevas posibilidades en .NET • Programación 100% orientada a objetos • Herencia • Permiten reutilizar el código • Polimorfismo (por Clases y por Interfaces) • Facilita la modelización de la realidad • Herencia entre lenguajes ! • Clases abstractas • Defienen clases que deben heredarse (MustInherit ) • Implementan código genérico, que se repite igual en varias otras • Al mismo tiempo, definen la interfaz final de ese conjunto de objetos • Puede expone métodos públicos con código, para las generalizaciones • Pueden declarar como MustOverrides los métodos que las clases que la heredan deben implementar obligatoriamente
Interoperabilidad COM • COM Interop • Permite utilizar los objetos COM existentes mientras se realiza la transición a .NET a su ritmo • Permite exponer los Objetos .NET en COM • Usando Wrappers – (RCW / CCW) • Siempre existe un marshaling • Los Variants de VB6 pasan como Object • Desde ASP.Net usando late bound con Server.CreateObject(“ProgId”) • Es necesaria la directiva AspCompat = “true” • Incluso se puede heredar desde COM ! Demo 3:Aplicación ASP.Net Accediendo a las reglas (COM / VB6). Si hay tiempo, mostrar también una aplicación windows y herencia COM
Nos vemos en un ratito… Vamos a ver un ejemplo de tres capas en .NET
Desarrollo de una Aplicación .NET • Aplicación “Pachacamac” Ya esta en línea en: http://www.microsoft.com/latam/msdn/comunidad/uni.net/default.asp
Temario • El modelo de 3 capas • La base de datos • El servicio de Datos • Las reglas (Objeto Entidad) • Heredando Entidad • Exponiendo un método como Web Service
Desarrollo de una Aplicación .NET • El modelo de 3 capas
Desarrollo de una Aplicación .NET • La Base de Datos • Es una modificación para SQL 7 o 2000 de la base Neptuno que venia en Access 97 • Se agrego a todas las tablas un campo de identificación llamado Id del tipo Integer Autonumérico (Identity) • Se modificaron las relaciones entre las tablas para usar el campo ID • Por lo tanto se modificaron los nombre de los campos que tienen relación con otra tabla • Se agregaron los Stored Procedures necesarios Demo 4:Mostrar DER de la base de datos
Desarrollo de una Aplicación .NET El servicio de datos
El Servicio de Datos • El servicio de datos • Aprender de los “mayores” • System.Data • Common • SqlServer • OleDb • Una clase genérica (gDatos) que implementa la funcionalidad común • Dejando en clases “especiales” las acciones que pueden cambiar de acuerdo al motor de la base de datos • Técnicamente hablando, una clase “abstracta”
El Servicio de Datos • Clase gDatos - Propiedades • Nombre de la base a utilizar • Nombre del servidor a utilizar • Cadena de conexión completa • Objeto Conexión
El Servicio de Datos • Clase gDatos – Métodos • Ejecuta acciones sobre la base de datos • La función está sobre escrita, para admitir, o no, argumentos para los procedimientos almacenados
El Servicio de Datos • Clase gDatos – Métodos • Devuelve un DataSet a partir del procedimiento almacenado que se le indica • Está sobrescrito, para permitir enviarle argumentos
El Servicio de Datos • Clase gDatos – Métodos • Devuelve un Objeto DataTable con las mismas condiciones que el método anterior
El Servicio de Datos • Clase gDatos – Métodos • Devuelve el valor de retorno del procedimiento almacenado
El Servicio de Datos • Clase gDatos – Métodos • Permiten administrar Transacciones
El Servicio de Datos • Clase gDatos – Métodos que deben sobreescribirse • Obligan a su definición en las clases que heredan de ésta • Están definidos por tipos de interfaz común
El Servicio de Datos • Clase DatosSQLServer • Hereda de común y “se ve obligada” a escribir los métodos forzados • Internamente conservará en memoria los procedimientos almacenados ya utilizados Inherits Curso.Datos.gDatos Shared mColComandos As New System.Collections.Hashtable()
El Servicio de Datos • Clase DatosSQLServer • Se sobrescriben cada uno de los métodos que están marcados como “MustOverrides” Public Overrides Property CadenaConexion() As String
El Servicio de Datos • Clase DatosSQLServer • Todas las acciones a la base de datos se realizan a través de Procedimientos Almacenados • Las denominaciones son: Demo 5:Mostrar el código y probar el servicio de datos.
Desarrollo de una Aplicación .NET Reglas de Negocio
Reglas de Negocio • Reglas de Negocio • Encapsular todas las acciones propias del negocio en ellas • No depender • Ni del cliente que las llama • Ni del motor de base de datos al que acceden • Definirlas con una interfaz clara y transparente • Facilitando la reutilización
Reglas de Negocio • Objeto Entidad • Es un objeto genérico que sostiene la funcionalidad básica • Tiene Propiedades que establecen el entorno • Tiene Métodos que pueden llegar a utilizarse en cualquier objeto • Establece las facilidades de sobrescribir aquellos que en casos particulares lo requieran
Reglas de Negocio • Entidad - Propiedades • Identificador del registro a utilizar • Permite establecer una identificación unívoca de un elemento de información en la tabla (Registro)
Reglas de Negocio • Entidad - Constructor Sub New(ByVal NombreEntidad As String) • Admite la asignación del nombre de la tabla a tratar, en el momento de la creación del objeto
Reglas de Negocio • Entidad – Métodos de acción comun • TraerTodos • Devuelve todos los registros de la tabla • <NombreTabla>_TT • TraerCombo • Devuelve los registros listos para cargar listas desplegables • <NombreTabla>_TL • TraerUno • Devuelve un registro, el indicado por la propiedad Id • <NombreTabla>_T
Reglas de Negocio • Entidad – Métodos de acción comun • TraerFiltrado • Devuelve un conjunto de datos, dependiendo del filtro indicado • <NombreTabla>_TX<Filtro> • Traer Valor • Retorna un valor específico • <NombreTabla>_TV<DatoaTraer> • Actualizar • Actualiza un conjunto de registros • <NombreTabla>_A • <NombreTabla>_M • <NombreTabla>_E
Reglas de Negocio • Entidad – Propiedad Datos • Expone un DataSet conteniendo toda la información necesaria para editar un registro • Registro a Editar • Tablas con resultados de TraerCombo de las tablas relacionadas • Facilita entonces implementar del lado del cliente los mecanismos de edición • <NombreTabla>_TABM
Reglas de Negocio • Stored Procedures • Deben cumplir con la estandarización mencionada para que las reglas funcionen correctamente • Se podrían generar automáticamente Demo 6:Mostrar SP’s, el código de las reglas y probarlas
Reglas de Negocio • Heredando Entidad – Clase pedidos • Hereda de Entidad • Expone además 2 métodos específicos • DatosDePedido • Devuelve un DataSet con todas las tablas implicadas en la generación de un pedido • Es la “Plantilla” para armar el pedido completo • Guardar • Es responsable de almacenar un pedido completo, usando el DataSet generado en el método anterior Demo 7:Mostrar y probar Pedidos