SOA en la capa Web: SOFEA (Service Oriented Front End Architecture)
viernes, junio 12, 2009 at 2:10AM Hola a todos, saludos desde Chile.
Quisiera consultarles a los integrantes de la comunidad JavaHispano si han trabajado o conocen el tema de SOFEA (Service Oriented Front End Architecture) (se pronuncia Sofía) Una propuesta de arquitectura para aplicar en la capa de presentación de una aplicación. En particular puede ser aplicado a la capa web de algún sistema.
La historia es más o menos así. Hace un par de meses atrás me puse en contacto con Franco Catrin para preguntarle acerca de qué tal es la empresa donde él trabaja, y luego de algunos emails de conversación me indicó que leyera algunos artículos. Entre ellos me indicó el artículo llamado Life Above The Service Tier , un escrito del año 2007 en donde tres autores indios que trabajan en Australia para distintos bancos y empresas financieras acuñaban el término SOFEA para hacer referencia a aplicar conceptos de SOA a la capa de presentación (más específicamente a capa web) de una aplicación. En The Server Side también publicaron un post hablando acerca del tema.
En términos resumidos dentro del artículo los autores indican que la actual proliferación de frameworks para desarrollo en la capa web se debe a que cada uno de estos frameworks trata de atacar ciertos problemas comunes desde distintas perspectivas, con mayor o menor éxito. Los actuales problemas en la capa web serían:
- Mal manejo de los tipos de datos (mas bien dicho, no hay una norma de tipado de datos)
- Fuerte acoplamiento entre el flujo de navegación y el proceso de intercambio de datos (volver a la página anterior una vez que se ha hecho una petición POST vuelve a gatillar el envío de la petición)
- No existe soporte de intercambio de datos entre pares (específicamente se refiere a que el servidor no tiene la capacidad de iniciar la comunicación con el cliente)
AJAX suena aquí como una solución, claro que por sí misma sólo representa la herramienta con la cual construir la arquitectura SOFEA, no la arquitectura en sí misma.
Los autores indican que para aplicar SOFEA en la capa de presentación se deberían aplicar los siguientes pasos:
- Realizar un "Application Download" en el cliente, por ejemplo, para un navegador web sería descargar toda una aplicación hacia él. La idea de esto es manejar el flujo de navegación en el cliente.
- Realizar todo el flujo de navegación en el cliente. Cuando se necesite conversar con el servidor deberá realizarse una comunicación de datos que no involucre cambiar de página web.
- El intercambio de datos debe suceder de tal manera que el flujo de navegación sea independiente del intercambio de datos. La comunicación asíncrona con AJAX suena fuerte aquí.
Les invito a leer el artículo de los autores indios y también a revisar una breve presentación que hicieron para ver esquemáticamente la propuesta que plantean.
Copio textualmente las tecnologías que indican los autores que pueden servir para aplicar SOFEA:
So What Technologies Can We Use?
The following technologies and frameworks are available today:
DHTML/AJAX frameworks for Current Browsers
1. Handcrafted DHTML/AJAX with Third-Party JavaScript Libraries
2. Google Web Toolkit (GWT, GWT-Ext)
3. TIBCO General Interface Builder
XML Dialects for Advanced Browsers
4. XForms embedded in XHTML 2
5. Mozilla XUL
6. Microsoft SilverLight/XAML
Java-based Technologies
7. Java WebStart (Swing, SWT, Spring Rich Client)
8. JavaFX
Adobe Flash Runtime-based frameworks
9. Adobe Flex
10. OpenLazslo
The degree of fit with the SOFEA model varies, but designers play a critical role
in ensuring compliance with the model. We also need to consider factors like
performance, ease of use, etc.
Como complemento también les comento que Matt Raible, un conocido desarrollador J2EE, ha escrito en su blog algunos post acerca del tema y ha hecho un análisis junto con sus compañeros acerca de cuál tecnología existente actualmente les sirve para aplicar SOFEA en su trabajo, resultando ser GWT el mejor candidato según sus intereses.
¿Qué les parece esta forma de organizar la capa de presentación? ¿Y en particular aplicarlo a la capa Web?
No recuerdo el nombre de la persona en estos momentos, pero en los podcasts de JavaHispano he escuchado que hay un integrante que usa bastante GWT. Podría aportar con su opinión para saber qué le parece.
Eso, dejo el tema sobre la mesa para que lo conversemos, espero sus comentarios!
Saludos,
Germán González.
j2ee 
Reader Comments