Está en la página 1de 89

Universidad Nacional del Santa

Facultad de Ingeniera

EAP Ingeniera de Sistemas e Informtica

Creacin de Aplicaciones Distribuidas con


PowerBuilder y EAServer
Versin Diciembre 2008

Volumen I - Arquitectura Distribuida

Por:

Ms. Ing. Camilo Ernesto Surez Rebaza


Docente UNS
Dpto. Acad. Ing. Civil y Sistemas

EAP. Ingeniera de Sistemas e Informtica

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

ndice
I.

Introduccin a los Sistemas Distribuidos ............................................................. 3


1.1.

Importancia....................................................................................................... 3

1.2.

Terminologa y Conceptos ............................................................................... 4

1.3.

Capas en una Arquitectura Distribuida............................................................. 6

II. Creacin y Programacin de Base de Datos ...................................................... 12


2.1.

Descripcin del Caso de Estudio .................................................................... 12

2.2.

Creacin de la Base de Datos ......................................................................... 13

2.3.

Creacin del Servicio...................................................................................... 17

2.4.

Creacin de Tablas, Relaciones e ndices....................................................... 21

2.5.

Creacin de Funciones y Procedimientos Almacenados................................ 28

2.6.

Creacin de Triggers. ..................................................................................... 33

III. Framework GUI - Cliente.................................................................................... 41


3.1.

Fuentes de datos y DataWindow para ingreso de datos. ................................ 41

3.2.

Mantenimiento con Procedimientos Almacenados ........................................ 45

3.3.

Ventanas para Ingreso de Datos. .................................................................... 46

3.4.

Ventana MDI y Men principal...................................................................... 50

3.5.

Gestin de Reportes........................................................................................ 50

IV. Arquitectura Distribuida y EAServer ................................................................ 51

V.

4.1.

Desarrollo de Aplicaciones n-Tier con PowerBuilder.................................... 51

4.2.

Creacin de Servidores EAServer .................................................................. 51

4.3.

Creacin de Packages ..................................................................................... 60

4.4.

Creacin de Cach de Conexiones ................................................................. 61

4.5.

Perfiles de conexin a EAServer .................................................................... 66

4.6.

Definir Componente ....................................................................................... 67

Ciclo de vida y Creacin de Componentes ......................................................... 76


5.1.

Modelo del Ciclo de Vida de los Componentes EAServer. ........................... 76

5.2.

Creacin de los Objetos No Visuales de la Aplicacin. ................................. 77

5.3.

Configuracin de Componentes EAServer. ................................................... 79

5.4.

Creacin de Objetos Proxy. ............................................................................ 81

5.5.

FrameWork GUI con Componentes .............................................................. 85

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

I. Introduccin a los Sistemas Distribuidos


1.1.

Importancia
La tecnologa informtica permite no slo disminuir el papeleo y en general
agilizar las operaciones, sino tambin aumentar la competitividad de la empresa.
Los tiempos actuales han modificado substancialmente la forma de operar de las
organizaciones y ha inducido modificaciones en el quehacer de la tecnologa
computacional dentro de ellas. Algunos de los aspectos que han cambiado son
los siguientes:
 Las aplicaciones deben ser desarrolladas ms rpidamente pues los
requerimientos del negocio cambian rpidamente.
 La importancia de contar con una buena informacin destaca el
fundamental papel que juegan los sistemas de informacin.
 Cada vez es ms importante el poder hacer que la informacin est
disponible en donde se necesita.
 A medida que crece la competencia, las organizaciones tienen cada vez
menos recursos disponibles para los proyectos internos.
 Con el fin de aumentar la productividad y de facilitar el uso de las
aplicaciones por parte de los usuarios, se requieren interfaces simples e
intuitivas, y que proporcionen un acceso transparente a la informacin.
 Cada vez es mayor la tendencia hacia la integracin de los sistemas
evitando las "islas de informacin" en las diferentes dependencias de
una empresa.
 Las aplicaciones deben adaptarse al ritmo vertiginoso de desarrollo de la
tecnologa, para que puedan aprovechar sus potencialidades.

Las tecnologas computacionales modernas buscan responder a stas


necesidades empresariales y para ello plantean nuevas formas de hacer las cosas.
Entre ellas una de las ms importantes es el llamado modelo o Arquitectura
Cliente/Servidor. En el sentido ms estricto, el trmino Cliente/Servidor describe
un sistema en el que una mquina cliente solicita a una segunda mquina
llamada servidor que ejecute una tarea especfica. El cliente suele ser una
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

computadora personal comn conectada a una LAN, y el servidor es, por lo


general, una mquina anfitriona, como un servidor de archivos PC. Algunas de
las principales LAN cliente/servidor con servidores especializados que pueden
realizar trabajos para clientes, incluyen a Windows NT, NetWare de Novell,
VINES de Banyan y LAN Server de IBM entre otros. Todos estos sistemas
operativos de red pueden operar y procesar solicitudes de aplicaciones que se
ejecutan en clientes, mediante el procesamiento de las solicitudes mismas.

1.2.

Terminologa y Conceptos
Cliente:
Una aplicacin que inicia una comunicacin con otra se la califica como Cliente.
Los usuarios finales invocan aplicaciones cliente cuando utilizan un servicio de
red. Cada vez que se ejecuta una aplicacin cliente, esta contacta con el servidor,
le enva una solicitud de servicio y espera la respuesta o resultados del servicio.
Los Clientes interactan con el usuario, usualmente en forma grfica.
Frecuentemente se comunican con procesos auxiliares que se encargan de
establecer conexin con el servidor, enviar el pedido, recibir la respuesta,
manejar las fallas y realizar actividades de sincronizacin y de seguridad.

Por lo tanto, un proceso cliente es el encargado de llevar a cabo la interaccin


con el usuario y de mostrar los resultados de las peticiones de servicio. En la
mayora de las ocasiones los Clientes son mas fciles de disear que los
servidores, y no suelen precisar privilegios especiales del sistema para poder
funcionar. En general el programa cliente cumple dos funciones distintas: por un
lado gestiona la comunicacin con el servidor, solicita un servicio y recibe los
datos enviados por aqul. Por otro, maneja la interface con el usuario: presenta
los datos en el formato adecuado y brinda las herramientas y comandos
necesarios para que el usuario pueda utilizar las prestaciones del servidor de
forma sencilla.

