ShouthwestFox
Inicio

PreConferencia

Encuentros

Vie 14 Mañana

KeyNote

Vie 14 Tarde

Drew Speedie

Sáb 15 Mañana

Sáb 15 Tarde

Dom 15 Mañana

Galerías

... a Conferencias

 
Anuncios






 
© PortalFox

Southwest Fox 2005

Sábado 15 de Octubre - Jornada de la mañana

PorAmby


Temas:

Creando aplicaciones N-Capas con Visual FoxPro por Toni Feltman

Usos interesantes para los ReportListeners por Doug Hennig

¿Cómo crear interfaces de usuario basadas en web con ASP.NET para aplicaciones VFP? por Cathi Gero

Después del día que disfrutamos ayer, agotador; pero, sin dudas, muy emocionante, nos encaminamos a la Universidad Estatal de Arizona con la ilusión de aprender cosas nuevas y pasar un día repleto de emociones. Para hoy en la mañana, tengo previsto aprender con Toni Feltman aspectos de la programación n Capas, luego, no pienso perderme detalle de las  aplicaciones interesantes que le ha encontrado Doug Hennig a los reportlisteners y para finalizar la sesión de la mañana voy a escuchar, de Cathi Gero, cómo combinar VFP y .NET, creando interfaces de usuario con ASP.NET para las aplicaciones VFP. Suena bien, tópicos diferentes, todos de actualidad, apuro mi café del desayuno que comparto esta vez con Doug Hennig  y ... empezamos.

Coincido con Esparta en la sesión Creando aplicaciones N-Capas con Visual FoxPro (Building N-Tier Applications with Visual FoxPro) que nos imparte Toni Feltman. La forma más sencilla en que se puede explicar un desarrollo n Capas sería diciendo que es la separación de varias porciones de la aplicación en capas separadas. Es decir, el código de nuestra aplicación está separado según su funcionalidad. Esto lo podemos ver a través del esquema:

Para lograr este desarrollo bastaría trabajar con VFP, aunque, desde luego el empleo de COM, COM+, DCOM, etc también se basa en esta metodología de trabajo. Toni Feltman introduce el tema de la funcionalidad de cada capa y nos lleva a lo que ella llama un enfoque más actual, en el que el esquema queda de la siguiente forma:

Vemos como, en realidad la interfaz de usuario es un Requester - un solicitante, que hace peticiones. Cuando ocurre una petición desde el Requester (UI) pasa al Broker (COM, Servicio Web, Capa de Negocio de la aplicación), que se encarga de "negociar las reglas", verifica quien hizo la petición, si cumple los requerimientos establecidos y decide si todo está en orden para entonces, pasarlo a la capa datos. Luego, los datos enviados por el Provider (VFP, SQL Server, XML)- Suministrador, son devueltos al Solicitante.  El Suministrador es quien se encarga de procesar los datos a recibir y devolver la información que tiene almacenada.

Vamos a los ejemplos. Como esta sesión la podremos traducir, todos los ejemplos serán distribuidos. Los ejemplos están muy comentados y nos van a servir para reproducir una situación específica, aplicando n Capas. La idea es mostrar como se ejecuta una aplicación separada en capas lógicas. Tony Feltman se ha concentrado en la capa de negocios. Muestra como el objeto de negocio realiza el llamado a la capa de datos, estableciendo la conexión y realizando las peticiones de datos. Por su parte, la capa cliente (UI - Requester) tiene dos propiedades que indican a qué Broker va a realizar su petición. Vemos tres posibilidades, desde VFP con 3 capas,  luego, la capa de negocio controlada por un COM (esto, para Interoperabilidad con .NET, por ejemplo)  y luego, pues cambia el COM por un Web Service. Los cambios en programación son mínimos. Muestra la diferencia que hay entre los botones de comandos New y Save, mientras New deja que se introduzcan los datos que actualizan un cursor en local, el botón Save es que actualiza los datos en la DBC y por tanto, es el encargado de interactuar con esa capa.

