Capa de Presentaciónapit.wdfiles.com/local--files/start/03_apit_presentacion.pdf · – RIA....
Transcript of Capa de Presentaciónapit.wdfiles.com/local--files/start/03_apit_presentacion.pdf · – RIA....
Arquitectura de Proyectos de IT
© 2005
Arquitectura de Presentación
Gastón CocoNicolás PasseriniJorge L García
Arquitectura de Proyectos de IT2
¿Qué es Presentación?
Es lo que permite al usuario interactuar con el modelo de dominio de la aplicación (ui / gui)
Arquitectura de Proyectos de IT3
Problemas
Su lógica puede ser muy compleja, más que la de negocio a veces (muchas veces diría).
Casos de uso simples tener problemas de:– Navegación– Múltiples formas de ser invocados – Ingreso de datos (interfaz visual)– Mostrar resultados
Es muy difícil hacer algo bonito, que sea usable, que sea rápido de construir.
Arquitectura de Proyectos de IT4
¿Por qué es tan complejo?
También hay problemas en el análisis– Es compleja porque cuesta separar las cuestiones de
negocio de las visuales.– Al pensar en las pantallas uno se aleja del concepto /
dominio / negocio.– Distintos usuarios quieren hacer la misma tarea de
distintas formas– Suele ser lo que más rápidamente cambia.
Cuesta encontrar buenas abstracciones.– Encontrar abstracciones– Representarlas con las herramientas
Arquitectura de Proyectos de IT5
Secuencia Típica de Presentación
Mostrar las distintas acciones a realizar. Inicio de un caso de uso. Ingreso de datos del usuario. Validación de los datos ingresados. Transformación de los datos del formato de
ingreso al formato de negocio. Invocación de la lógica de negocio. Transformación de los resultados. Manejo y presentación de los errores. Selección de la siguiente pantalla – vista – x.
Arquitectura de Proyectos de IT6
Decisiones a Tomar
1. ¿Cómo distribuirlo? ¿Cliente liviano o pesado?
2. ¿Quién controla el flujo de la aplicación?
3. ¿Cómo se estructura la navegación?
4. ¿Cómo se maneja el estado conversacional?
5. ¿Cómo se relaciona con la lógica de dominio?
6. ¿Dónde se integra la lógica?
Arquitectura de Proyectos de IT7
1- Distribución de la Lógica
¿Por qué?– Muchos clientes = muchas máquinas– Los usuarios están en distintos lugares
¿Dónde está la lógica?– Server side– Client side– Mix
Arquitectura de Proyectos de IT8
1- Distribución de la Lógica (Cont.)
Interfaces de usuario– Línea de comando– Terminales– Cliente Servidor– Web– RIA
Arquitectura de Proyectos de IT9
2- Control de la Iniciativa User Initiative
– Pedido-Respuesta– Orientado a Eventos
Application Initiative– Usuario contesta preguntas– Wizard– Alarmas y eventos disparados por la aplicación
Combinada– Interactivo, Conversación– Continuation
Arquitectura de Proyectos de IT10
3- Formas de Navegación Pantallas y Formularios
– Stateless– Terminal boba / Mainframe, Web Tradicional
Ventanas o Diálogos– Stateful / Wizards– Cliente – Servidor, RIA
Manipulación Directa– Objetos– Casos de Uso
Arquitectura de Proyectos de IT11
4- Estado conversacional
Cliente
En cada pedido
Servidor (Session)
Compartido
Caso de Uso (Flow)
Arquitectura de Proyectos de IT12
5- Integración con el dominio de la aplicación
Stateless– Servicios– Procesos
Stateful– Eventos– Objetos
Arquitectura de Proyectos de IT13
6- ¿Dónde se integra la lógica? Campo a campo
– Validaciones– Máscaras– Pickers y otros controles más elaborados
Por formulario o pantalla– Lo más utilizado– Más cerca de la tecnología, a veces menos conceptual
Por caso de uso– Ejecución de un caso de uso de negocio
Arquitectura de Proyectos de IT14
4 Visiones Orientado a la presentación
– RAD - Rapid Application Development– Visual Basic
Orientado a datos– Hibernate, Struts.
Orientado a servicios.
Orientado a Objetos– Naked objects.
Arquitectura de Proyectos de IT15
Otros Problemas (I)
Navegabilidad
Usabilidad– Drag & Drop– Máscaras– Eventos disparados por el server
Múltiples tareas simultáneas
Transacciones
Arquitectura de Proyectos de IT16
Otros Problemas (II)
User Session Management
Internacionalización
Validación
Manejo de errores– Cómo mostrarlos– Múltiples errores simultáneos
Unit Testing de la UI
Arquitectura de Proyectos de IT17
Formas de desarrollar presentación
Visual
Programática– Template– Componentes
Declarativa
Automática / Introspectiva
Arquitectura de Proyectos de IT18
Ideas de Diseño
MVC – MMVC – MVP – Model 2
Morphic
MDP (Model Driven Presentation)– MDD
Arquitectura de Proyectos de IT19
Clientes pesados tradicionales
AWT, Swing, SWT – Java
.Net Desktop - VB6
Delphi
Dolphin – Smalltalk
Adobe Air (Flash)
Arquitectura de Proyectos de IT20
Web tradicionales
PHP JSP / Servlets ASP Cold Fusion Perl
Algunas herramientas Struts – Stripes Taglibs XSL
Arquitectura de Proyectos de IT21
Web + Components
Tapestry
JSF
ASP .Net
Web Objects
Arquitectura de Proyectos de IT22
Flujo Tradicional
Cliente Servidor
pedido de archivos, submit de formularios
HTMLs con javascript embebido, librerías de javascript, imágenes varias
Arquitectura de Proyectos de IT23
Flujo RIA
Cliente Servidor
pedido de archivos, pedido o envío de información
HTMLs simples, librerías de javascript, mapa de imágenes, información
Arquitectura de Proyectos de IT24
Herramientas RIA
Javascript + DHTML
Applets
ActiveX
AJAX
Flash
SVG (gráfico de vectores escalares)
Arquitectura de Proyectos de IT25
Plataformas RIA
XUL (XML + Javascript + Stylesheets)
Flex (Macromedia, MXML)
Lazslo
GWT
Active Widgets
Java Web Star (JNLP)
Arquitectura de Proyectos de IT26
MDP (Model Driven Presentation)
Naked Objects
Ruby on Rails
JRapid
Spring Roo
Arquitectura de Proyectos de IT27
Patrones de presentación
Front Controller Application Controller Use Case Object
– Unit Of Work Filtros Templates View Helpers IOS