440 likes | 666 Views
TRES CAPAS CON. Desarrollo de Apl icaciones en Tres Capas con Visual Works Smalltalk y GemSt one /S. Tres Capas con Smalltalk. Introducción al Diseño en Capas Características de las Herramientas Conexión entre capas Persistencia de Objetos Ejemplo Práctico. Tres Capas.
E N D
TRES CAPAS CON Desarrollo de Aplicacionesen Tres Capas con VisualWorks Smalltalk y GemStone/S
Tres Capas con Smalltalk • Introducción al Diseño en Capas • Características de las Herramientas • Conexión entre capas • Persistencia de Objetos • Ejemplo Práctico
Tres Capas Breve introducción al diseño en capas
Tres Capas - Descripción • Presentación al Usuario • Modelo del Negocio • Persistencia de Datos
Tres Capas - Presentación • Esta capa reúne todos los aspectos del software que tienen que ver con las interfaces y la interacción con los diferentes tipos de usuarios humanos
Tres Capas - Negocio • Esta capa reúne todos los aspectos del software que apoyan los procesos de negocio que llevan a cabo los usuarios
Tres Capas - Datos • Esta capa reúne todos los aspectos del software que tienen que ver con el manejo de los datos persistentes
Tres capas - Smalltalk Características de las herramientas de desarrollo
Tres Capas – Smalltalk • Herramientas • VisualWorks • GemStone /S • Opciones • Cliente Ventana, Cliente Web • Servidor VW, Servidor GS • Repositorio GS, RDBMS
VisualWorks • Multiplataforma (Windows – Linux – AIX – Solaris – MacOSX) • Completo Editor de Ventanas • Soporte para aplicaciones Web (Web Services, Smalltalk Server Pages, Servlets) • Soporte a protocolos standard como FTP, POP, SMTP, IMAP • Seguridad (SSL) • Soporte para CORBA y COM • Soporte para mapeo Objeto – Relacional (Top Link – GLORP) • Código abierto
Gemstone /S • Multiplataforma (Windows – Linux – AIX – Solaris – MacOSX) • Servidor de objetos multiusuario • Soporte transaccional y control de concurrencia • Soporte para consultas • Soporta índices para procesar los objetos • Soporte de conexión a repositorios de datos externos (OODBMS – RDBMS) • Administración de cuentas y seguridad • Integración con VW a través de GemBuilder
Conexión entre Capas Como realizar las conexiones entre las capas de presentación al usuario y el servidor y entre el servidor y el repositorio de objetos
Conexión entre Capas • Estilo de Aplicación: • Repositorio de Datos GemStone/S • Servidor de Aplicaciones sobre GemStone/S • Cliente Ventana Smalltalk • Cliente Web (servlets – ssp pages)
Herramientas Necesarias • Cargar las parcelas* • GbsTools para poder conectarse a GemStone (servidor-repositorio) • WebToolKit (herramientas web) • ContactsModel, ContactsUI y ContactsWeb (el código fuente del ejemplo) (*) Una parcela es un archivo externo que contiene un grupo de clases, objetos y dependencias
Conexión Cliente/Servidor/Repositorio • Opción programática • Definir los parámetros de conexión al servidor • Definir los parámetros de conexión al repositorio | parameters | parameters := GbsSessionParameters newWithGemStoneName: ‘!@localhost!gemserver61’ username: ‘DataCurator’ password: ‘swordfish’ hostUsername: '' hostPassword: '' gemService: ‘!@localhost!gemnetobject’ *hostUsername y hostPassword son necesarios cuando el application server corre en un host diferente al del repositorio
Conexión Cliente/Servidor/Repositorio • Agregar conectores entre los objetos /clases del modelo y los objetos / clases persistentes | connector | (connector := GbsClassConnector stName: ‘ContactItem’ gsName: ‘ContactItem’ dictionaryName:‘ContactsClasses’). parameters addConnector: connector | connector | (connector := GbsClassVarConnector stName: ‘ContactItems’ gsName: ‘ContactItems’ dictionaryName: ‘ContactsClasses’ stvarName: ‘SoleInstance’ gsvarName: ‘SoleInstance’) beForwarderOnConnect. parameters addConnector: connector
Conexión Cliente/Servidor/Repositorio • Loguearse al repositorio de objetos parameters loginRpc • Una vez hecho esto: • Queda establecida la conexión entre el servidor de aplicación y la base de datos • Se replicó la clase ‘ContactItem’ • Se conecto la variable de clase ‘SoleInstance’ de la clase ContactItems entre la imagen servidor y la imagen cliente (todos los mensajes enviados a esta en el cliente se forwardean al servidor)
Conexión Cliente/Servidor/Repositorio • Opción visual • Definir los parámetros de conexión
Conexión Cliente/Servidor/Repositorio • Agregar conectores entre los objetos /clases del modelo y los objetos / clases persistentes
Conexión Cliente/Servidor/Repositorio • Loguearse al repositorio de objetos Para conectarse a equipos remotos debe utilizarse la opción Login Rpc • Una vez hecho esto el resultado obtenido es el mismo que al realizarlo programáticamente
Conexión Cliente Web Como realizar la conexión entre el cliente web y el servidor web
Servicios Web • Definir un servidor (Smalltalk HTTP Server) • Crear el/los servlets necesarios • Escribir las páginas dinámicas (Smalltalk Server Pages –ssp-) que hagan falta • Configurar el sitio web
Web – Crear servidor • Desde la consola de server se crea y configura un Smalltalk HTTP Server
Web - Servlets • Un servlet es una clase que es invocada desde una página web (puede ser html, ssp, jsp o asp) • Debe ser subclase de HttpServlet • Protocolo: doPost, doGet, doPost:response: y doGet:response: <form action="servlet/ServletVerify" method="post" name="loginForm">
Web – Smalltalk Server Pages • Son páginas web que contienen código smalltalk embebido en el código html • El código smalltalk se ejecuta en el servidor <tr> <td colspan=2 align=center> <% msg := request anyParameterValueAt: 'msg'. msg notNil ifTrue: [ response write: '<p align="center" class="redbutton">'; write: msg; write: '</p>']. %> </td> </tr
Web – Configuración del sitio • En el directorio $(VISUALWORK)/web debe existir un archivo de configuración (.ini) para el sitio [configuration contacts-site.ini] #Note: Configuration parameters are case sensitive. #Configuration file of contacts site directory = $(VISUALWORKS)/web/contacts enviroment = Smalltalk description = The contacts development site home = logon.ssp • Este se tiene que referenciar desde webtools.ini contacts = contacts-site.ini *contacts es el nombre del sitio web
Web – Configuración del sitio • Una vez creado y levantado el web server, escribiendo http://localhost:8008 en el browser podemos ver la herramienta de configuración de VisualWorks Web Toolkit • Si esta todo bien, en la parte inferior se va a encontrar el site contacts (configurado anteriormente) • Se puede acceder a los detalles del sitio para ver y/o modificar su configuración
Persistencia de Objetos Como persistir los cambios realizados a los objetos del negocio
Persistencia de Objetos • Al loguearse a GS se replican en el cliente (ambiente VW) los objetos persistidos en el repositorio
Persistencia de Objetos • Luego de modificar algún objeto del modelo, ese cambio debe persistirse en la base de datos • La manera de persistir / actualizar un objeto en la base de datos es la siguiente: • enviándole el mensaje markDirty al objeto, lo marcamos como que fue modificado y que este cambio debe verse reflejado en la base • al ejecutar el commit de la transacción es cuando se aplica el cambio
Persistencia de Objetos • El objeto es modificado en el contexto del cliente
Persistencia de Objetos • El objeto modificado se marca como sucio enviándole el mensaje markDirty
Persistencia de Objetos • Al comitear la transacción se actualizan todos lo objetos marcados como sucios
Persistencia de cambios • Ejemplo aContactItem firstName: firstName; lastName: lastName; homePhone: homePhone; workPhone: workPhone; email: email; markDirty aGbsSession commit
Ejemplo Práctico Desarrollo de un ejemplo práctico utilizando las herramientas descriptas
Ejemplo - Definición • El ejemplo propuesto consiste en una agenda de contactos donde: • Un usuario puede: • Agregar usuarios • Agregar, modificar o eliminar contactos
Consejo • Si algo se pone muy complicado de seguro estamos haciendo algo mal, tomarse cinco minutos y repensar las cosas • Aplicar la filosofía K.I.S.S. Keep It Simply Stupid