tres capas con desarrollo de aplicaciones en tres capas con visualworks smalltalk y gemstone /s

44
TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Upload: ana-belen-velazquez-robles

Post on 25-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

TRES CAPAS CON

Desarrollo de Aplicaciones en Tres Capas con VisualWorks

Smalltalk y GemStone /S

Page 2: TRES CAPAS CON Desarrollo de Aplicaciones en 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

Page 3: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Tres Capas

Breve introducción al diseño en capas

Page 4: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Tres Capas - Descripción

Presentación al Usuario Modelo del Negocio Persistencia de Datos

Page 5: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Tres Capas - Diagrama

Page 6: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 7: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Tres Capas - Negocio

Esta capa reúne todos los aspectos del software que apoyan los procesos de negocio que llevan a cabo los usuarios

Page 8: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Tres Capas - Datos

Esta capa reúne todos los aspectos del software que tienen que ver con el manejo de los datos persistentes

Page 9: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Tres capas - Smalltalk

Características de las herramientas de desarrollo

Page 10: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Tres Capas – Smalltalk

Herramientas VisualWorks GemStone /S

Opciones Cliente Ventana, Cliente Web Servidor VW, Servidor GS Repositorio GS, RDBMS

Page 11: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 12: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 13: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Diagrama de Despliegue

Page 14: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 15: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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)

Page 16: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 17: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 18: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 19: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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)

Page 20: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Conexión Cliente/Servidor/Repositorio Opción visual

Definir los parámetros de conexión

Page 21: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Conexión Cliente/Servidor/Repositorio

Agregar conectores entre los objetos /clases del modelo y los objetos / clases persistentes

Page 22: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 23: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Conexión Cliente Web

Como realizar la conexión entre el cliente web y el

servidor web

Page 24: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 25: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Web – Crear servidor Desde la consola de server se crea y

configura un Smalltalk HTTP Server

Page 26: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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">

Page 27: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 28: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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/contactsenviroment = Smalltalkdescription = The contacts development sitehome = logon.ssp

Este se tiene que referenciar desde webtools.ini

contacts = contacts-site.ini

*contacts es el nombre del sitio web

Page 29: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 30: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Persistencia de Objetos

Como persistir los cambios realizados a los objetos del

negocio

Page 31: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Persistencia de Objetos

Al loguearse a GS se replican en el cliente (ambiente VW) los objetos persistidos en el repositorio

Page 32: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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

Page 33: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Persistencia de Objetos

El objeto es modificado en el contexto del cliente

Page 34: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Persistencia de Objetos El objeto modificado se marca como

sucio enviándole el mensaje markDirty

Page 35: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Persistencia de Objetos Al comitear la transacción se actualizan

todos lo objetos marcados como sucios

Page 36: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Persistencia de cambios

Ejemplo

aContactItemfirstName: firstName;lastName: lastName;homePhone: homePhone;workPhone: workPhone;email: email;markDirty

aGbsSession commit

Page 37: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Ejemplo Práctico

Desarrollo de un ejemplo práctico utilizando las

herramientas descriptas

Page 38: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Ejemplo - Definición

El ejemplo propuesto consiste en una agenda de contactos donde: Un usuario puede:

Agregar usuarios Agregar, modificar o eliminar contactos

Page 39: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Estructura de Aplicación

Page 40: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Ejemplo - Diagrama de Clases

+addProfileFor:()+allUserProfiles()+getOrAddProfileFor:()+inGemStone()+locateProfileFor:()+new()+changed:with:()+inGemStone()+initialize()

-user-contactItems

ContactBookUserProfile

+abort()+addConnectorsTo:()+commit()+createContactUserNamed:password:()+isLoggedIn()+loginIntoGemstone()+logout()+newClassConnectorFrom:to:()+newClassVarConnectorFrom:to:fromVariable:toVariable:()+newSessionParameters()+userContactData()+username()+users()

-session-userContactData-user

ContactBookSessionManager

+changed:with:()+defaultDisplayString()+displayFields()+displayString()+printOn:()

-user-firstName-lastName-homePhone-workPhone-email

ContactItem

+soleInstance()

ContactItems

+named:password:()+printOn:()

-username-password

ContactUser

+soleInstance()

ContactUsers

0..*

10..1

1

1

0..*

1

1

1

0..*1

0..*

Page 41: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Ejemplo – Diagrama de Tres Capas

ContactBookUserProfile

ContactBookSessionManager

ContactItem ContactItems

ContactUser

ContactUsers

ServletAdd ServletMainServletModify ServletVerify

«interfaz»logon.ssp

«interfaz»LoginView

«interfaz»ContactsBrowserWindow

«interfaz»ContactItemEditView

«interfaz»main.ssp

«interfaz»details.ssp

«interfaz»new.ssp

ContactBookUserProfileContactItem

ContactItems ContactUser

ContactUsers

Presentación

Negocio

Datos

Page 42: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Ejemplo – Diagrama de Componentes

PC Win Client

Application Server

Repository Server

Contacts List Window

Contacts Server

Contacts Repository

RPC/TCP

Session

GS Connector

RPC / TCP

Client Session

PC Web Client

web browser

HTTP

Servlet

Page 43: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

Preguntas

Page 44: TRES CAPAS CON Desarrollo de Aplicaciones en Tres Capas con VisualWorks Smalltalk y GemStone /S

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