Como ventajas de trabajar con n capas podemos ver:

  • Aumenta la reutilización de los componentes. El ejemplo más común es que la interfaz de usuario VFP tenga que ser sustituida por una interfaz ASP.NET, en este caso, el resto de los componentes se pueden quedar tal y como están.
  • Las aplicaciones pueden responder mejor a los cambios. Al cambiar la tabla de VFP, por una vista, o una vista remota u otro origen de datos, no habría que cambiar toda la aplicación, se trata del acceso a aquel origen, luego las reglas y la interfaz se mantienen.
  • Admite que las reglas de negocio y los datos vengan de otras aplicaciones. A través de interoperabilidad con .NET podemos consumir objetos creados en aplicaciones ajenas y escritas en lenguaje ajeno.
  • Mucho más sencillas de mantener. El cambio en una capa no implica cambios en todas.
  • Requiere mucho esfuerzo en el diseño. No se trata de crear formularios y soltar controles que tienen una programación determinada. Se trata de crear objetos con funcionalidades y que se reutilizan en formularios y otros contenedores. El diseño es fundamental.
  • Separar la interfaz de la implementación. Los datos y la interfaz han de estar separados.
  • Escalabilidad. Cuando llega el momento de migrar a un COM o Servicio Web para trabajar con la misma aplicación en condiciones diferentes, los cambios serán mínimos, sólo si se diseñó y desarrolló una aplicación n Capas.

Entre las desventajas que existen al aplicar n Capas podemos citar: requiere un gran esfuerzo y mayor tiempo al diseño, los modelos de objetos son más complejos, la curva de aprendizaje es mayor, requiere una disciplina estricta y es más difícil para depurar.

Para concluir, Tony Feltman comenta que todas las desventajas que se han visto son para el desarrollador, por tanto es el desarrollador el que decide aplicar o no este método, que ella considera es el más acertado desde cualquier punto de vista, sobre todo si se mira a más largo plazo..

Al finalizar la exposición se desarrolló un debate bien interesante, al analizar las formas más acertadas para el pase de los datos, cuando no se trata de un registro, sino de un grupo de ellos. Se comentó que en la forma de trabajar uno de los ejemplo, la capa de negocio que se presentó simulaba un CursorAdapter y en efecto, fue así. Uno de los participantes era Esparta Palma, quien mostraba sus experiencias y las dificultades que había encontrado al implementar las diferentes soluciones. Acordaron intercambiar mensajes para entre los dos, dar la solución más acertada. Gracias Tony, estuvo muy interesante.

Volvemos al salón, en los escasos 15 minutos, (que casi nunca lo son, como ahora que la charla con Toni nos tomó casi todo el tiempo), tenemos el tiempo justo de tomar un poco de agua, un café y de nuevo a clase, a disfrutar de la sabiduría de Doug Hennig, que como siempre, estará genial. Las presentaciones de Doug Henning y Steven Black, así como el Keynote de esta Conferencia fueron grabados, no se si serán distribuidos y tampoco se si fueron grabadas otras sesiones.

Pues ... adelante, vamos a ver Usos interesantes para los ReportListeners (Cool Uses for ReportListeners) por Doug Hennig

Doug Hennig recuerda que antes de VFP 9.0 el motor de informes de VFP era monolítico y que esto felizmente cambió en VFP 9.0. Los aportes fundamentales nos llegan de la nueva clase ReportListener y algunas de sus subclase: HTMLListener y XMLlistener. Así como una nueva aplicación XBase ReportPreview.APP.

La sesión de hoy no va a explicar estas clases, Doug Hennig recomienda revisar documentos que ya detallan estos temas. Estos artículos se pueden leer, traducidos al español, y publicados en los siguientes enlaces:

Extender los informes en VFP 9.0 en tiempo de diseño (Parte 1/2) (Doug Hennig) Traducción
http://www.portalfox.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=55 

Extender los informes en VFP 9.0 en tiempo de diseño (Parte 2/2) (Doug Hennig) Traducción
http://www.portalfox.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=56 

Extender los informes en VFP 9.0 en tiempo de ejecución (Parte 1/3) (Doug Hennig) Traducción
http://www.portalfox.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=64 

Extender los informes en VFP 9.0 en tiempo de ejecución (Parte 2/3) (Doug Hennig) Traducción
http://www.portalfox.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=65 

Extender los informes en VFP 9.0 en tiempo de ejecución (Parte 3/3) (Doug Hennig) Traducción
http://www.portalfox.com/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=66

El Generador de informes de VFP 9.0 en acción Parte 1 (Cathy Pountney) Traducción
http://www.panoramabox.com/GoPub.aspx?IdObj=3337 

El Generador de informes de VFP 9.0 en acción Parte 2 (Cathy Pountney) Traducción
http://www.panoramabox.com/GoPub.aspx?IdObj=3338 

El Generador de informes de VFP 9.0 en acción Parte 3 (Cathy Pountney) Traducción
http://www.portalfox.com/article.php?sid=1656 

Lo nuevo del Generador de Informes en VFP 9.0 - Parte 1 (Cathy Pountney) Traducción
http://www.portalfox.com/article.php?sid=1269 