Servidor:
Un Servidor es un programa que espera peticiones de servicio por parte de un
cliente. El Servidor recibe la peticin del cliente, ejecuta el servicio solicitado y
retorna los resultados al cliente. No existe una interaccin directa entre el
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

usuario y el servidor, de esto se encarga la aplicacin cliente. El programa


servidor en cambio, slo tiene que encargarse de transmitir la informacin de
manera eficiente. De esta forma un mismo servidor puede atender a varios
clientes al mismo tiempo.

Por consiguiente, los Servidores proporcionan un servicio al cliente y devuelven


los resultados. En algunos casos existen procesos auxiliares que se encargan de
recibir las solicitudes del cliente, verificar la proteccin, activar un proceso
servidor para satisfacer el pedido, recibir su respuesta y enviarla al cliente.
Adems deben manejar los interbloqueos, la recuperacin ante fallas, y otros
aspectos afines. Por las razones anteriores la plataforma computacional asociada
con los servidores es ms poderosa que la de los clientes.

Por

esta

razn

se

utilizan

PCs

poderosos,

estaciones

de

trabajo,

minicomputadores o sistemas grandes. Por otro lado deben manejar servicios


como administracin de la red, mensajes, control, administracin de la entrada al
sistema (login), y recuperacin. Usualmente en los servidores existe adems
algn tipo de servicio de bases de datos.

Infraestructura de Comunicaciones:
Para que los clientes y los servidores puedan comunicarse se requiere una
infraestructura de comunicaciones, la cual proporciona los mecanismos bsicos
de direccionamiento y transporte. La mayora de los sistemas Cliente/Servidor
actuales se basan en redes locales y por lo tanto utilizan protocolos no orientados
a conexin, lo cual implica que las aplicaciones deben hacer las verificaciones.
La red debe tener caractersticas adecuadas de desempeo, confiabilidad,
transparencia y administracin.

En una red de comunicaciones, el cliente es la mquina solicitante y el servidor


es la mquina proveedora mediante un software especializado en ambos
extremos. Por ejemplo, en un sistema de base de datos basado en redes, la
interface de usuario reside en el cliente, y las funciones de almacenamiento y
recuperacin de datos, en el servidor.

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Privilegios y Complejidad:
Debido a que los servidores a menudo tienen la necesidad de acceder a datos,
funciones, o puertos que el sistema operativo protege, el software servidor suele
precisar de privilegios del sistema especiales para poder realizar la tarea para la
cual ha sido creado. Como consecuencia de esto se tiene mucho cuidado para
evitar que los privilegios concedidos al servidor sean aprovechados por los
clientes para obtener permisos especiales. Por ejemplo, un servidor de objetos
que se ejecuta como un programa privilegiado debe contener cdigo para
verificar si un cliente dado tiene permiso para acceder a un objeto en concreto.
El servidor no puede relegar esta funcin sobre el sistema operativo, ya que su
estado privilegiado le sita, en ciertos aspectos concretos, por encima del
sistema. Los programas servidores deben contener cdigo que maneje
situaciones de:
 Autenticacin : Verificar la identidad del cliente.
 Autorizacin : Determinar si un cliente dado posee permisos para
acceder al servicio que suministra.
 Seguridad de datos : Garantizar que la informacin no es revelada, de
manera no intencionada, a clientes sin autorizacin.
 Privacidad : Preservar la informacin de un usuario de accesos no
autorizados.
 Proteccin : Garantizar que las aplicaciones de red no puedan abusar de
los recursos del sistema.

Los servidores que realizan un intensivo uso de la potencia del procesador o que
manejan grandes volmenes de informacin operan ms eficientemente si
manejan las solicitudes de servicio concurrentemente. La combinacin de
privilegios especiales y ejecucin concurrente, por norma general, hace que los
servidores sean ms difciles de disear e implementar que los clientes.

1.3. Capas en una Arquitectura Distribuida


En un esquema Cliente/Servidor clsico existen dos capas, el cliente y el servidor:
ste ltimo est ubicado normalmente en otra mquina, y suele ser un gestor de
base de datos, como DB2, SQL Server, Sybase Adaptive Server, Oracle, aunque
tambin puede ser una base de datos ms pequea, como Paradox, dBase, etc., a
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

los cuales se acceden directamente desde una aplicacin cliente. Los mejores
gestores de base de datos relacionales proporcionan soporte para implementar en
ellos diversas reglas de negocio, mediante el uso de claves primarias, integridad
referencial, triggers, etc., mientras que sistemas como dBase y otros apenas
proporcionan soporte para reglas de negocio.

Arquitectura Cliente /Servidor en dos capas (Clsico)

Suponiendo que se tenga la informacin en un gestor de bases de datos potente,


entonces se podr llevar a cabo la codificacin de numerosas validaciones: as, si
en la base de datos se crea una regla de integridad referencial que indique que
todo pedido pertenece a un cliente, el gestor de base de datos rechazar cualquier
intento de almacenar un pedido en el que no se indique al mismo. Cualquier
aplicacin que acceda a esta base de datos se beneficiar de esta y otras
validaciones automticamente, sin tener que aadir ni una lnea de cdigo. Si se
utiliza una base de datos menos potente, casi todas las reglas de negocio debern
implementarse dentro de los programas que accedan a la base de datos. Si los
programas que acceden a la base de datos son varios, garantizar que en todos ellos
se respetan todas las reglas puede llegar a ser muy difcil y engorroso,
especialmente si se desarrollan con distintas herramientas.

Las bases de datos relacionales son cada vez ms potentes, pero no todas las
reglas de negocio pueden reflejarse en ellas: por ejemplo, las reglas de flujo son
bastante difciles de implementar dentro de la base de datos, y suelen ser las
aplicaciones cliente las que controlan que la informacin siga una ruta vlida a
travs del sistema. El problema se agrava cuando la informacin del negocio se
encuentra en distintas bases de datos, en donde no hay manera de establecer una

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

