En este documento enumeramos los temas básicos para un curso intensivo y configurable de programación con ADO.NET y C#. El núcleo básico ha sido diseñado para ser cubierto en una semana, en sesiones de cinco o seis horas. Como extensión, se puede añadir una sesión más, para tratar los servicios Webs en aplicaciones distribuidas, o dos sesiones, para tratar también .NET Remoting y los servicios de COM+.
El seguimiento del curso puede hacerse mediante Visual C# Standard 2003 (recomendado), o C# Builder Personal. El servidor SQL recomendado es SQL Server o el MSDE gratuito, pero pueden utilizarse también Oracle e InterBase, o más en general, cualquier otro sistema que tenga un proveedor para OLE DB.
La parte básica del curso es la agrupada bajo ADO.NET. De esta parte, poco se puede quitar sin afectar la coherencia. La duración de esta parte básica está estimada en unas 24/25 horas (cuatro sesiones de seis horas, o cinco sesiones de cinco horas). El curso puede extenderse para incluir los temas de programación remota. Esta otra parte puede llevar unas 10 horas, en dos sesiones, pero puede reducirse a una sesión de cinco horas, si se reduce a tratar con Web Services.
Existe también la posibilidad de empezar directamente con la programación de Web Services y .NET Remoting, aunque en ese caso es evidente que los ejemplos no utilizarían conjuntos de datos (a no ser que los asistentes ya estén familiarizados con ADO.NET).
No cabe duda de que, mientras más conocimiento se tengan sobre el lenguaje (C#), más fácil se hace asimilar estos otros temas. De todos modos, la experiencia enseña que los detalles sobre el lenguaje pueden asimilarse perfectamente sobre la marcha, sobre todo cuando se trata de programadores experimentados.
Este curso pretende también responder a algunas preguntas muy frecuentes, y aclarar las expectativas para proyectos altamente escalables, estructurados en capas. Por ejemplo, ¿qué hay de bueno o malo en la creación de clases de persistencia? Muchas empresas, sobre todo basadas en Java, comienzan una aplicación definiendo clases como Cliente, Pedido, Producto... ¿Tiene alguna utilidad este enfoque? ¿Acelera o hace más difícil el desarrollo? Las aplicaciones para bases de datos modernas definen, como interfaz del servidor remoto, clases tipo "processor", que tradicionalmente han sido tabú para los programadores puristas. ¿Por qué se sigue esta metodología? ¿Qué relación guarda con el concepto stateless?
Si está interesado en estos cursos, llámenos al 91 632 0045, o escriba un mensaje a nuestro Departamento Comercial. Estos cursos suelen desarrollarse en las instalaciones de la empresa contratante, y su coste se calcula por horas, independientemente del número de asistentes, hasta un máximo de ocho personas.
La clase DataSet implementa una colección de tablas en memoria, incluyendo las relaciones entre ellas y las restricciones comunes del modelo relacional. Es la base de ADO.NET, porque la navegación bidireccional, y las actualizaciones interactivas sobre registros se implementan sobre estas pequeñas bases de datos en memoria. En esta parte se expone el modelo de objetos básicos: tablas, columnas, filas. Se introducen las columnas calculadas, y las restricciones de claves primarias y claves únicas.
En ADO.NET, los registros de una relación maestro/detalles siempre se leen independientemente: primero todos los registros maestros, luego, todos los detalles. Esta es la forma más eficiente de lectura para estas relaciones. Una vez que están todos los registros en memoria, se establecen las relaciones entre ellos, por medio de objetos DataRelation. Se muestra cómo navegar sobre estas jerarquías, y cómo crear columnas calculadas que muestren estadísticas de filas de detalles, o referencias a otras tablas relacionadas. Se presentan las restricciones de claves externas o foráneas.
En esta parte se estudia cómo añadir, borrar o modificar registros pertenecientes a un DataSet, teniendo en cuenta la posible existencia de relaciones entre tablas. Se introduce un concepto muy importante: el estado de una fila. Y se presenta por primera vez las propiedades que permiten asociar mensajes de error a columnas particulares o filas.
Los conjuntos de datos en memoria pueden ser ordenados arbitrariamente, y filtrados mediante un lenguaje de expresiones muy potente. Presentamos los distintos métodos de búsqueda sobre tablas en memoria. También se estudia la clase DataView, que es muy útil para la presentación visual de los datos y su edición.
Este es una de las características más interesantes de ADO.NET. Podemos encapsular un determinado esquema relacional dentro de una clase derivada de DataSet. De esta manera, se reduce la posibilidad de cometer errores, y se facilitan las operaciones de búsqueda, inserción, etc. Para crear estas clases especiales, ADO.NET ofrece varias vías: podemos partir de un fragmento del esquema de una base de datos real, o podemos, con la ayuda de herramientas visuales, crear ficheros en el lenguajeXML Schema Definition. Es importante controlar el uso de anotaciones, para ajustar las opciones de generación de nombres. En esta parte se describe también cómo se puede serializar un objeto DataSet en un flujo XML, y cómo se puede hacer que este flujo se almacene o lea de ficheros, o de otros medios similares. Se estudian propiedades que modifican la representación XML de un conjunto de datos, y se presenta el formato DiffGram, sumamente útil para el desarrollo de servidores remotos.
El enlace a datos (data binding)de ADO.NET para aplicaciones interactivas escritas con Windows Forms, es la técnica más potente disponible en estos momentos. En ADO.NET podemos enlazar a una rejilla, por ejemplo, un vector de objetos, y mediante la implementación de determinadas interfaces sencillas por parte de una estructura de datos, podemos incluso editar esos registros. Naturalmente, también se presentan las opciones de enlace más comunes, a conjuntos de datos. Las clases principales que se presentan en esta parte son BindingContext, CurrencyManager y Binding, además de las rejillas, controles de edición, combos que hacen referencias a otras tablas...
A partir de este momento, se introducen las clases de la "capa conectada" de ADO.NET. Esta parte, y las que siguen, deben personalizarse de acuerdo al tipo de base de datos que se vaya a utilizar. O, para ser más exactos, del proveedor de datos .NET. Las opciones son: el cliente nativo de SQL Server (SqlConnection, SqlCommand, etc), el cliente OLE DB (OleDbConnection, etc), Oracle (OracleConnection, etc), ODBC (OdbcConnection, etc) y Borland Data Provider (BdpConnection, BdpCommand, etc). Se presentan las clases de conexión, los comandos, que permiten enviar instrucciones SQL al servidor, y los lectores de datos, que permiten manejar cursores unidireccionales de forma muy eficiente.
Los adaptadores son los objetos que permiten leer información por medio de comandos para depositarla dentro de conjuntos de datos, y posteriormente, aplicar los cambios realizados sobre el conjunto de datos en la base de datos original.
En esta parte se explican los conceptos y técnicas básicas que utiliza un adaptador para modificar la base de datos de acuerdo a las operaciones realizadas sobre un conjunto de datos. El énfasis se pone en tablas aisladas, y el manejo de la concurrencia optimista.
Esta parte es importante, porque se tratan las actualizaciones que involucran identidades, claves generadas en el servidor y relaciones maestro/detalles. También se presentan las técnicas de tratamiento de errores, y la optimización de las grabaciones mediante procedimientos almacenados. Es muy importante distinguir entre el caso más sencillo de actualizaciones en aplicaciones tradicionales cliente/servidor, y el caso más complejo en que se divide la aplicación en más capas. En este último caso, es necesario estudiar las técnicas de conciliación de las grabaciones.
La forma más sencilla de programación remota en .NET es mediante el uso de servicios Web basados en XML. Se explican los conceptos necesarios sobre XML y SOAP, y los distintos modelos de llamadas implementados por este protocolo. Se muestran ejemplos, tanto de servidores como de clientes, y se dan más detalles sobre la serialización de objetos, y cómo controlarla. También se explica cómo realizar llamadas asíncronas a un servicio Web.
La técnica más eficiente de comunicación remota orientada a objetos en .NET, es el remoting. Se puede escoger con más libertad el formato de serialización y los canales de comunicación. Se presentan los distintos tipos de activación y los modelos de llamadas (singleton, single call, publicación). Al igual que con los servicios Web, se muestra cómo ejecutar llamadas asíncronas mediante el uso de delegados. Finalmente, se explican las distintas formas de alojar un servidor de .NET Remoting: como aplicaciones de servicios, publicación mediante Internet Information Services...
Una de las características más potentes de los servidores de la familia de sistemas operativos Windows, es la presencia integrada de una larga lista de servicios "corporativos", que para ser implementados en otros sistemas operativos requieren mucho trabajo, mucho dinero... o simplemente, no están disponibles. En esta parte se tratan las ventajas de ciertos servicios agrupados bajo el paraguas de COM+: transacciones declarativas, object pooling, colas de mensajes... Para ello, se explican conceptos como la intercepción de mensajes y la Programación Orientada a Aspectos, que en .NET se beneficia del potente y flexible sistema de atributos personalizables implementado por sus lenguajes.
Copyright © 2003, Ian Marteens & Intuitive Sight