Lo nuevo del Generador de Informes en VFP 9.0 - Parte 2 (Cathy Pountney) Traducción
http://www.portalfox.com/article.php?sid=1270 

Pasamos directamente a los ejemplos.

1.- Enlazar informes con hiperenlaces.

Este tema fue descrito íntegramente por Doug Hennig en un artículo que ya tenemos traducido en: "Emplear Hiperenlaces en informes"  http://www.portalfox.com/modules.php?op=modload &name=Sections &file=index &req=viewarticle &artid=74 
En resumen se trata de emplear la clase HTMLListener, la que a su vez es una subclase de XMLDisplayListener, que es subclase de XMLListener, la que como sabemos, es subclase de ReportListener. Al indicar que se genere un tipo de fichero HTML, se genera un XML que aplica un XSL para transformar el XML en HTML.  El XSL agrega una etiqueta al HTML, lo que significa que el formato HTML admite hiperenlaces. Y no es un juego de palabras, es una nueva y muy valiosa funcionalidad. Veamos en la figura siguiente los enlaces "vivos"

En este segundo ejemplo vemos como se pueden encadenar informes a partir del empleo de hiperenlaces. Al seleccionar un usuario determinado se muestran sus datos

Doug Hennig mostró otro ejemplo que emplea también hiperenlaces. En este caso, trabajó a partir del Panel Navegador creado por Favio Vázquez y que se puede descargar de http://ReportListener.com. En este caso, se muestra en el panel de la izquierda las imágenes de las páginas (las imágenes también se generan a partir del ReportListener con tipo de salida de formato GIF) y a la derecha se muestra la vista previa de la página seleccionada.

Ahora vemos otro uso, que al menos para mí, ha sido totalmente nuevo. Menos mal que podremos traducir y ver con calma todos los ejemplos. No me canso de agradecer a los que nos autorizan con tanta generosidad.

Doug Hennig ha creado un DBFListener como subclase de _ReportListener con ListenerType = 3, para que en realidad no se produzca salida alguna. En su lugar, se crea una tabla que va a contener el informe generado, es decir, cada objeto, tipo de objeto, en qué página aparecen y cuales son sus propiedades. Entonces, aunque aparentemente no ha ocurrido nada, ahora contamos con un cursor que tiene toda la información y es un cursor, por lo que admite todo tipo de búsquedas y otras funcionalidades propias de un cursor. A partir de esto, y controlando los eventos que se realizan sobre los objetos, el autor creó una nueva subclase SFReportShape que permite tener información de cuando se ha realizado un evento, por ejemplo Clic, sobre un objeto de informe. Ahora se puede buscar texto, resaltar texto, en fin ... menos y menos limitaciones. También mostró un ejemplo con GDI+ para gráficos ... Excelente !!!!

¿Qué les parece? En inglés se diría "Amazing " y en español diríamos, en dos palabras "Im - presionante" :) Yo me pregunto ¿hasta dónde se puede llegar? ... Según Doug Hennig con estas posibilidades no podíamos ni soñar antes. Y claro que no, en realidad ReportListener ha sido una verdadera joya que adquirió VFP en su versión 9.0.

Salgo de esta sesión muy contenta, porque las aplicaciones en VFP son cada vez más potentes y ofrecen cada vez más posibilidades que no tienen nada que envidiar a otras tecnologías. Aquí no se ha hablado de OCXs que hay que registrar, ni de productos de terceros, es VFP puro y duro. ¡Muchísimas gracias Doug Hennig! Al primer chance que haya, traduciremos estos trabajos.

Antes de disfrutar de la tercera charla de esta mañana, me paso por el salón y me encuentro con Milind Lele del FoxTeam. Fue un placer conversar con el. Milind Lele lleva muy poco tiempo en el FoxTeam, y se ha sorprendido mucho con este evento, por la fraternidad  que existe en la Comunidad de desarrolladores y la pasión que se siente por el VFP. Viene de otras tecnologías de Microsoft y confiesa que lo vivido en estos días, lo estimula mucho en su trabajo dentro del MS FoxTeam. Nos hacemos una foto para el recuerdo y me despido, muy a mi pesar... ya me gustaría seguir charlando; pero no podemos estar en dos lugares a la vez y en estos eventos, aunque todo es enriquecedor, "el pollo del arroz con pollo", como decimos en mi tierra, son las sesiones. Las charlas las podemos dejar para los raticos como este que van quedando ¿libres?

Ahora vamos a ver ¿Cómo crear interfaces de usuario basadas en web con ASP.NET para aplicaciones VFP? (How to Build  Web-based UI for VFP Applications) por  Cathi Gero

