Desarrollo de Aplicaciones en .NET
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 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
Nuevas posibilidades en .NET ADO.NET: DataSet DataSet Tables DataTable Relations DataRelation DataRow(s) DataColumn Constraint(s) DataView
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
Nuevas posibilidades en .NET ADO.NET: DataAdapter Base de datos DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand 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
¿Preguntas?
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
Demo 5: Mostrar el código y probar 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: Accion Nombre Agregar <NombreTabla>_A Modificar <NombreTabla>_M Eliminar <NombreTabla>_E TraerUno <NombreTabla>_T TraerParaEditar <NombreTabla>_TABM TraerFiltrado <NombreTabla>_TX<Filtro> TraerTodos <NombreTabla>_TT TraerParaCombo <NombreTabla>_TL TraerValor <NombreTabla>_TV<Parametro> 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
Demo 6: Mostrar SP’s, el código de las reglas y probarlas 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
Demo 7: Mostrar y probar Pedidos 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
Desarrollo de una Aplicación .NET Publicando un Web Service Exponemos DatosDePedido como Web service De esta forma nuestros clientes desde una Aplicación Remota podrían ver los datos de sus pedidos Demo 8: Exponer el método como WebService y armar el cliente
¿Preguntas? Muchas Gracias !!! El ejemplo ya está en línea en: www.microsoft.com/latam/msdn/comunidad/uni.net/default.asp
Para mayor información… Sitio MSDN www.microsoft.com/argentina/msdn Capacitación www.microsoft.com/argentina/msdn/capacitacion/ Sitio MUG www.mug.org.ar Regístrese al Newsletter MSDN Flash www.microsoft.com/latam/msdn/flash Email argmsdn@microsoft.com