regla de integridad referencial entre tablas almacenadas en dos bases de datos


distintas y correspondientes a distintos gestores de base de datos.

De nuevo, la solucin al problema es implementar el chequeo en cada aplicacin


cliente. Por lo tanto es conveniente encontrar la manera de centralizar la gestin
de estas reglas en un nico lugar, de modo que todo el cdigo necesario no se
tenga que duplicar en cada una de las aplicaciones. La solucin es crear una
aplicacin que se encargue de llevar a cabo estas tareas, de modo que todos los
clientes pidan o enven informacin a la misma, no al gestor de base de datos en el
servidor: a ste solo acceder la nueva aplicacin, que conforma una nueva capa
dentro de un sistema Cliente/Servidor, la capa intermedia o middle-tier, con lo
que el sistema pasa de ser un sistema Cliente/Servidor convencional a ser un
sistema con tres capas (three-tiered), en la que puede haber varias de estas
aplicaciones, llamadas servidores de aplicacin, lo que permite distribuir la carga
de trabajo.

Arquitectura Cliente /Servidor en tres capas (Three-Tiered)

Ubicacin de las Reglas o la lgica del Negocio:


La decisin de dnde ubicar una determinada regla de negocio dentro de una
arquitectura Cliente/Servidor en tres capas puede simplificarse mucho si se
atiende al tipo de regla. Las reglas del modelo de datos especifican los valores
vlidos para cada campo de cada tabla. Estas reglas deben ser reforzadas en el
servidor. Como complemento de esto, sin embargo, se debe implementar estas
validaciones tambin a nivel de cliente, por una simple razn: evitar trabajo y
esperas innecesarias a los usuarios.

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

Por lo que respecta a las reglas de relacin, el lugar ms adecuado para


implementarlas es el servidor. La mayor parte de los gestores de base de datos
proporcionan integridad referencial

y los mecanismos necesarios para

implementar fcilmente estas reglas. Adems, el hecho de que los datos


necesarios para verificar si se respetan las relaciones residan en la misma base de
datos hace que las verificaciones sean rpidas, mientras que si el chequeo se hace
en el cliente se incrementar el trfico de red.

Las reglas de derivacin pueden variar mucho en complejidad. Lo ideal es


implementar las reglas de derivacin complejas en la capa intermedia para su
ejecucin en el servidor, posiblemente mediante un procedimiento almacenado, o
mediante una sentencia SQL. Por otro lado, las reglas ms sencillas pueden
tambin implementarse en la capa intermedia, de modo que se tenga las reglas de
clculo centralizadas en una nica aplicacin.

Las reglas de restriccin deben implementarse en el servidor, o en la capa


intermedia. Dado que estas reglas contemplan restricciones en los datos que
dependen casi siempre de informacin presente en varias tablas, llevar a cabo el
control en el cliente puede implicar cierto trfico de red, por lo que es ms
conveniente situar la implementacin de la regla ms cerca de los datos. Por
ltimo, quedan las reglas de flujo: estas reglas son excelentes candidatas a ser
implementadas en la capa intermedia, dado que su complejidad suele ser bastante
grande, lo que las hace inmanejables por un gestor de bases de datos.

Ubicacin de las reglas de negocio dentro del esquema de tres capas

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Sistemas Cliente/Servidor en tres Capas:


Un Sistema Cliente/Servidor en tres capas representa un Sistema Distribuido en el
que se han separado los distintos servicios que componen el sistema. La divisin
que normalmente se sigue para estos sistemas es la definicin de tres capas
lgicas (que posteriormente se convertirn en diferentes capas fsicas) de la
siguiente manera: En la capa ms inferior se encuentra la capa de datos, en esta
capa se ubican las diferentes bases de datos de las que la aplicacin obtendr y
aadir datos, en sta capa tambin se encuentran los procedimientos
almacenados que ayudan a simplificar los accesos, modificaciones e inserciones
sobre los datos.

La siguiente capa contiene las reglas o la lgica de negocios, en esta capa se


definen los componentes (entendindose por componente un conjunto de clases
que hacen algo) que contienen la definicin de las operaciones que son necesarias
para que el sistema haga su trabajo, adems en dichos componentes residen las
operaciones que manejan los datos de la capa inferior. En stos componentes
estn las reglas que dicen como utilizar los datos y mantienen la integridad de los
mismos. Por otro lado la capa de negocios oculta una posible distribucin fsica
de los datos.

Por ltimo est la capa de presentacin, sta capa se encarga nicamente de


presentar los datos a los usuarios y de establecer la interface para que exista una
comunicacin entre los mismos usuarios y el sistema. Esta capa carece de
procesamiento y se limita nicamente a mostrar los datos a los usuarios y
comprobar que las peticiones de los mismos son, por lo menos, semnticamente,
correctas y de esta manera evitar que se hagan peticiones a la capa de negocio
que a priori son inviables debido a que incumplen algn requisito previo.

En ste sentido, un sistema cliente/servidor en tres capas establece, al menos, tres


capas donde los usuarios no tienen constancia sobre como se almacenan ni donde
residen los datos, estos slo se comunican con la capa de presentacin, sta se
ocupa de procesar las peticiones de los usuarios y transmitirlas a los componentes
de la capa de negocios, en esta capa se procesar la peticin modificando,
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

10

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

pidiendo o consultando los datos necesarios, que son provistos por la capa de
datos que adems de proveer dichos datos a la capa superior se encarga de
almacenarlos y mantenerlos correctamente.

Aplicacin Distribuida es aquella donde el procesamiento de los datos se realiza


en diferentes ordenadores y se ajusta al modelo cliente / servidor de n capas.

Aplicaciones
Cliente

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

Servidores de
Aplicaciones

Servidores de
Datos

11

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

II. Creacin y Programacin de Base de Datos


2.1.

Descripcin del Caso de Estudio


El caso de estudio del presente curso trata de una Empresa dedicada a la
comercializacin de computadoras compatibles y sus repuestos.