Más que cualquier cosa que se pudiera resumir de esta sesión, aconsejo que revisen el excelente artículo de Cathy Gero titulado "Using ASP.NET in Visual Studio .NET with Visual FoxPro 7.0" que se encuentra en: http://msdn.microsoft.com/library/en-us/dnfoxgen7/html/usingaspnetwithvfp7.asp

Esta sesión no tiene un artículo escrito que podamos traducir, con lo que si contamos es con los ejemplos a libre descarga desde http://www.prenia.com/Downloads.htm bajo el título "Visual FoxPro and .NET Working Together". 

Cathy Gero realiza una introducción  en la que comenta la importancia de desarrollar aplicaciones cuya Interfaz de usuario se encuentre disponible en Internet. Recuerda los inicios de ASP, sus ventajas y desventajas. En todo momento realiza las comparaciones posibles entre el desarrollo con ASP.NET y con VFP.

Luego, pasa a hablar sobre ASP.NET, que es sin dudas un salto cualitativamente superior, permite crear formularios Web y Servicios Web. ASP.NET utiliza lenguajes de programación totalmente orientados a objeto (C# y VB.NET), crea código compilado y lo guarda en el servidor. Su arquitectura es similar a la de formularios Windows.

Entre ASP y ASP.NET hay muchas diferencias en cuanto a rendimiento, escalabilidad, seguridad, infraestructura para Servicios Web XML, entre otras.

Una aplicación Web Form incluye:

  • Páginas Web
  • Archivos de configuración
  • Archivos de código (objetos de negocios, imágenes y referencias externas a ensambladores .NET)

Consta de dos partes: una representación visible de los controles y un archivo de código que se encuentra detrás. El código puede estar escrito en VB.NET, generando entonces un archivo extensión VB o escrito en C#, que genera un archivo extensión cs. De esta forma .NET permite dividir la interfaz del código. La interfaz admite el trabajo con controles tipo: HTML, HTML Server y Web Form. Aquí comenta la diferencia en cuanto a la configuración de los controles, como puede ser el caso del grid de VFP y en ASP.NET. Cathy Gero explica cómo se desarrollan los eventos. En este aspecto lo más curioso para mí fue la diferencia que hay con VFP. Resulta que no se cumple la secuencia LISAG, sino que en .NET primero se ejecuta el evento Init y luego el Load.

En esta sesión se ejemplifican controles de cada tipo y se trabaja desde el .NET framework en la creación de varios ejemplos de aplicaciones empleando ASP.NET. En el sitio Web de Cathy Gero se pueden encontrar gran cantidad de artículos sobre el trabajo con ASP.NET desde la base.

También se explica que los archivos de configuración utilizados por ASP.NET permiten que los ficheros sean modificados sin tener que parar y restaurar el servidor y permiten guardar la configuración sobre el lenguaje, los errores, la depuración, etc. Así tenemos:

  • Machine.config - Guarda la configuración predeterminada para el Servidor Web
  • Web.config - Brinda los parámetros para una aplicación Web en concreto.

Para finalizar recomienda visitar http://www.asp.net/default.aspx?tabindex=6&tabid=44

Acaba el tiempo, ha sido más una sesión de .NET, que una sesión de VFP. Pero de eso se trataba, de ver cómo podemos crear interfaces en .NET que nos permitan aplicar reglas de negocio creadas y programadas en VFP. Vale la pena, y mucho, aprender a combinar estas herramientas, para emplearlas cuando sea necesario. Tal es así que un grupo de personas se han quedado para aclarar dudas y pedir opiniones a la experta.

Antes de irme, le pido a Cathy que me dedique su libro ".NET for VFP Developers", accede  (en la foto firmando) y escribe: "Espero que encuentres útil este libro", ¡ Ya lo creo! Desde enero lo vengo consultando y me ha sacado de más de un apuro. Nos hacemos otra foto para el recuerdo.

Vamos a comer, a ver qué tal hoy, no se si habrá tiempo libre o algún otro encuentro como el de ayer ...Esparta me cuenta que estuvo en las sesiones "Modeling Hierarchies" de Marcia Akins y "Accessing and sharing data with .NET Web Services" por Rick Strahl, dos gurús de primer nivel y dos sesiones muy interesantes.

Nos vemos en la próxima entrega, Reporte de la Conferencia Southwest Fox 2005  - Día 15 de Octubre Jornada de la tarde.

Saludos,

Ana
www.amby.net

 


Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2007 PortalFox. Todos los derechos reservados.