Cotizar Productos

Registrar Compra
Confirmar Cotizacin
Vendedor

Reportar Pendientes

Emitir Guia Remisin

Almacenero

Registrar Provedor
Emitir Comprobante
Registrar Producto

Reportar Ingresos
Pedir Productos
Cajero
Administrador
Registrar Transportista

Registar Personal

El Caso de Estudio tiene las siguientes restricciones:

Slo se venden cajas blancas, es decir no se vender computadoras de marca.

Los Servicios de Mantenimiento y reparaciones no estn contemplados.

La gestin de personal (capacitaciones y planilla) escapa al modelo

Los pagos son al contado.

La aplicacin slo emitir Boletas o facturas como comprobantes de pago.

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

12

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

2.2. Creacin de la Base de Datos


Como Motor de Base de Datos utilizaremos SQL Anywhere Studio 9.0 Developer
Edition.
EL modelo Entidad Relacin es el siguiente:
Transportista
ID_Transportista
RUC
Razon
Telefono

Vendedor
ID_Vendedor
Apellidos
Nombres
Direccion
F_Ingreso
Estado

smallint
<pk>
varchar(40)
varchar(50)
varchar(100)
date
smallint

Cotizacion
ID_Cotizacion
ID_Cliente
ID_Vendedor
Fecha
F_Vencimiento

bigint
<pk>
bigint
<fk1>
smallint <fk2>
date
date

Proveedor
RUC
Razon
Direccion
Telefono

char(12)
<pk>
varchar(100)
varchar(100)
varchar(15)

Compras
ID_Compra
ID_Producto
RUC
NroGuia
Cantidad
PrecioUnit

bigint
<pk,fk1>
bigint
<pk,fk2>
smallint
money

bigint
<pk>
varchar(40)
varchar(50)
varchar(100)
varchar(30)
varchar(15)

GuiaSalida
ID_GuiaSalida
ID_Transportista
ID_Boleta
ID_Factura

bigint
smallint
bigint
bigint

Boleta
ID_Boleta
ID_Cliente
Fecha
Total
Estado

bigint
<pk>
bigint
<fk>
date
money
smallint

Factura
ID_Factura
ID_Cliente
Fecha
T otal
Estado

bigint
<pk>
bigint
<fk>
date
money
smallint

ID_Producto
ID_Categoria
Descripcion
StockActual
StockMinimo
PrecioActual
Comentarios

bigint
<pk>
smallint
<fk>
varchar(100)
integer
integer
money
varchar(500)

ID_Boleta
ID_Producto
Cantidad
Precio
SubTotal

bigint
<pk,fk1>
bigint
<pk,fk2>
smallint
money
money

Factura_Detalle
ID_Factura
ID_Producto
Cantidad
Precio
SubTotal

bigint
<pk,fk1>
bigint
<pk,fk2>
smallint
money
money

Antes de crear las tablas y dems objetos, debemos crear la Base de Datos, esta
tarea la realizamos con Sybase Central (consola de administracin):

En la pestaa de <Utilities> seleccionamos <Create Database>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

<pk>
<fk1>
<fk2>
<fk3>

Boleta_Detalle
Producto

Categoria

Cliente
ID_Cliente
Apellidos
Nombres
Direccion
e_mail
telefono

Cotizacion_Detalle
ID_Cotizacion
ID_Producto
Cantidad
Precio

bigint
<pk>
bigint
<fk2>
char(12)
<fk1>
varchar(20)
smallint
money

ID_Categoria smallint
<pk>
Descripcion
varchar(100)

smallint
<pk>
varchar(12)
varchar(80)
varchar(15)

13

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Ejecutamos dicha herramienta y obtenemos:

Clic en <siguiente>:

Clic en <siguiente> y escribimos la localizacin de la Base de Datos:


Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

14

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en siguiente

Clic en siguiente:

Clic en <siguiente>:
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

15

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <siguiente>:

Clic en siguiente:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

16

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en siguiente:

Clic en siguiente

Clic en finalizar y listo

2.3. Creacin del Servicio


Luego que hemos creado la Base de datos debemos levantarla como servicio para
que sta se encuentre disponible en cualquier momento con solo iniciar la
mquina que funciona como servidor de datos.

Para crear el servicio iniciamos la Herramienta Sybase Central y seleccionamos


la ficha <Services>, hacemos clic con el botn secundario y nos aparecer un
men emergente tal como se muestra a continuacin:
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

17

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Dar clic en <Service> y escribimos ServerData para el nombre del servicio:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

18

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

19

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Finalizar> finalmente iniciamos el servicio <botn derecho>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

20

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

2.4. Creacin de Tablas, Relaciones e ndices.


Para crear las tablas primero debemos conectar a la Base de datos desde Sybase
Central, con este propsito hacemos <clic derecho> en la opcin Adaptive Server
Anywhere 9 que se encuentra en el rbol derecho:

Clic en <Connect> y digitamos dba y Sql:

Clic en la pestaa <Database> digitamos ServerData y VentaPC:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

21

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <OK> y obtenemos lo siguiente:

Clic en el flder Tables y luego <clic derecho> y aparece el siguiente men:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

22

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Table> y damos el nombre de la tabla Categoria:

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

23

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Finalizar>, presentndonos la interfase para el ingreso de los campos.


Ingresamos el campo ID_Categoria y seleccionamos su tipo de datos, valor por
defecto, si es clave primaria o no, etc:

Luego agregamos
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

el campo <Descripcin> y guardamos la tabla

:
24

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Lo mismo hacemos lo mismo para cada una de las dems tablas del modelo, por
ejemplo para la tabla Producto:

Cabe destacar que no creamos los campos <fk>, se crean junto con las relaciones,
para relacionar esta tabla con la tabla Categoria, hacemos clic en la pestaa
Foreign Keys, luego hacemos <clic derecho> y aparece el siguiente men:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

25

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Foreign Key>, Seleccionamos Categora y obtenemos:

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

26

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

27

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Finalizar> y listo, el resultado final es el siguiente:

Lo mismo hacemos para todas las dems relaciones de la Base de Datos.

2.5. Creacin de Funciones y Procedimientos Almacenados.


La idea es crear procedimientos almacenados para el ingreso de datos (nuevos
registros) y tambin para reportes complejos que demandan el procesamiento de
muchas tablas o tablas que contienen gran cantidad de registros.

Empezaremos creando procedimientos almacenados para el ingreso de nuevos


registros, tomando como ejemplo la creacin del procedimiento almacenado que
nos permitir agregar un nuevo registro en la tabla Categoria devolviendo la
Clave Primaria generada. Nos vamos a la carpeta Procedures & Functions y
<clic derecho>:

Clic en <Procedure> y escribimos el nombre sp_Categoria_Agregar:


Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

28

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Finalizar> y escribimos el cdigo respectivo:


Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

29

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Guardamos

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

y Listo. Los dems procedimientos almacenados se crean de

manera anloga, y el cdigo para cada uno de ellos es el siguiente:

ALTER PROCEDURE "DBA"."sp_Boleta_Agregar"(


in xID_Cliente bigint,
in xFecha date,
in xTotal money,
in xEstado smallint,
out xID_Boleta bigint)
BEGIN
Insert Into Boleta ( ID_Cliente, Fecha, Total, Estado )
Values ( xID_Cliente, xFecha, xTotal, xEstado );
Set xID_Boleta = @@Identity
END

ALTER PROCEDURE "DBA"."sp_Categoria_Agregar"(


in xDescripcion varchar(100),
out xID_Categoria SmallInt)
BEGIN
Insert Into Categoria (Descripcion)
values (xDescripcion);
Set xID_Categoria = @@Identity
END

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

30

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

ALTER PROCEDURE "DBA"."sp_Cliente_Agregar"(


in xApellidos varchar(40),
in xNombres varchar(50),
in xDireccion varchar(100),
in xE_mail varchar(30),
in xTelefono varchar(15),
out xID_Cliente bigint)
BEGIN
Insert Into Cliente (Apellidos, Nombres, Direccion, E_mail, Telefono)
Values (xApellidos, xNombres, xDireccion, xE_mail, xTelefono);
Set xID_Cliente = @@Identity
END

ALTER PROCEDURE "DBA"."sp_Cotizacion_Agregar"(


in xID_Cliente bigint,
in xID_Vendedor smallint,
in xFecha date,
in xF_Vencimiento date,
out xID_Cotizacion bigint)
BEGIN
Insert Into Cotizacion (ID_Cliente, ID_Vendedor, Fecha, F_Vencimiento)
Values ( xID_Cliente, xID_Vendedor, xFecha, xF_Vencimiento );

Set xID_Cotizacion = @@Identity


END

ALTER PROCEDURE "DBA"."sp_Factura_Agregar"(


in xID_Cliente bigint,
in xFecha date,
in xTotal money,
in xEstado smallint,
out xID_Factura bigint)
BEGIN
Insert Into Factura ( ID_Cliente, Fecha, Total, Estado )
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

31

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Values ( xID_Cliente, xFecha, xTotal, xEstado );


Set xID_Factura = @@Identity
END

ALTER PROCEDURE "DBA"."sp_Producto_Agregar"(


in xID_Categoria smallint,
in xDescripcion varchar(100),
in xStockMinimo Integer,
in xComentarios varchar(500),
out xID_Producto bigint)
BEGIN
Insert Into Producto(ID_Categoria,Descripcion,StockMinimo,Comentarios)
Values( xID_Categoria, xDescripcion, xStockMinimo, xComentarios );

Set xID_Producto = @@Identity


END

ALTER PROCEDURE "DBA"."sp_Proveedor_Agregar"(


in xRUC char(12),
in xRazon varchar(100),
in xDireccion varchar(100),
in xTelefono varchar(15))
BEGIN
Insert into Proveedor (RUC, Razon, Direccion, Telefono)
Values (xRUC, xRazon, xDireccion, xTelefono);
END

ALTER PROCEDURE "DBA"."sp_Transportista_Agregar"(


in xRUC varchar(12),
in Razon varchar(80),
in Telefono varchar(15),
out ID_Transportista smallint)
BEGIN
Insert Into Transportista (RUC, Razon, Telefono)
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

32

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Values (xRUC, xRazon, xTelefono);


Set xID_Transportista = @@Identity
END

ALTER PROCEDURE "DBA"."sp_Vendedor_Agregar"(


in xApellidos varchar(40),
in xNombres varchar(50),
in xDireccion varchar(100),
in xF_Ingreso date,
in xEstado smallint,
out xID_Vendedor BigInt )
BEGIN
Insert into Vendedor (Apellidos, Nombres, Direccion, F_Ingreso, Estado)
Values (xApellidos, xNombres, xDireccion, xF_Ingreso, xEstado);

Set xID_Vendedor = @@Identity


END

2.6. Creacin de Triggers.


Los triggers son lgica de negocio asociada a eventos especficos de una tabla en
la Base de Datos. Existen 3 tipos de Eventos que ocurren sobre una tabla, que en
Terminos Orientados a Objetos se les conoce como primitivas de las clase tipo
entidad, y son de: Insercin, Actualizacin (General y Especfica de algunos
campos) y Eliminacin; los mismos que se disparan al insertar, actualizar o
eliminar cualquier fila en una tabla.

Para nuestro caso de estudio vamos a agregar 3 trigger a la tabla Compras cuya
finalidad es mantener actualizado el precio de venta actual y el stock de los
productos.

Seleccionamos la tabla Compras en el rbol de objetos y en el panel derecho


seleccionamos Pestaa Trigger, luego hacemos clic derecho y obtenemos:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

33

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Hacemos clic en <Trigger> y escribimos tI_Compras_ActualizarProducto:

Clic en <Siguiente> y marcamos <Insert>:

Clic en <Siguiente>:
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

34

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente> y marcamos <After Event>

Clic en <Siguiente>:

Clic en <Finalizar> y escribimos el siguiente cdigo:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

35

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Luego guardamos y listo, el Trigger ha sido creado, ahora aadiremos otro:

Hacemos clic en <Nuevo> y escribimos tU_Compras_ActualizarProducto:

Clic en <Siguiente> y marcamos <Actualizacin de columnas> (precio y


cantidad):

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

36

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente> y marcamos <despus del evento>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

37

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Finalizar> y escribimos el siguiente cdigo:

Guardamos y el Trigger es creado, ahora aadiremos uno para la eliminacin:

Clic en <Trigger> y escribimos tD_Compras_ActualizarProducto:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

38

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente> y marcamos <Eliminar>:

Clic en <Siguiente>:

Clic en <Siguiente> y marcamos Despus del Evento:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

39

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Finalizar>, escribimos el Siguiente cdigo y por ltimo guardamos:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

40

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

III. Framework GUI - Cliente


3.1. Fuentes de datos y DataWindow para ingreso de datos.
Para crear un objeto DataWindow primero debemos crear una fuente de datos
(DSN) y luego un perfil de conexin para esa fuente de datos.
Entonces abrimos el administrador de Fuentes de Datos (Administrador ODBC)

Luego seleccionamos la pestaa DSN de Sistema y obtenemos:

Hacemos clic en agregar:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

41

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Finalizar> y completamos tal como sigue:

Hacer clic en <Aceptar> para terminar de crear el DSN.

Ahora en el Entorno PowerBuilder vamos a crear un perfil da datos que conecte


con la fuente de datos VentaPC.
Abrimos los Perfiles de Base de Datos:

Hacer clic en <New>, establecemos el nombre del perfil =VentaPC, Data


Source =VentaPC, el usuario = DBA y la Clave = sql, y obtenemos la siguiente
ventana:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

42

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Hacemos clic en OK y finalmente, conectamos con la base de Datos.


Ahora procedemos a crear los DataWindows para el ingreso de datos:

Clic en <OK>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

43

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Luego seleccionamos la tabla Cliente

Clic en <Abrir> y configuramos la consulta de la siguiente manera:

Luego configuramos la presentacin del Datawindow:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

44

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

En el men <Rows / Update Properties> configuramos de esta manera:

3.2. Mantenimiento con Procedimientos Almacenados


El objetivo es enlazar los procedimientos almacenados ya creados con los
datawindows, para que cuando se inserte un nuevo registro en lugar de generarse
una consulta SQL de insercin se utilice el procedimiento almacenado creado para
tal fin.

Hacemos clic en el men <Rows / Stored Procedure Update> y tenemos:

Clic en <Procedure>, seleccionamos sp_Cliente_Insertar

Hacemos clic en <OK>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

45

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Ahora a cada argumento del procedimiento almacenado lo relacionamos con un


campo del DataWindow:

Finalmente hacemos clic en <OK> y guardamos.


Lo mismo hacemos para las tablas: Categora, Producto, Proveedor, transportista
y vendedor.

3.3. Ventanas para Ingreso de Datos.


Primero creamos una clase w_padre que servir de base para todas las dems
ventanas de la aplicacin:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

46

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

De w_Padre heredamos w_Class_Registrador: y le agregamos los


siguientes controles:

A esta ventana le agregamos las siguientes funciones:

Y cuyo cdigo se muestra a continuacin:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

47

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

wf_recuperar ()
// Nota: este cdigo debe ser modificado al pasar a 3 capas
dw_Ingreso.Retrieve()
wf_Modo_Edicion(False)

long wf_nuevo ()
Long Pos

Pos = dw_Ingreso.InsertRow(0)
IF Pos > 0 THEN dw_Ingreso.ScrollToRow(Pos)
wf_Modo_Edicion(True)

Return Pos

wf_modo_edicion (boolean editar)


IF Editar THEN
dw_Ingreso.Modify("DataWindow.ReadOnly=NO")
ELSE
dw_Ingreso.Modify("DataWindow.ReadOnly=YES")
END IF

cb_Editar.Enabled = Not Editar


cb_Nuevo.Enabled = Not Editar
cb_Eliminar.Enabled = Editar
cb_Guardar.Enabled = Editar

cb_Primero.Enabled = Not Editar


cb_Anterior.Enabled = Not Editar
cb_Siguiente.Enabled = Not Editar
cb_Ultimo.Enabled = Not Editar

wf_editar ()
wf_Modo_Edicion(True)

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

48

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

wf_eliminar ()
Long Pos

Pos = dw_Ingreso.GetRow()
IF Pos > 0 THEN dw_Ingreso.DeleteRow(Pos)

wf_guardar ()
//por modificar en 3 capas

dw_Ingreso.AcceptText()
IF dw_Ingreso.Update() > 0 THEN
commit;
ELSE
MessageBox("Error: ", "No se Pudo actualizar" + Sqlca.SqlErrText )
rollback;
END IF
wf_Modo_Edicion(False)

wf_anterior ()
dw_Ingreso.ScrollPriorRow( )

wf_primero ()
IF dw_Ingreso.RowCount()>=1 THEN dw_Ingreso.ScrollToRow(1)

wf_siguiente ()
dw_Ingreso.ScrollNextRow()

wf_ultimo ()
IF dw_Ingreso.RowCount()>=1 THEN
dw_Ingreso.ScrollToRow(dw_Ingreso.RowCount())
Luego de w_class_registrador heredamos a: w_categoria, w_cliente,
w_compra, w_producto, w_proveedor, w_transportista y w_vendedor

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

49

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

3.4. Ventana MDI y Men principal.


El men principal tendr la siguiente estructura (por el momento faltan los
reportes)

El cdigo para el evento clicked de Registrar Vendedor es el siguiente:

El cdigo para el evento clicked de Registrar Proveedor es el siguiente:

El cdigo para el evento clicked de Registrar Transportista es el siguiente:

Y as sucesivamente para cada una de las ventanas de la aplicacin.

3.5. Gestin de Reportes.


(Pendiente)

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

50

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

IV. Arquitectura Distribuida y EAServer


4.1. Desarrollo de Aplicaciones n-Tier con PowerBuilder
El proceso de Desarrollar aplicaciones distribuidas con PB y EAServer es el
siguiente:

Tareas en
EAServer

1. Crear Servidor (Opcional)


2. Crear Package
3. Crear Cach de Conexiones

Tareas de Target
Servidor (NVO)

Tareas de
Target Cliente

4. Definir Componente.
5. Especificar DB (Opcional).
6. Desplegar Componente.

7.
8.
9.
10.

Conectar a EAServer.
Generar Proxy de Componentes.
Instanciar el Proxy
Enviar Mensajes.

4.2. Creacin de Servidores EAServer


Para crear un Servidor EAServer Primero debemos conectarnos al Jaguar
mediante la Consola de Administracin de EAServer EAServer Manager:

Y aparecer la Herramienta de Administracin Sybase Central con un plugin que permite administrar el EAServer.

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

51

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Conectar> y aparecer el siguiente dilogo:

Seleccionamos EAServer Manager y hacemos clic en <OK>, llenamos los


datos (User Name, Host Name y Port Number):

Hacemos clic en <Conectar> y obtenemos:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

52

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Seleccionamos la carpeta Servers, hacemos <clic derecho> y se muestra:

Como ejemplo crearemos un nuevo Servidor, clic en <New Server Wizard>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

53

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Configuracin de Seguridad>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

54

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Finalizar>: y escribimos eas en los 2 cuadros de texto:

Clic en <Siguiente>, el mostrado mensaje indica que el servidor que estamos


creando deber ser iniciado manualmente segn el comando resaltado en el
rectngulo de color rojo:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

55

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Finalizar> y al presionar <F5> se refrescara la lista y mostrar:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

56

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Ahora debemos modificar los puertos por los que atender este nuevo servidor
para que no exista conflictos con el Servidor Jaguar, para lo cual
seleccionamos la carpeta Listeners del Servidor EAS_VentaPC:

<Doble clic> sobre http y escribimos 8580, luego clic en <OK>:

<Doble clic> sobre iiop y escribimos 9500, luego clic en <OK>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

57

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Y obtenemos lo siguiente:

Y esta listo para ser iniciado mediante el comando:


"\serverstart.bat" -servername EAS_VentaPC
El archivo por lotes se encuentra en la carpeta Bin del EAServer

El resultado de la ejecucin es el siguiente:


Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

58

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Las ltimas lneas indican que nuestro servidor esta listo y atendiendo.
Luego nos conectamos ingresando el password eas y el puerto 9500:

<Clic> en <Conectar> y listo, obtenemos la siguiente ventana:

En lo que resta del curso trabajaremos con el Servidor Jaguar.


Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

59

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

4.3. Creacin de Packages


Se denomina Package a un grupo de componentes relacionados, es una
coleccin de componentes que trabajan juntos para proveer algn aspecto de la
lgica de negocios de la aplicacin.
Un Package define un lmite de confianza dentro del cual los componentes pueden
comunicarse fcilmente.

Para crear el Package de nuestro caso de estudio seleccionamos el flder


Installed Package y hacemos <clic derecho> obteniendo:

Clic en <Instalar Package>:

Hacemos clic en la Segunda opcin y escribimos VentaPC:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

60

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Crear Nuevo Package>:

Clic en <OK> y listo Package creado.

4.4. Creacin de Cach de Conexiones


A travs del cach de conexiones los componentes comparten un conjunto de
conexiones preestablecidas a servidores de base de datos remotas.

Preestablecer conexiones y limitar el nmero de veces que una conexin fsica


necesita ser creada y destruida en un entorno impredecible de carga, son
actividades crticas para un desempeo eficiente.

Para crear un cach de conexiones seleccionamos la carpeta Connection


Caches y en el lado derecho hacemos <clic derecho>:
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

61

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Nuevo Cach de Conexiones>:

Clic en <Siguiente> y le damos el nombre de VentaPC:

Clic en <Siguiente> y seleccionamos tal como se muestra:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

62

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente> y llenamos con el nombre VentaPC (el DSN creado


anteriormente):

Clic en <Siguiente>, completamos User Name = DBA y Password = Sql:

Clic en <Siguiente> y seleccionamos ODBC:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

63

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente> y establecemos el tamao mnimo y mximo de conexiones:

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

64

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Finalizar>:

Clic en <OK> luego hacemos clic derecho sobre VentaPC:

Finalmente elegimos <Ping> para probar la conexin y listo.

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

65

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

4.5. Perfiles de conexin a EAServer


Antes de crear un perfil de conexin debemos verificar que el Servidor EAServer
Jaguar (Servidor por defecto) se encuentre atendiendo; para lo cual nos
dirigimos al administrador de Servicios y nos aseguramos que el estado del
servicio sea Iniciado, tal como se muestra a continuacin:

En caso de que no se visualice el Servicio Jaguar tendremos que iniciar el


servidor con el acceso directo que se encuentra en el men inicio:

Luego de que el servicio est corriendo, en PowerBuilder hacemos clic sobre el


cono de EAServer Profiles y aparecer la siguiente ventana:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

66

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

Clic en <Agregar>:

Clic en <Probar> y luego clic en <OK>:

Clic en <Hecho> y listo!

4.6. Definir Componente


Los componentes de la aplicacin son administrados en un Target creado
especficamente para este propsito, entonces aadiremos a nuestro WorkSpace
un nuevo target llamado app_VentaPC_NVO.
Hacemos clic en <Nuevo>

y seleccionamos EAServer Component:

Clic en <OK>:
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

67

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente> y escribimos app_ventapc_nvo:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

68

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Siguiente> y escribimos n_class_controlador:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

69

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente> y seleccionamos el perfil EAServer anteriormente creado.

Clic en <Siguiente> y elegimos el package ventapc:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

70

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

71

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Siguiente>:
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

72

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Finalizar> y nuestro WorkSpace queda de la siguiente manera:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

73

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Luego en el Target Servidor creamos una librera llamada dw_ventapc.pbl


para almacenar los objetos Datawindows que actualmente se encuentran en el
target cliente. Para esto hacemos <clic derecho> sobre el Targer Servidor:

Clic en <Nuevo> y escribimos dw_ventapc:

Clic en <Guardar> con lo que tenemos:


Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

74

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Aceptar> y obtenemos:

Luego movemos los objetos DataWindow de app_ventapc_gui a la librera


dw_ventapc.pbl, con lo cual el proyecto quedara como sigue:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

75

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

V. Ciclo de vida y Creacin de Componentes


5.1. Modelo del Ciclo de Vida de los Componentes EAServer.
La administracin del ciclo de vida de los componentes determina de que manera
las instancias de los componentes son:

Creadas

Enlazadas a un Cliente

Desligadas de un Cliente

Rehusadas y

Destruidas.

EAServer soporta las siguientes caractersticas en sus componentes:

Pool de Instancias

Soporte para componentes Stateful y Stateless.

El Ciclo de vida de los componentes EAServer es como sigue:


Instanciacin
En Espera
Activacin

Reciclamiento

Enlazado a
Cliente
Ejecucin de
Mtodo
(Permanece)

SI
Desactivacin
Automtica

Desactivacin
SI

Soporta
Pool de Inst.

Destruccin
NO

NO
Destruido
NO

Desactivacin
por Primitiva

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

Desactivacin
SI

76

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

5.2. Creacin de los Objetos No Visuales de la Aplicacin.


Antes de crear los objetos no visuales debemos crear un Perfil de Conexin a BD
especial, que haga referencia al Cach de conexin en el EAServer y no al DSN
de sistema. Abrimos el administrador de perfiles de conexin:

Clic en <Nuevo> y escribimos Venta_PC_EAS como nombre de perfil, luego


Seleccionamos la pestaa EAServer/COM+ y marcamos como sigue:

Los

objetos

no

visuales

(NVO)

se

crearn

por

herencia

de

n_class_controlador. A sta clase le aadiremos lo siguiente:

Variables de instancia:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

77

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Cdigo a los Eventos Activate y Deactivate:

Tambin agregaremos funciones de propsito general:


of_recuperar()

of_guardar()

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

78

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

Luego creamos, mediante herencia de n_class_controlador, a los siguientes


objetos:

n_categoria,

n_transportista,

n_cliente,

n_vendedor.

n_compra,
para

cada

n_producto,

n_proveedor,

componente

establecemos

adecuadamente la propiedad sDataWindow; por ejemplo: para el componente


n_Cliente el valor de sDataWindow ser d_Cliente; para n_Vendedor
el valor de sDataWindow ser d_Vendedor.

Luego debemos aadir estos componentes al proyecto creado, indicando que se


los va a generar.
Abrimos el proyecto p_venta_pc_nvo y en objetos seleccionados marcamos a
todos los dems componentes; esto debemos hacerlo cada que agreguemos un
nuevo componente al proyecto.

5.3. Configuracin de Componentes EAServer.


Los componentes se configurar desde la ficha de propiedades del proyecto, tal
como se muestra en las figuras que siguen.
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

79

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

Desde Powerbuilder existen 3 tipos de componentes:


Standard:

Son

el

tipo

de

componentes ms usados y soportan


manejo de transacciones, pool de
instancias y otros aspectos del ciclo
de vida de los componentes
Shared:

Permiten

informacin

de

mantener

estado.

Los

componentes Shared permiten que


mltiples clientes compartan la
misma instancia de componente.
Service:

stos

componentes

realizan procesamiento de fondo


para clientes EAServer y otros
componentes. EAServer carga el
servicio a momento de iniciar el
servidor.

Hay dos propiedades ms que debemos configurar:


Automatic Demarcation / Deactivation
Cuando esta marcado el componente
automticamente se desactiva despus de
cada llamada. Si
componente

no esta marcado el

debe

ser

desactivado

explcitamente.

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

80

Universidad Nacional del Santa

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

EAP. Sistemas e Informtica

Support

Instance

Marcamos

esta

Pooling:

propiedad

para

especificar que cada instancia del


componente siempre es reutilizada
despus que cada cliente la utiliza.

Como paso final de la configuracin de los Componentes stos deben ser


desplegados sobre el EAServer para lo cual ejecutamos el proyecto. Y como
resultado podemos apreciar lo siguiente en el Administrador EAServer:

5.4. Creacin de Objetos Proxy.


Para que la aplicacin cliente pueda invocar a los componentes que se encuentran
en el EAServer primero tenemos que crear sus objetos Proxy respectivos.
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

81

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Primero aadimos la librera VentaPC_proxy.pbl al Target app_venta_gui.

Luego hacemos clic en nuevo e iniciamos el asistente para creacin de Proxy:

Clic en <OK>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

82

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente> y escribimos p_ventapc_proxy:

Clic en <Siguiente>:

Clic en <Siguiente>, desplegamos y marcamos VentaPC:


Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

83

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente> y seleccionamos la librera ventapc_proxy.pbl:

Clic en <Siguiente> y marcar como sigue:

Clic en <Siguiente>:
Ms. Ing. Camilo E. Surez Rebaza
Versin Diciembre 2008

84

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Finalizar>, ejecutamos el proyecto y obtenemos:

5.5. FrameWork GUI con Componentes


Debemos modificar el FrameWork GUI para utilizar componentes:
Primero debemos crear nuestro objeto Conexin:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

85

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <OK>:

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

86

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente> y seleccionar el package VentaPC:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

87

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Clic en <Siguiente>:

Clic en <Siguiente>:

Clic en <Finalizar>
En la Aplicacin creamos una variable global:

Modificamos el evento open de la aplicacin:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

88

Universidad Nacional del Santa


EAP. Sistemas e Informtica

Desarrollo de Aplicaciones Distribuidas


Volumen I: Arquitectura Distribuida

Tambin modificamos el evento close de la aplicacin

A la clase w_padre le aadiremos dos variables de instancia:

A la clase w_class_registrador le modificamos las funciones wf_recuperar y


wf_guardar, tal como se muestra a continuacin:

Ms. Ing. Camilo E. Surez Rebaza


Versin Diciembre 2008

89

También podría gustarte