You are on page 1of 248

PowerBuilder Distributed Developer v10.

0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Modulo 1: Arquitectura Distribuida

1- 1
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Revisando la Arquitectura Two-Tier Arquitecturas Multitier (Distribuida) CORBA

1-2

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 2
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para:


Listar la ventajas y desventajas de la arquitectura Distribuida z Definir los componentes del estndar CORBA
z

IDL Stubs Skeletons

1-3

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 3
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Modelo de desarrollo de alto nivel


Este curso se enfoca en estos tpicos
Task Analysis Application Design / Flow Architecture (Object-Oriented) Build Interface Objects Implement Business Logic Connect with the Data Source Combine Interface, Business, and System Management Logic Deploy
1-4
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Implement System Logic

A un nivel alto, desarrollando una aplicacin two-tier, particionando una aplicacin consiste de los pasos mostrados en la diapositiva. No se tiene que abandonar la experiencia que se tiene para desarrollar aplicaciones multitier con el EAServer. Aunque hay unas diferencias, se puede perfeccionar lo que ya se sabe. Este curso se focaliza en los detalles de implementacin para los componentes de negocio desplegados al EASErver y los cambios necesarios en la aplicacin cliente para usar estos componentes. Esta no es una clase de Diseo; sin embargo, los pasos de diseo son crticos para este ambiente. Muchos desarrolladores ven que ellos tienen ms cambios en la fase de diseo que la fase de implementacin de una aplicacin multitier. Esta clase seala las buenas y malas estrategias y le da la oportunidad para definir y construir un componente EAServer ancestro para sus componentes de negocio. Se debera, sin embargo, buscar informacin adicional para la fase de diseo.

1- 4
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Revisando la arquitectura Two-Tier


Cliente
Vendor / PlatformPlatform-Specific API

Servidor de Base de Datos

z z

Interfaz de usuario Alguna lgica de negocio

z z

Administracin de los datos Lgica de negocio propietario en procedimientos almacenados y triggers

1-5

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Las caractersticas de las aplicaciones two-tier incluyen:


Trabajo grupal/departamental Ud. Controla el nmero de clientes, y por consiguiente el nmero de transacciones. Ud. Controla la plataforma (s).

1- 5
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Problemas con la arquitectura Two-Tier


El manejo del cdigo no particionado Volver a probar los cambios La administracin de la mquina cliente El despliegue de cambio de la aplicacin a los mtilples clientes La administracin de la performance Dejando la inversin del Hardware existente

Falta de control centralizado Dficil de implementar la seguridad Cuello de bolletas en el servidor de la base de datos/ por la muchas conexiones Lgica de negocio almacenada en la base de datos escrita en el lenguaje propietario

1-6

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 6
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Arquitectura Multitier (Distribuida)


Cliente Servidor de Servidor de Aplicaciones base de datos

z z

Interfaz de usuario Alguna lgica de negocio (reducida)

z z z z

Lgica de negocio z Administracin de los datos Caching Manejo de las transacciones Transparencia de la ubicacin de los datos Balanceo de carga

1-7

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Caractersticas de la arquitectura Multitier nmero imprevisible de clientes/transacciones Aplicaciones abiertas a la Internet/extranet Principios de la arquitectura Multitier Encapsula o particiona la lgica de negocio en objetos. Mueve o distribuye la lgica de negocio a una mquina dedicada. Proporciona acceso a los objetos almacenados en un servidor de aplicaciones. El servidor de aplicaciones recibe los requerimientos de procesos desde los clientes. El servidor direcciona los requerimientos a los objetos de negocio para procesar. Ejemplos: Lgica de Negocio: autorizacin de tarjeta de crdito, carga de impuestos Cache de datos estticos: Estados, partes/productos Servicios para recursos especializados: Gateway para mainframe/fax server

1- 7
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ventajas / Desventajas

Ventajas
z z

Desventajas
z

z z z z

Cientes ms delgados Disminuye la administracin del cliente Encapsulacin de la lgica Mejor perfomance Escalabilidad Consistencia, control y seguridad Reutilizacin de componentes existentes Posicionamiento para la Web

z z

Cambios en los hbitos de programacin Ms curvas de aprendizaje Mayor tiempo en el inicio del diseo y desarrollo Ms puntos de falla

1-8

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 8
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tres principales razones para moverse a n-tier


Ms escalable Mayor reutilizacin de objetos Planeando un futuro desarrollo web/wireless

1-9

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 9
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

CORBA
C PB ORB IIOP ORB C

Java PB

Java

ORB C

Java PB
1 - 10

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

CORBA proporciona comunicacin para cualquier lenguaje hacia cualquier lenguaje y cualquier plataforma.

plataformas soportadas:
z

Plataforma independiente Lenguaje independiente

Lenguajes y componentes soportados:


z

1- 10
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes CORBA soportados en EAServer


CORBA-Java PowerBuilder Non-Visual Objects CORBA C++ / C ActiveX EJB (Enterprise Java Beans)

1 - 11

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Los componentes CORBA-Java CORBA-Java siguen al modelo de componente CORBA y usan la interface estndar de CORBApra el manejo de transacciones. Cualquier clase Java con la conducta de un nonvisual puede ser adaptado para ejecutarse como un componente EAServer. Los componentes PowerBuilder NVO usando PowerBuilder 7.0 o superior, puede crear objetos no visuales(NVOs) que pueden correr nativamente en EAServer como un componente EAServer, entonces use los proxies en aplicaciones cliente PowerBuilder Los componentes EAServer CORBA C++ y los componentes C++ son clases C++ que contienen mtodos con similar prototipo para la interfaz del componente EAServer.

Los Enterprise Java Beans pueden ser accesado desde clientes PowerBuilder a travs de los mappings EJB-CORBA.

1- 11
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Qu es CORBA?
Common Object Request Broker Architecture Estndar de la arquitectura del objeto distribuido desarrollada por el Object Management Group (OMG)

Establecido en 1989 z Incluye a 800 compaas (IBM, SUN, Oracle, Sybase, ...) z No incluye Microsoft
z

DCOM compite con CORBA

Vendedor-independiente Separa la interfaz de la implementacin

1 - 12

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

La OMG proporciona las especificaciones y estndares. OMG no proporciona el software o implementaciones. Varios vendedores implementan las especificaciones. Un rasgo llamativo de CORBA es que escribe los software que interoperan con otros softwares via el bus objeto, solo se necesita conocer la interfaz del software; no se necesita conocer cualquier detalle de la implementacin.

1- 12
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Interfaz Versus Implementacin

Implementacin

on off

Interfaz Interfaz remoto= Stub (o Proxy)


1 - 13
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 13
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

CORBA Interface Definition Language


module finance { interface Loan { double calculate(in double amount, in long months); }; };

on off

1 - 14

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El module es un paquete o un container de clases relacionadas (como una amortizacin, finanzas, o una orden de entrada). La interfaz define una firma del mtodo. Note que no hay ningn detalle de implementacin en la especificacin del IDL. CORBA soporta un grupo de tipos de datos estndar. Estos tipos de datos deben ser mapeados para los varios lenguajes de implementacin (como Java y C/C++). En CORBA, las interfaces son especificadas en una manera orientada a objetos usando el Lenguaje de Definicin de Interfaz (IDL). Se usa el IDL para definir los objetos del componente (o tipos de datos), incluyendo cosas como la herencia, atributos, eventos, y mtodos (incluyendo sus parmetros y excepciones). Los mtodos especificados en el IDL pueden ser implementados en, o invocados desde cualquier lenguaje para que los IDL mapeados puedan estar definidso. No se especifica cualquier detalle de la implementacin en el IDL, as que el IDL es estrictamente declarativo y relativamente simple. La sintaxis del IDL es un subconjunto de C++, incluyendo las macros de preprocesamiento y pragmas, con algunas palabras claves para los conceptos de la computacin distribuida. La independencia del Lenguaje del IDL provee flexibilidad. Esto le d libertad para que puedas escoger el lenguaje de programacin y plataforma para cada componente en tu aplicaicn y te permite integrarlo con tus componentes existentes. Para usar componentes heredados, se puede modelarlos en el IDL y entonces escribir el cdigo de la envoltura en el lenguaje del legado para trasladarlo desde la interfaz de definicin del IDL hasta la interfaz del legado. Asi que la lgica de negocio que est implementado puede ser hecha en objetos CORBA. Se puede entonces ensamblar estos componentes como bloques de construccin para nuevas aplicaciones distribuidas.

1- 14

Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

CORBA IIOP Method Invocation


Client Object Implementation Object 9. Invoca la implementacin Skeleton 5. Reenvia el requerimiento 8. Desempaqueta

1. Invoca el mtodo 2. Empaqueta Stub Object

3. Enva el requerimiento

7. Invoca el mtodo ORB 6. Identifica el objeto destino

ORB 4. Localiza el ORB destino IIOP


1 - 15

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Para la invocacin esttica, la aplicacin cliente necesita tener conocimiento de los servicios del objeto que deber necesitar, as que la especificacin IDL debe ser incorporada en el cliente como un objeto servidor, usando el lenguaje de programacin escogido. Se debe tener cuidado de esto por usar el compilador del IDL (proporcionado por el vendedor de su ORB) para compilar el IDL en las rutinas del stub en el lado del cliente y cdigo del skeleton del lado del servidor. Este diagrama muestra los procesos de un mtodo en un objeto remoto. Porque el objeto est en una mquina diferente, el requerimiento simplemente no puede enviarse de un objeto a otro. Esto puede ser empaquetado (encriptado) para que esto puede ser enviado sobre la red. Ambos tanto la mquina que envia y la que recibe deben tener el mismo protocolo (Internet Inter-ORB Protocol, o IIOP). El requerimiento entonces necesita ser desempaquetado (desemcriptado) y finalmente, los mtodos de la implementacin pueden ser invocados.

el objeto stub encripta los requerimientos y los somete al ORB del lado del cliente. el ORB encuentra el ORB destino en la red y envia el requerimiento.

el IIOP define una norma para enviar el requerimiento del ORB encima de algunos protocoloes de comunicacin de bajo nivel. el ORB destino recibe los requermientos y direcciona al objeto apropiado. The skeleton unmarshals the request and invokes the implementation object. el objeto de la implementacin contiene la lgica que comprende las reglas de negocio.

1- 15
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

CORBA - Stubs
Objetos proxy local Empaqueta los requerimientos de la invocacin de los mtodos Provee transparencia de la ubicacin Implementa la misma interfaz como el objeto remoto deseado Implementa el IDL-defined de los mtodos en el lenguaje de programacin

1 - 16

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El stub contiene todos las firmas de un objeto remoto sin los detalles de la implementacin. El stub tambin contiene la lgica para empaquetar todas las invocaciones de los mtodos para que esto pueda ser enviado sobre la red.

1- 16
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Object Request Broker (ORB)

Maneja todas las comunicaciones entre los objetos dentro de un sistema de objetos distribuidos:
1. Acepta los requerimientos de los clientes 2. Localiza y activa los objetos destinos
a. identifica la mquina que ejecuta el objeto del servidor b. pide al ORB de la mquina una conexin al servidor

3. Direcciona el requerimiento y recibe la respuesta

1 - 17

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 17
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

CORBA - Skeleton
Implementa los mecanismos para los requerimientos de invocacin hacia el servidor para ser desempaquetados y direccionados al mtodo correcto. Son la colas de la implementacin del objeto para el runtime del ORB Desempaqueta los argumentos de los mtodos Tambin conocido como las clases base de la aplicacin

1 - 18

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 18
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Implementacin
Define el comportamiento para todas las operaciones y atributos de la interfaz que soporta Es creado usando un lenguaje de programacin o modelo de componente como PowerBuilder, Java, C, C++, o ActiveX

1 - 19

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 19
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Servidor
Programa que contiene la implementacin de uno o ms tipos de objetos Provee un ambiente para almacenar los componentes Instancia los objetos CORBA Aplica la seguridad Maneja:

Transacciones z Failover z Balanceo de carga


z

1 - 20

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El servidor tambin aplica la seguridad, maneja las transacciones, maneja el failover, maneja el balanceo de carga

1- 20
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
CORBA separa la interfaz de la implementacin de un componente. La interfaz de un objeto es descrito usando el Lenguaje de Definicin de Interfaz (IDL). Los Stubs son objetos local proxy y delega la invocacin de los mtodos a la implementacin del objeto remoto

1 - 21

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 21
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 2: El EAServer

1- 22
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Los problemas con la Arquitectura Distribuida Roles de un Component Transaction Server (CTS) Ambiente del EAServer

Servidor z Componentes z Packages z Repositorio


z

1 - 23

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 23
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para:


Iniciar el EAServer z Conectarse a un servidor EAServer a travs del EAServer Manager y navegar en el IDE EAServer Manager z Examinar el log del servidor desde una ventana y desde el EAServer Manager z Describir el rol de un Component Transaction Server (CTS) y dar ejemplos
z

1 - 24

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 24
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Problemas con la Arquitectura Distribuida


Cuntas instancias de un componente se pueden tener? Cuntas conexiones a una base de datos de pueden tener? Cmo se puede manejar las transacciones entre muchos componentes? Quines pueden acceder al servidor?

1 - 25

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 25
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Roles de un Servidor de Aplicaciones

Para manejar eficientemente z La instanciacin y Ciclo de Vida de los Componentes z Conexiones a la base de datos z Transacciones z Seguridad:
Server

1 - 26

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 26
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Experiencia Requerida
Business Developers Ciclo de vida
accion es

ds rea Th

Trans

Se g u r ida d

GUI Developers

Componentes

System Developers
1 - 27
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

EAServer maneja mucho del desarrollo de los niveles del sistema, as que se puede focalizar en la lgica de negocio.

1- 27
Derechos Reservados de TechEra e-Learning

Co n e ccion

es

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Roles de un Component Transaction Server (CTS)

Provee un framework para desplegar la lgica de la capa media de una aplicacin distribuida basada en componentes Provee soporte para:
z z z z

La administracin del ciclo de vida de los componentes El Connection caching La administracin de las transacciones La Seguridad

1 - 28

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

EAServer proporciona un ambiente de ejecucin para tus componentes distribuidos. Esto almacena tus componentes mientras proporciona servicios como uno de los listados en el slide como servicios de componentes y objetos compartidos. Como se ver en los dems slides, EAServer tambin provee el Jaguar Manager, que es una interfaz simple de administracin para los servidores EAServer eso le permite cambiar las propiedades a travs de la interfaz.

1- 28
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Administracin del Ciclo de Vida de Componentes

Define como los componentes son:


z z z

Instanciados Ligados a los clientes Destruidos

Provee soporte para el instance pooling

1 - 29

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Limitar el nmero de objetos instanciados y la cantidad de tiempo que una instancia es ligado a un cliente es crtico en un ambiente WebOLTP con cientos o miles de requerimientos.

1- 29
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El Connection Caching

Los Componentes comparten un pool de conexiones preasignadas al servidor de la base de datos remoto

Connection Cache

1 - 30

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Controlar el nmero de conexiones y el tiempo de una conexin fsica que necesita ser creado y destruido en ambientes impredecibles son criticos para una performance eficiente. El Connection Caching le permite controlar el nmero de conexiones a su base de datos.

1- 30
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Administracin de las Transacciones

Le permite definir la semntica transaccional de un componente parte de la interfaz del componente

1 - 31

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Ud. Puede determinar como los componentes EAServer pueden manejar las transacciones y que roles pueden jugar en una transaccin. Ud puede cambiar el manejo de la transaccin sin cambiar el cdigo en su componente, haciendo cambios en la hoja de propiedades con el Jaguar Manager.

1- 31
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Administracin de la Seguridad

El soporte basado en roles para la autenticacin y autorizacin de usuarios La autenticacin de los usuarios cuando la aplicacin cliente crea los stub La lista de control de acceso para componentes que determina que usuarios pueden ser permitidos para invocar el componente
z

Si un usuario no est autorizado, falla la creacin del stub

Soporta certificados digitales Soporta el Secure Socket Layer (SSL)


TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1 - 32

Potencialmente, cualquiera en internet podra conectarse y usar su aplicacin. La seguridad es ms importante en este ambiente. EAServer te permite que tu implementes un sistema de seguridad o liberes un sistema de seguridad establecido. La seguridad puede ser aplicada a los package, el componente o a un nivel de mtodo.

1- 32
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Clientes y Componentes soportados

Java HTML

COM

IIOP/TDS

PowerBuilder MASP

SQL CORBA

EAServer

1 - 33

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

EAServer soporta los siguientes clientes: PowerBuilder Java: JDK 1.22, 1.3 usando un EAServer CORBA-compliant ORB o cualquier otro CORBA-compliant Java ORB; Enterprise Java Bean (EJB) tambin soportado componentes ActiveX usando el EAServer ActiveX proxy C++ usando un EAServer CORBA-compliant ORB o cualquier otro CORBA-compliant C++ ORB Mtodos como stored procedures (MASP); cualquier database-aware lenguaje/herramienta que pueda ejecutar procedimientos almacenados ASE clientes HTML ultraliviano usanod una extensn de Web server (como el PowerDynamo) CORBA (un cliente CORBA es una aplicacin escrita lenguaje con mappings CORBA) EAServer soporta los siguientes componentes: PowerBuilder custom class user objects (CCUOs) Java: Java Development Kit (JDK) 1.1 o superior; soporta la especificacin EJB (1.0, 1.1, 2.0) ActiveXs (solo Windows NT o Windows 2000): la interfaz MTS soportada permite mover fcilmente los componentes almacenados en el Microsoft Transaction Server (MTS) al EAServer C, CORBA C++

1- 33
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Soporta J2EE
EJB 2.0 J2EE applications J2EE Web Applications Object Caching JavaMail electronic mail API Java API for XML Parsing Java Authentication and Authorization Services

1 - 34

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

EAServer est certificado en Sun J2EE compliant

1- 34
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ambiente del EAServer


El servidor Jaguar Requerimientos IIOP Libreras Clase 9000 Requerimientos TDS 7878 Requerimientos HTTP 8080

Package

Componentes

EAServer Manager
1 - 35

Repositorio

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El ambiente del EAServer consiste de:


Servidor El Jaguar Manager (un plug-in para el utilitario Java Sybase Central) Componentes Packages (contenedores de componentes relacionados)

Repository (una colecin de archivos leibles que contienen las propiedades de informacin para los componentes) Un conjunto de libreras clases para soportar varios lenguajes/Herramientas ORB y compiladores IDL

El servidor Jaguar acepta requerimientos IIOP porque IIOP es un estndard CORBA. Acepta requerimientos TDS para la compatibilidad dirigida hacia atras con versiones 1.x. el servidor acepta requerimientos HTTP y puede tambin ser usado como un servidor de pginas.

1- 35
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Servidor EAServer

Provee un ambiente de ejecucin para los componentes Maneja los requerimientos de los clientes Instancia los componentes Maneja la seguridad, transacciones, el conection caching, el balanceo de carga y el failover. Definido usando el EAServer Manager El servidor por defecto es nombrado JAGUAR

1 - 36

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

En general, el ambiente en tiempo de ejecucin que almacena los componentes es llamado un servidor EAServer. Se puede crear servidores especficos para diferentes aplicaciones.

Especialmente, EAServer tiene un servidor por defecto, nombrado Jaguar.

EAServer soporta IIOP porque es un estndard CORBA. TDS es soportado para clientes MASP y la compatibilidad con versiones anteriores de EAServer. HTTP tambin es soportado. EAServer puede actuar como un simple Web server.

1- 36
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Iniciando el EAServer

1 - 37

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 37
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Conectndose al EAServer - EAServer Manager

1 - 38

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El Jaguar Manager es un Java Sybase Central especial, que maneja los componentes, la seguridad. Esto es una herramienta de administracin. Para los desarrolladores PowerBuilder, algunas de las funcionalidades del Jaguar Manager es ahora localizada en el PowerBuilder IDE via el System Tree y las hojas de propiedades desde los objetos projects.

1- 38
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El EAServer Manager

1 - 39

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Con el Jaguar Manager, ud. puede:


Configurar y administrar servidores, packages, y componentes Generar un archivo IDL en un ambiente point-and-click Generar los stubs y los skeletons Define las propiedades de execution-time, como:
z
z z z

El ciclo de vida de los Componentes


Las caractersticas de las Transacciones El modelo Threading La Seguridad

Monitorerar la performance en execution-time Configurar los clusters Crear y administrar los connection caches

1- 39
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Examinando el log del Servidor

1 - 40

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 40
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Qu es un Componente EAServer?

Una definicin de un componente consiste de:


Asignacin de mtodos z Modelo de Componente z Soporte de transacciones z El nombre de la clase Java o librera ejecutable que implementa el componente (PBD, DLL, )
z

1 - 41

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 41
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Qu es un Package EAServer?

Grupo de componentes relacionados Coleccin de componentes que trabajan en conjunto para proveer aspectos de la lgica de negocio para la aplicacin Define un limite de confianza entre los componentes para comunicarse ms fcilmente Unidad de distribucin, que agrupa los recursos de la aplicacin para un fcil despliegue y manejo

1 - 42

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 42
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El Repositorio EAServer

El Repositorio EAServer contiene:


z

Informacin de la configuracin para cada servidor EAServer Los datos para los packages, componentes y mtodos de la aplicacin

El servidor EAServer usa el repositorio para encontrar e invocar los componentes


TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1 - 43

El repositorio es un conjunto de archivos que ud. Puede revisar con un editor de texto.

Los servidores en la misma instancia del EAServer comparten los mismos archivos del repositorio.

1- 43
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Libreras Clase / Virtual Machines

El Jaguar provee un conjunto de libreras clase y virtual machines


z

Una librera clase/virtual machine para cada lenguaje/modelo soportado por Jaguar Lenguaje / model-specific implementaciones de servicios EAServer Usado para implementar los servicios EAServer en componentes

Las libreras Clase / virtual machines son:


z

PowerBuilder

EAServer almacena el virtual machine para PowerBuilder versiones 7, 8 y 9 Los Componentes escritos y desplegados en PowerBulder 7 no necesitan ser recompilados y desplegados.

1 - 44

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 44
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Mltiples PowerBuilder VM Support

La nueva propiedad del componente indica la versin del PowerBuilder VM para utilizar con el componente.

1 - 45

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Hay una nueva Declarative Component Property definida en EAServer 3.6 y superior para soportar los mltiples PowerBuilder VMs. Esto es com.sybase.jaguar.component.pb.version. Esta propiedad no es presentada para componentes PowerBuilder desplegados desde PowerBuilder 7.x. Si la propiedad no es presentada por defecto en EAServer (Jaguar) para PowerBuilder 7.x VM. Los componentes desplegados desde PowerBuilder 8.0 tiene esta propiedad definida automtica con el EAServer.

1- 45
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
EAServer provee un framework para desplegar la lgica de la capa media. EAServer provee soporte para el ciclo de vida de los componentes, las conexiones, transacciones, thread, y administracin de la seguridad.

EAServer soporta PowerBuilder, Java, ActiveX, C, C++ , y los componentes Enterprise Java Bean (EJB).

1 - 46

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 46
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen

EAServer soporta clientes PowerBuilder Java, ActiveX, C++, MASP, y HTML. Un package es una coleccin de componentes que trabajan en conjunto con aspectos de la lgica de negocio de la aplicacin. El Jaguar Manager es usado para configurar y manejar los servidores, packages y componentes.

1 - 47

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 47
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 2-1: Familiarizndose con el EAServer


El laboratorio es localizado en el Libro de Laboratorio Referenccias: Gua de Tareas

Iniciando el EAServer z Iniciando el Jaguar Manager z Viendo el Server Log File


z

1 - 48

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 48
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 2-1 Preguntas


Explicar las diferencias entre el servidor EAServer y el EAServer Manager Liste algunas propiedades para el servidor, packages, componentes, mtodos, connection caches Preguntas de los participante sobre este laboratio?

1 - 49

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 49
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 3 : Manejando los Exception en PowerBuilder

1- 50
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Evento Error Sentencias de Manejo de los Exception Jerarqua del Exception System Class Emitiendo Exceptions Custom Exception Classes

1 - 51

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 51
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, Ud. ser capaz de


Crear un Custom Exception Class z Modificar el signature de un mtodo para emitir un exception z Invocar un custom exception z Desarrollar lgica en PowerScript para Capturar y Manejar los Exceptions
z

1 - 52

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 52
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Evento Error
Todava mantenido para compatibilidad con versiones anteriores Si no hay cdigo en el evento Error, la informacin ser pasada al objeto RuntimeError

DWRuntimeError z OLERuntimeError
z

El Error puede ser manejado en un bloque TRY-CATCH

1 - 53

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Los eventos de Error pueden tambin ser emitidos por un error de comunicacin encontrados en una conexin cliente al EAServer El evento Error todava es contenido en los siguientes objetos:
z z z z z z z

Connection DataWindow DataStore JaguarORB OLE OLEObject OLETxnObject

1- 53
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Qu es un Exception?

Los Exceptions son objetos que se activan en alguna condicin o error y son usados para describrir la condicin o error encontrado. Ejemplos:
Referencia a objeto Null z Divisin por cero z Invalido nombre de columna DataWindow
z

1 - 54

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Los errores Standard, como una referencia a un objeto nulo o divisin por cero, son tpicamente emitos por el runtime system. Estos errores podran ocurrir en cualquier parte de la aplicacin y Ud. puede incluir clusulas catch en cualquier script ejecutable para poder controlar estos errores. Manejar un Exception le permite a Ud. disear una aplicacin para que pueda recuperar desde condiciones excepcionales y continuar la ejecucin. Cualquier exceptions que son un descendiente de RuntimeError que Ud. no captura son manejados por el runtime system y puede resultar en la finalizacin de la aplicacin. En PowerBuilder esto es manejado por el evento del Application el SystemError.

1- 54
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Manejando Exception en PB 9.0

El manejo del Exception es como Java


Bloque de sentencias Try .. Catch .. Finally z Sentencias Throw y Throws z Exceptions definidas por Usuario
z

Los errores de los Componentes en EAServer pueden ser mejor manejados

1 - 55

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Con la adicin del manejo del exception, los clientes PowerBuilder estn hbiles para capturar los exceptions a travs de los componentes EAServer (CORBA, EJB, PB) y recuperarlo desde estos. Los componentes desarrollados con PowerBuilder pueden tambin definir y emitir sus propios tipos de exception, hacindoles ms consistentes con otros tipos de Componentes EAServer como Java. El manejo del Exception es realizado como los Lenguajes Orientados a Objetos, como Java, C++ y Ada. La implementacin en PowerBuilder es similar a la implementacin del manejo de exception en Java.

Esto significa que Ud. puede manejar los errores de cdigo en cualquier parte de su aplicacin en lugar de un solo evento del error global.

1- 55
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Sentencias para el manejo del Exception


TRY Inicia el bloque de cdigo CATCH coge un exception especfico, puede tener muchas condiciones catch como se necesite FINALLY realiza el trabajo de limpieza sin saber si el bloque fue satisfactorio o no END TRY Termina un bloque TRY..CATCH..FINALLY

1 - 56

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

TRY Inicia un bloque de cdigo que puede posiblemente emitir uno o varios exceptions que Ud. desee, sin tener el exception que ser enviado al evento SystemError del objeto Application. El bloque TRY puede contener uno o ms sentencias PowerScript. Esto debe ser seguido por uno o ms bloques CATCH o un FINALLY. CATCH Especifica el tipo de exception que Ud. desea capturar explicitamente. El bloque CATCH puede manejar y procesar el exception permitiendo a la aplicacin recuperarse y continuar adelante o esto puede re-emitir el exception.

FINALLY Es una clusula opcional que aparece despus de todos los bloques CATCH dentro del bloque TRY. Los bloques FINALLY son usados para continuar el cdigo que Ud. ejecuta sin tener en cuenta si el bloque TRY gener un exception o no.

END TRY Es usado para indicar el fin de un bloque TRY..CATCH..FINALLY y aparece como la ltima sentencia en el bloque.

1- 56
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Jerarqua del Exception System Class

Checked Unchecked

1 - 57

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Los PowerBuilder runtime errors son representados por la clase jerarquica RuntimeError. El RuntimeErrors puede ser capturado en bloque de cdigo TRY-CATCH-FINALLY-END TRY. No es necesario declarar donde una condicin de error pueda Ocurrir (PowerBuilder lo hace por Ud. desde donde un error de Sistema puede suceder en cualquier momento que la aplicacin que se est ejecutando). Estas exception classes son conocidas como Unchecked exceptions.

El system class Exception puede ser usado como una clase ancestro para tipos de exception definidos por usuario. Es la clase raz para todos los exceptions checked. Checked exceptions son exceptions definidos por el usuario que deben ser capturados en un error de TRY-CATCH, o debe ser declarado en el prototipo de un mtodo cuando emite fuera de un bloque TRY-CATCH.

1- 57
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Manejando un Exception
Double ld_num ld_num = Double (sle_1.text) TRY sle_2.text = string (acos (ld_num)) CATCH (runtimeerror e1) MessageBox("Runtime Error", e1.GetMessage()) FINALLY // Adicione el cdigo de limpieza this.of_cleanup() END TRY MessageBox(Despus", Hemos finalizado.")

1 - 58

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Este es un ejemplo de un bloque TRY-CATCH-FINALLY que captura un system error cuando un argumento arccosine, ingresado por el usuario de aplicacin (en un SingleLineEdit) no est en el rango requerido. Si Ud. no captura este error, la aplicacin terminar. Esto es importante para ordenar su clusula CATCH. Esto ocurrira si la primera clusula CATCH captura un exception de tipo Exception y una subsecuente clusula CATCH captura un descendiente del Exception. Desde que ellos se procesan en orden, cualquier exception emitido que es un descendiente de Exception debera ser manejado por la primera clusula CATCH y nunca por el segundo. El compilador PowerScript detectar esta condicin y emitir un error si lo encontr.

1- 58
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Las capas de Manejo de Error para clientes conectados a EAServer


Manejando el Exception Objetos en el Evento Error

Connection z JaguarORB
z

Evento SystemError

1 - 59

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

PowerBuilder proporciona tres capas de manejo de error que pueden ser usados por clientes que se conectan a EAServer:

Un mecanismo, usando bloques try/catch/finally, para el manejo de exceptions emitidos por componentes ejecutndose en EAServer. Todos los errores system y runtime son convertidos en objetos que descienden del tipo RuntimeError. El evento Error en los objetos Connection y JaguarORB para manejar errores que ocurren en el contexto de una conexin EAServer. El evento SystemError de un objeto Application para manejar errores que no han sido capturados por otros mecanismos.

1- 59
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Manejando Exception en un Cliente PowerBuilder a EAServer


TRY ... // invoque los mtodos CATCH (corbacommfailure cf) ... // Un componente abort la transaccin EAServer, // o la transaccin estuvo fuera de tiempo. Reitente la // transaccin si lo desea. CATCH (corbatransactionrolledback tr) ... // posiblemente reintente la transaccin CATCH (corbasystemexception se) ... // informa el error pero no pruebe reintentarlo FINALLY // poner el cdigo de limpieza aqu END TRY
1 - 60
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Una aplicacin cliente puede manejar los errores de comunicacin de varias maneras. Por ejemplo, si un cliente se conecta a un servidor y proeba el invocar a un mtodo de un objeto que no existe, el cliente puede desconectarse del servidor, conectarse a un servidor diferente y reintentar la operacin. Alternativamente, el cliente puede mostrar un mensaje al usuario y darle la oportunidad para controlar lo siguiente. Cuando un error ocurre, si el cliente se conecta a un nuevo servidor para reintentar la operacin, esto debe instanciar el objeto remoto del nuevo servidor antes de invocar un mtodo del objeto remoto. CORBA proporciona una manera estndar para que los componentes indiquen el error o warnings. CORBA soporta dos tipos de exceptions:
1.

System exceptions, Un system exception es uno de los erroes estndar levandos por el servidor. Estos exceptions son definidos en la especificacinCORBA. Exceptions definidos por el usuario, un user-defined exception es un error o warning defnido en el IDL del componente. Un exception de usuario es un nuevo tipo de dato que describe un conjunto de elementos de datos que son retornados al cliente cuando el exception es levantado.

2.

1- 60
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Funciones para el manejo del Exception

GetMessage()
z

Retorna el mensaje de error del tipo de objeto Throwable

SetMessage(newMessage)
Pone un mensaje de error para el tipo de objeto Throwable z Usado para poner un mensaje personalizado en un objeto exception definido por el usuario z newMessage es una cadena conteniendo el mensaje que se desea poner.
z

1 - 61

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 61
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Custom Exception Classes


Son definidos como Standard Class User Objects Son tres tipos de Standard Class para escoger:

Throwable ancestro de todos los Exceptions z RuntimeError ancestro del Unchecked Exceptions z Exception ancestro del Checked Exceptions
z

1 - 62

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Throwable es la clase ancestro de todos los exceptions, para ambos el Checked y el Unchecked. Los descendientes que crea del Throwable son Exceptions Checked. En la mayora de situaciones Ud. no estara utilizando este tipo de Standard Class User Object. En cambio use el Exception para definir su propia clase Checked Exception. El RuntimeError debe ser utilizado cuando Ud. desea crear una exception Unchecked que no necesita ser capturado por un bloque TRY CATCH. Si no lo captura explcitamente, las Exceptions Unchecked se irn al evento SystemError del Objeto Application dentro de una aplicacin PowerBuilder. El Exception es el ancestro comn para los Exceptions Checked que Ud. crea. Como todas las jerarquas de herencia, definir una clase base de exception proporciona la flexibilidad para hacer cambios y mejoras que sern realizados por todos los descendientes de un solo origen. Este es el tipo de clase que es utilizado para crear clases custom exception para componentes PowerBuilder desplegados al EAServer.

1- 62
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Definiendo un Custom User Exception

1 - 63

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Seleccionando el exception de la lista permite que Ud. defina un descendiente del PowerBuilder System Class Exception.

1- 63
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Creando un Custom Exception Classes

Propiedad Propiedadpara para Sostener Sostenerla la sentencia de Error sentencia de Error Funciones Funcionespara para Obtener Obtenery yPoner Poner sentencias sentenciasde deError Error

1 - 64

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

La propiedad text es usado para contener la sentencia de error, la razn por la que ocurri el exception.

El Getmessage() proporciona una interfaz programatica para obtener el valor del texto y debe ser utilizado en lugar de accesar a la propiedad de texto directamente.

El Setmessage() proporciona una interfaz programtica para cambiar el valor del texto. La mejor prctica es llamar este mtodo para cambiar el valor de texto como el mtodo puede tener que ser extendido para aparecer en la propiedad del texto, en lugar de reemplazarlo.

1- 64
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Poniendo un mensaje personalizado


Defina un mensaje estandar en el campo Text. setmessage() puede extenderse.

1 - 65

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El Setmessage() puede ser extendido pero no el Getmessage(). Esto es debido a las restricciones del CORBA IDL. El SetMessage() y GetMessage() son mtodos estandard de la clase CORBA IDL Exception.

1- 65
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Sentencias que levantan los Exception


THROW causa una condicin exception para existir THROWS puede agregarse al prototipo de una funcin para indicarle la capacidad al mtodo para levantar un tipo de exception

1 - 66

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

THROW Sentencia usada para emitir un exceptin con cdigo. Debe seguirse inmediamente por un objeto exception vlido dentro de la gerarqua de la clase throwable. Trabaja como una sentencia de RETURN inteligente. Ninguna lnea de cdigo dentro del mtodo que aparece despus de que la declaracin de THROW se ejecuta a menos que el cdigo se contenga dentro de un bloque TRY.

THROWS Clusula definida dentro de un mtodo. Las funciones y eventos soportan la definicin de la clusla THROWS. Su presencia le dice al compilador el tipo de de mtodo del objeto(s) throwable que es permitido para emitir el cdigo que invoca este mtodo. Los exceptions Unchecked (class RuntimeError y sus descendientes) no tienen que ser explicitamente definidos con la clusula THROWS para el mtodo para que ellos puedan ser emitidos por su cdigo. Los exceptions Checked (clase exception y sus descendientes) necesitan ser explicitamente defnidos en las clusulas THROWS para el mtodo.

1- 66
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Los Mtodos pueden levantar Mltiples Exceptions

Mltiples exceptions pueden ser separados por una coma en la clusula throws

1 - 67

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 67
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Emitiendo Custom Exception Classes

1 - 68

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Para implementar este exception custom con un componente Ud. debe:


z z z

Definir una variable de tipo nex_outofstock Instanciar el exception Lanzar el exception

Para que el mtodo soporte emitir nuestro exception debemos de definir que el mtodo sea capaz de lanzar el nex_outofstock. Esto es cumplido a travs del campo Throws en la declaracin del prototipo del mtodo. La falla para definir esto resultar en un error de compilacin. Recuerde que estos son Exceptions Checked que deben ser capturados en el mtodo o emitidos fuera del mtodo donde ocurre el exception. Un mtodo puede soportar emitir ms de un exception. Separe cada exception en el campo Throws con una coma.

1- 68
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Un Exception es un objeto que puede ser emitido en el evento de condicin excepcional o error. PowerBuilder 9 soporta exceptios Checked y Unchecked. Exceptions Unchecked no tienen que ser manejadas dentro de un script. Exceptions Checked deben ser manejados, un error de compilar resulta si dejo sin verificar y si el mtodo no tiene definido el exception.

1 - 69

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 69
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Las sentencias CATCH deben ser ordenadas basadas en su jerarqua de herencia, Iniciando con los descendientes. El bloque FINALLY siempre se ejecuta sin saber si se ejecut un exception o no. El GetMessage y SetMessage pueden ser usados para mostrar o modificar mensajes de errores Los Custom Exception Classes son Standard Class User Objects Tres tipos de Standard Class para escoger:

Throwable ancestro de todos los Exceptions z RuntimeError ancestro de Unchecked Exceptions z Exception ancestro de Checked Exceptions
z 1 - 70
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 70
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 3 1

Crear una clase exception user-defined nex_negative Modificar la signatura de una funcin para emitir un exception Manejar el exception desde un cliente

1 - 71

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 71
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 3

1 - 72

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 72
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 3 Interrogantes

Prototipo de una funcin throws exception


Signature refleja el exception que ser emitido Debe ser instanciado Emite cuando detecta un error

1 - 73

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 73
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 3 Interrogantes

Todos los exceptions emitidos de una funcin deben ser capturados en un Exception Handler. El compilador fuerza esto.

1 - 74

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 74
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 4: Creando Componentes EAServer

1- 75
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El objetivo
Mover desde un Two-Tier a... Multitier

Lgica de Negocio embedida en un control de interfaz

calculate( )

EAServer Loan
1 - 76
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

En este laboratorio previo del captulo, se puede particionar la aplicacin Loan Calculator y separar la lgica de negocio de la interfaz. Ud. Har esto creando un NVO y cree un mtodo en el NVO para que realice el clculo que es realizado presionando el botn. Una vez que la lgica comercial es dividida, esto puede ser distribuida al EAServer. Distribuir la lgica de Negocio al EAServer proporciona un ambiente de escalabilidad con opciones de ayudarte a manejar los connection caches, administrar las transacciones, el pool de instancias, y la seguridad. Distribuir la lgica de negocio tambin le permite reusar la lgica de negocio en otras aplicaciones clientes como Java, C++ y clientes Web.

1- 76
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Modelo de desarrollo de Alto Nivel Procesos de Desarrollo

Definiendo un componente EAServer z Desplegando un Componente EAServer z Conectndose al EAServer z Generando un Proxy z Inicializando el Proxy z Invocando mtodos de un componente EAServer
z

1 - 77

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 77
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para:


Crear un Componente EAServer desde el EAServer Component Wizard z Desplegar un componente EAServer z Generar los objetos Proxy y Connection en el cliente z Conectarse al EAServer desde una aplicacin Cliente escrita en PowerBuilder z Crear una instancia de un Componente EAServer z Invocar mtodos de un Ccomponente EAServer z Anticipar y manejar los EAServer Component Exceptions
z

1 - 78

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 78
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Modelo de Desarrollo de Alto Nivel


Task Analysis Application Design / Flow Architecture (Object-Oriented) Build Interface Objects Implement Business Logic Connect with the Data Source Combine Interface, Business, and System Management Logic Deploy
1 - 79
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Implement System Logic

Este es un modelo de desarrollo de alto nivel que puede ser familiar para el trabajo en un ambiente two-tier. Aunque un ambiente multitier con EAServer difiere del ambiente two-tier, Ud. Ser capaz de poder usar sus conocimientos actuales. Este curso se enfoca en lo siguiente:

Implementando la lgica de negocio Conectar la lgica de negocio con el origen de datos Combinar la interfaz y la lgica de negocio

1- 79
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Procesos de Desarrollo
Libreras Cliente Libreras del Servidor 1. Define un Componente 2. Deploy al Componente 3. Conectase al EAServer gn_connect = CREATE n_jaguar_connect
l_rc = gn_connect.ConnectToServer()

4.Generar un Proxy 5. Initializar el Proxy 6. Invocar Mtodos


1 - 80

l_rc = gn_connect.CreateInstance (in_rules,& businessrules/insurance") In_rules.calcRate()

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Para distribuir la lgica de negocio desde el cliente al Jaguar y entonces llamar la lgica de negocio almacenada en el Jaguar, Ud. Puede seguir este proceso simple. PowerBuilder proporciona wizards para ayudarte con estos pasos. Una vez que se est familiarizado con este proceso, te puedes mover a un escenario ms complejo como la llamadas de entre componentes y configurar a los componentes para las transacciones, que son cubiertas en mdulos posteriores. En este tiempo, se tiene que focalizar en este simple proceso para dominar los conceptos bsicos. Cada paso incluye una serie de sub pasos e informacin adicional que es especificada en la Gua de Tareas.

1- 80
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Definiendo un Componente EAServer


1) PBL

3) Project para deploy del componente

2) NVO para deploy

1 - 81

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Para definir un componente EAServer, ud. Necesita:


z z z

1) Una librera (PBL) que contendr su componente o componentes. 2) Uno o ms custom classes que se intent desplegar como componentes 3) Un objeto project con la informacin de despligue

Hay EAServer Component wizards en varias pginas del dilogo New . Dependiendo donde se encuentre determine que wizard utilizar.

1- 81
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El Target EAServer Component Wizard

1 - 82

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Este EAServer Component wizard en el tab page Target crea las 3 piezas necesarias
z z

1) Un PBL nuevo para contener su NVO y objeto project

2) Un custom class user object vacio que debe ser personalizado para contener la funcionalidad que se desea desplegar. 3) Un objeto project con propiedades que tu especificas.

El EAServer Component wizard en el tab pate PB Object asume que tu tienes un target y solo crear los pasos 2 y 3 de arriba

The EAServer Component wizard en el tab pate Project asume que tienes un target PBL y un custom class user object. Esto simplificar crear un objeto project para desplegar el componente o componentes que tu especifiques.

1- 82
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Demo del Instructor

Usando el EAServer Component Wizard desde un Tab Target

Referencia: Guia deTareas Definiendo un Componente EAServer


1 - 83
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 83
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Desplegando el Componente EAServer

Referencia: Gua de Tareas Desplegando un Componente EAServer


1 - 84
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Cuando presionas click en el icono Deploy en el objeto project, el objeto project despliega el NVO al EAServer y crea los skeletons en el servidor. El EAServer Component wizard crea un objeto project para ti automticamente. Ud. Tambin puede crear el objeto project usando el EAServer Component wizard en el tab Project. Una vez que el objeto es desplegado al EAServer, deberas estar hbil para ver esto en el Jaguar Manager (se puede necesitar refrescar el Jaguar Manager).

1- 84
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Conectndose al EAServer

Referencia: Gua de Tareas Conectndose al EAServer


1 - 85
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El Connection Object wizard crea un objeto connection para que te puedas conectar a un servidor EAServer. Deberas estar hbil para ver el nuevo objeto connection en el System Tree despus presionas el botn Finish en el wizard. El Connection Object es un objeto no visual de PowerBuilder (CCUO) Todo esto sucede en las PBLs del lado del cliente.

1- 85
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Conectndose al EAServer
// Instanciando el objeto connection gn_connect = CREATE n_jaguar_connect // Conectarse al Jaguar ll_rc = gn_connect.ConnectToServer() IF ll_rc <> 0 THEN MessageBox (la conexin al EAServer fall", & ll_rc) return END IF

1 - 86

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Se debera instanciar el objeto connection despus de que este fue definido por el Connection Object wizard. Despus de instanciar el objeto, llamar a la funcin ConnectToServer( ) para conectarse al EAServer. El objeto connection y conectarse al EAServer son anlogos a un objeto transaction que se conecta a un base de datos. Como operaciones de conectarse y desconectarse a una base de datos, existe un mtodo DisconnectServer() para complementar el mtodo ConnectToServer().

1- 86
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ejemplo de un Manejo de Error


// Instanciar el objeto connection gn_connect = CREATE n_jaguar_connect

TRY l_rc = gn_connect.ConnectToServer() CATCH ( CORBAcommfailure ccf ) MessageBox("corbacommfailure Caught", & "ConnectToServer caught: " +& ccf.getMessage() ) l_rc = 998 CATCH ( CORBASystemException cse ) MessageBox("CORBASystemException Caught", & "ConnectToServer caught: " + & cse.getMessage() ) l_rc = 998 END TRY
1 - 87
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Revisn: Volver a llamar, el PowerBuilder Provee 3 capas de manejos de errores que puede ser usado por los clientes para conectarse al EAServer:

Un mecanismo, usando bloques try/catch/finally, para manejar excepciones thrown por componentes ejecutndose en EAServer. Todos los errores de sistema o en tiempo de ejecucin son convertidos en objetos que descienden desde el tipo RuntimeError.

El evento Error en el Connection y el objeto JaguarORB para manejar errores en el contexto de una conexin EAServer. El evento SystemError en el objeto Application para manejar los errores que no tienen que ser capturados por otros mecanismos. Este slides ilustra usando los bloques try/catch en un manejo estndar del exception El siguiente slide ilustra usando el evento Error de un objeto Connection

1- 87
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ejemplo de un Manejo de Error

1 - 88

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

En este ejemplo, asume un standard class user object n_jaguar_connect, que descienden del tipo connection que fue creado. Este tiene una funcin of_logError que registra la informacin del error. Nota: este mtodo para manejar el error y el uso del evento SystemError ambos son mantenidos para compatibilidad con versiones anteriores. El mtodo del bloque de try/catch es preferible ser usado por los desarrolladores.

1- 88
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Generando un Proxy Stub

Referencia: Gua de Tareas Generando un Proxy


1 - 89
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Use el EAServer Proxy wizard en el tab Project para definir un objeto project que pueda crear un proxy. Este wizard no crea el proxy por si mimos. Esto crea el objeto project que debes de desplegar para generar el proxy. El Proxy estn en el lado del cliente. Hace pensar al cliente que el objeto est localmente.

1- 89
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Generando un Proxy, continua

1 - 90

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El wizard del proxy tendr que seleccionar todos los componentes para los cuales deseas crear proxies. Tu puedes seleccionar el package entero o solo algunos.

1- 90
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Generando un Proxy, continua

1 - 91

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 91
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Generando un Proxy, continua

1 - 92

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Una vez que el objeto project es definido, click en el botn Deploy para generar el proxy. Tu puedes ver el nuevo proxy en el System Tree y el Library painter.

1- 92
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Inicializando el Proxy
// Inicializando el proxy ll_rc = gn_connect.CreateInstance(in_rules, & SurfsideVideoPB/n_businessrules" ) IF ll_rc <> 0 THEN MessageBox (Fall el CreateInstance ", ll_rc) return END IF

1 - 93

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 93
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Invocando mtodos de un Componente EAServer


Boolean ib_OK ib_OK = in_rules.verify( amount, months )

Nota: se debe necesitar un bloque try.. Catch block si cualquier exception fue levantado. Ud. debe estr dispuesto a ver el proxy exceptions en el System Tree, Cuando Ud. despliega el Proxy project

1 - 94

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Despus el proxy es instanciado, se puede invocar los mtodos del componente usando la notacin familiar <object>.<method>.

1- 94
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Algunos shortcuts en PowerBuilder 10

La programacin Drag and Drop se realiza desde el System tree

1 - 95

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

La programacin Drag and drop est disponible desde el System Tree. Localice el proxy en el System Tree y abra las funciones. Localice el mtodo que deses para llamar y entonces drag and drop y sueltalo en el cdigo del objeto window. Podrs modificar este cdigo para usarlo con tu variable usando la notacin familiar<object>.<method>.

Si tienes el autoscripting habilitado, (Design | Options) desde el men principal de PowerBuilder y tienes que habilitar After a dot include .. Methods entonces digitar la variable y despus del punto esperar un momento y aparecern los mtodos disponibles para la seleccin.

1- 95
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Invocacin de Mtodos
Client Object 3) Invoca el Mtodo Stub Object 2) CreateInstance( ) ORB ORB EAServer provides Skeleton PowerBuilder provides Implementation Object

1) ConnectToServer( )
1 - 96

IIOP

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Si cualquier caja no est creada o si cualquier lnea entre las cajas no est establecida, la invocacin del mtodo fallar. Use este diagrama como un checklist para asegurarte que tienes establecido cada objeto y todos los enlaces entre los objetos.

1- 96
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen

Invocando un mtodo en un Componente EAServer involucra estos seis procesos:


1. Definiendo un Componente EAServer 2. Desplegando un Componente EAServer 3. Conectndose al EAServer 4. Generando un Proxy 5. Inicializando el Proxy 6. Invocando Mtodos en un Componente EAServer

Los Wizards te ayudan a crear los Componentes EAServer, los objetos connection, y los projects para desplegar componentes y generar proxys
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1 - 97

1- 97
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 4-1: Creando el Loan Calculator


Client

calculate( )

EAServer Loan
1 - 98
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Seguir el Libro de Laboratorio para completar el laboratorio. El Libro de Laboratorio proporciona referencias especificas a las secciones en la Gua de Tareas, para la documentacin de PowerBuilder, y/o la documentacin de EAServer para ayuda adicional.

1- 98
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Laboratorios Opcionales
Lab 4-2 (Opcional): Usando un Servidor Remoto Lab 4-3 (Opcional): Administrando el mantenimiento Lab 4-4 (Opcional): Depurando un Componente Remoto

1 - 99

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Seguir el Libro de Laboratorio para completar estos laboratorios adicionales. Ud. puede realizar estos laboratorios en cada orden. Segn su inters. El Libro de Laboratorio proporciona referencias a la Gua de Tareas, la documentacin de PowerBuilder, y/o la documentacin de EAServer para ayuda adicional.

1- 99
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab

Declare una referencia al proxy


n_loan in_loan

Instanciacin (hacerlo en el Open en este caso)


in_loan = CREATE n_loan

Llamar al mtodo
double ld_amount, ld_payment, ld_interest = 6.625 int li_months ld_amount = Double ( sle_amount.text ) li_months = integer( ddlb_months.text ) try ld_payment = in_loan.calculate(ld_amount, li_months) catch (nex_negative e1) MessageBox(Captura un Exception ", e1.getMessage()) end try sle_payment.text = string ( ld_payment )

1 - 100

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 100
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 5: Manejando el ciclo de Vida de los Componentes

1- 101
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El objetivo

Responder estos tipos de preguntas:


Cundo es instanciado y destruido un componente? z Cundo un componente es ligado a un cliente? z Cunto tiempo un componente es ligado a un cliente? z Cmo es desligando un componente de un cliente? z Cmo se maneja en un ambiente como Internet? z Porqu son importantes estas preguntas?
z

Describir el ciclo de vida de un componente

1 - 102

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 102
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
El ciclo de vida de un Componente EAServer Eventos del ciclo de vida en EAServer Diseo de componentes Stateful Versus Stateless El Instance Pooling

1 - 103

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 103
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para:


Modificar un custom class user-object que contiene eventos EAServer z Diferenciar entre los componentes Stateful y Stateless z Escribir el cdigo necesario para mostrar informacin en el archivo Log del EAServer z Modificar las propiedades de un componente y predecir el comportamiento basado en el tipo de componente
z

1 - 104

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 104
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El ciclo de vida del EAServer Component


Instanciacin Espera Activacin ligar al cliente Ejecutar el mtodo
Si Automatic deactivation No Primitive
1 - 105

Reciclar Si Pooling support

Desactivacin

No

Destruccin Desactivacin

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 105
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Sobre la administracin del ciclo de vida del Componente

Determinar como las instancias de un componente son:


z z z z z

Instanciadas Ligadas a un cliente Desligadas de un cliente Reusadas Destruidas

1 - 106

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

En una aplicacin de alto volumen, como un ambiente WebOLTP, la instanciacin y destruccin de componentes pueden ser operaciones caras que degraden la performance de su aplicacin. El objetivo debe ser minimizar ambos el nmero de instancias y la cantidad de tiempo de una instancia de componente ligado a un cliente, y para que no pueda ser accesado por otros clientes. EAServer proporciona caractersticas que te permiten tener un pool de instancias de componentes y administrar el ciclo de vida de los componentes para obtener una mejor performance para tu aplicacin.

1- 106
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Facilidades y Beneficios del EAServer

Facilidades
El Instance pooling z Soporte de componentes Stateful y stateless
z

Beneficios
Minimiza el nmero de objetos creados y destruidos z Maximiza la comparticin y reuso de recursos z Minimiza la posibilidad de que un cliente monopolice un recurso del servidor
z

1 - 107

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El ciclo de vida EAServer se refiere a cuando un componente es instanciado, cuando esto es destruido, cuanto tiempo es ligado a un cliente, y si el componente puede ser reusado. Como establecer una conexin a una base de datos es un proceso largo y debe manejarse en un servidor, el instanciar un objeto es tambin un proceso que consume tiempo y debe ser manejado para la performance.

1- 107
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Eventos del ciclo de vida del EAServer

Un componente puede implementar los eventos del Ciclo de Vida del EAServer
Constructor z Activate z Deactivate z CanBePooled z Destructor
z

EAServer invoca estos eventos

1 - 108

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El servidor EAServer llama a estos eventos en el momento apropiado en el ciclo de vida de los componentes. Esto le d una oportunidad para la realizacin de cualquier lgica necesitada, como la inicializacin. El EAServer Component wizard define estos eventos para t. Si tu estas convirtiendo un objeto de negocio existente a un componente EAServer, Ud. tiene que declarar estos eventos y asignarle el event ID apropiado. Considerar adicionar un componente ancestro EAServer. Vea en la seccin Definiendo un Componente EAServer Ancestro en la Gua de Tareas para ms detalles.

1- 108
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Eventos del ciclo de vida del EAServer

Constructor
Invocado cuando el componente es inicialmente creado (primer mtodo llamado) z El evento constructor es estndar para cualquier custom class user object (CCUO)
z

Activate
Invocado cuando el componente es ligado al cliente z Usado para (re)inicializar las instancias con datos especficos
z

Deactivate
Invocado cuando el componente es desligado del cliente z Usado para liberar recursos
z

1 - 109

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Si el componente usa recursos como un manejo de archvos, liberar el manejo en el evento Deactivate. Instanciar variables en el componente puede ser inicialzado en el evento Activate.

1- 109
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Eventos del ciclo de Vida del EAServer

CanBePooled
Invocado justo despus del Deactivate z Invocado para determinar si la instancia puede ser usado
z

Destructor
Invocado cuando el componente es destruido z El evento destructor es estndar para cualquier CCUO
z

1 - 110

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Evento CanBePooled :

Este evento es llamado solo cuando la opcin instance Pooling es desactivada. si el evento retorna 1, entonces la intancia es reusada.

El EAServer Component wizard no declara automticamente esto para ti. Tu debes de insertar un evento y asignarle el event ID apropiado. Ver la Gua de Tareas para ms detalles.

1- 110
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Estrategias de diseo

Los componentes pueden ser diseados para ser:


z

Stateful

La instancia permenece ligado al cliente entre llamadas de mtodos Las instancias pueden almacenar estados de informacin El desarrollador es responsable para inicializar la desactivacin La Instancia es automticamente desactivada despus de cada llamada del mtodo. Para cada llamada del mtodo, Ud. no puede asumir que la instancia ser ligada al cliente. El desarrollador es responsable para inicializar la instancia.

Stateless

1 - 111

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Los componentes Stateful son buenos para almacenar informacin sobre el cliente para ser usados en el manejo de una transaccin. Por ejemplo, un componente que ubica una orden puede tener muchos mtodos para permitir al cliente configurar un customer ID, informacin sobre la orden, e informacin sobre cada item de la orden. En esta caso, tu puedes usar componentes stateful para retener la informacin entre la invocacin de mtodos. En muchos casos, sin embargo, un componente no tiene que mantener la informacin entre la llamada de mtodos. Si el componente es stateful, el componente podra ser asignado al cliente por un periodo largo y la performance de la aplicacin se degradara porque el servidor necesita instanciar ms instancias del componente.

1- 111
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Stateful

Instance Pool

1 - 112

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Componentes Stateful:

Mantener la informacin sobre un cliente entre la invocacin de mtodos Almacena la informacin en propiedades (variables de instancia) Exponga los mtodos para manipular las propiedades

1- 112
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Stateful

setAmount(15000) setMonths(24) calculate( ) return 725

15000 24

Instance Pool

1 - 113

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Una instancia es removida desde el pool y ligada a un cliente. La informacin sobre el cliente es almacenada en la variable de instancia entre la llamada de varios mtodos. La instancia no puede ser usada por otros clientes mientras est ligado a un cliente especfico.

1- 113
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Stateful
Como el cliente libera una instancia? Que sucede si el cliente se olvida de liberar la instancia?

Instance Pool

1 - 114

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Una vez que el cliente desactiva o libera la instancia, la instancia retorna al pool y puede ser usada por otros clientes.

1- 114
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Stateless

Instance Pool

1 - 115

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Los componentes Stateless no pueden acumular o almacenar datos especficos de instancias entre la invocacin de mtodos. Ellos no retienen informacin de una invocacin del mtodo para el siguiente. El cliente necesitar pasar la informacin como parmetros a lo mtodos en cada uso o usar algn tipo de almancenamiento persistente para mantener los estados de informacin.

1- 115
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Stateless

Calculate(15000,24) return 725

Instance Pool

1 - 116

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Con un componente stateless, se asume que la instancia es retornada al pool, la instancia es desactivada y retornada al pool de instancias inmediatamente despus de cada llamada al mtodo. Esto limita la cantidad de tiempo a la instancia de estar ligado a un cliente. Dos invocaciones de mtodos usando el mismo proxy puede ser servidas por diferentes instancias.

in_customer.getData( ) in_customer.save( )

1- 116
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Stateless

Instance Pool

1 - 117

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 117
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Stateful Versus Stateless

Stateful
Las instancias son ligados a los clientes por largos periodos z El servidor tiene iniciadas ms instancias z Las instancias son reusadas poco frecuentemente z El servidor requiere ms recursos, limitando la escalabilidad
z

Stateless
Las instancias son ligados a clientes por periodos cortos z El servidor tiene iniciado pocas instancias z Las instancia son reusadas ms frecuentemente z El servidor requiere pocos recursos
z

Nota: use componentes stateless, si es posible.


1 - 118
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 118
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Definiendo Componentes Stateful y Stateless


Desplegando el atributo de tiempo La instancia automticamente es desactivada cuando el mtodo es retornado

9 Stateless (por defecto) Stateful


1 - 119
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Esta parte de la pantalla es de las propiedades del objeto project de despliegue

1- 119
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El Instance Pooling
Permite a una sola instancia de un componente para sucesivamente servir a mltiples clientes La instancia es removida del pool cuando es ligado al cliente(activated) La instancia retorna al pool cuando se desliga del cliente (deactivated)

Instance Pool

1 - 120

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El pool de instancias es similar al pool de conexiones. Crear una conexin fsica para una base de datos o inicializar una instancia fsica de un componente es una operacin que consume bastante tiempo que degrada la performance. El pool de instancias reduce el nmero de tiempo que el EAServer debe fsicamente crear y destruir una instancia de un componente. El objetivo es reducir el nmero de objetos instanciados. Los Beneficios de esto incluyen: Mejor escalabilidad Compartir el nmero limitado de instancias por muchos clientes Improvisar la performance en un ambiente impredecible

1- 120
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Diseo para el Instance Pooling

Si las instancias son reusadas, como debera disear el componente?


Inicializar todas las variables de instancias en el evento Activate z Liberar todos los recursos en el evento Deactivate
z

1 - 121

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 121
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Implementando el Instance Pooling

1 - 122

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Esta diapositiva muestra la hoja de propiedades de un objeto project que despliega un NVO al EAServer. Se puede activar la opcin instance pooling en la hoja de propiedades. Por defecto soporta el instance pooling. Nota: muchas propiedades que se configure (como este) pueden tambin ser configurado en el Jaguar Manager. Sin embargo, si tu configuras enel Jaguar Manager, la propiedad deber sobreescribirlo en el siguiente tiempo que despliegues desde PowerBuilder. El lugar apropiado para poner estas configuraciones es en la hoja de propiedades de PowerBuilder.

1- 122
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Propiedad Timeout

1 - 123

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Esta hoja de propiedad es mostrada desde el painter del objeto Project in PowerBuilder La propiedad Timeout permite configurar un periodo mximo del tiempo que una instancia puede ser ligada a un cliente. Cuando el timeout expira, el EAServer desactiva la instancia desde el cliente. Vea la documentacin para ms informacin.

1- 123
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Como son las instancias desligadas del cliente?

Si el componente es stateless, entonces el componente es desactivado despus de cada llamada del mtodo Si el componente es stateful, entonces el desarrollador debe llamar a los mtodos primitives para desactivar las instancias Si la propiedad Timeout es fija y expira

1 - 124

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Los componentes Stateless son desactivados automticamente al final de cada invocacin. Los componentes Stateful permanecen ligados al cliente hasta que una funcin SetComplete( ) o SetAbort( ) del objeto TransactionServer es llamado. Si un state primitive no es llamado, la instancia no es desligada del cliente. Si el cliente cierra, la instancia queda huerfana. Considere configurar la propiedad Timeout para los componentes stateful. Despus que el tiempo expire, el EAServer desactiva el componente.

1- 124
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Desactivando un componente Stateful


El objeto TransactionServer provee state primitives (funciones) Los state primitives son llamados antes de que el mtodo sea retornado para:
z z

Llamar al engine del Jaguar execution-time para desactivar la instancia Verifica si la transaccin debe ser satisfactoria o fallida*

Retorne un objeto TransactionServer referenciado en el evento Activate


TransactionServer its_jag this.GetContextService ("TransactionServer", & its_jag )

* Cubierto en el Mdulo 7, Manejando Transacciones

1 - 125

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 125
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

TransactionServer Primitives

Mtodos TransactionServer:
SetComplete( ) Desactiva el componente z SetAbort( ) * Desactiva el componente z EnableCommit( ) * No desactiva el componente z DisableCommit( ) * No desactiva el componente
z

Ejemplo
// el mtodo ejecuta la lgica de negocio //Llama al EAServer para desactivar la //instancia its_jag.SetComplete() return

* Cubierto en el Mdulo 7, Manejando Transacciones.


1 - 126
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El TransactionServer es un objeto que debera ser creado en el evento Activate. El TransactionServer almacena la informacin sobre el componente. Se usa los state primitive en la interfaz para el control del ciclo de vida para obtener y configurar la informacin en el TransactionServer. El TransactionServer puede almacenar la informacin de la transaccin como la informacin del ciclo de vida.

1- 126
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ejemplo 1

Qu mtodo(s) deberan desactivar la instancia?


setAmount(15000) setMonths(24) calculate( ) 15000 24

Instance Pool

1 - 127

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Se puede llamar a la funcin SetComplete( ) desde la funcin calculate( ). Se puede tambin crear otra funcin que debera simplificar la llamada a la funcin SetComplete( ). El cliente podra hacer muchas interacciones llamando al setAmount( ), setMonths( ), y calculate( ) almacenadas en la misma instancia. Entonces se podra llamar a estas otras funciones que deberan llamar a SetComplete( ) para finalizar la liberacin de la instancia.

1- 127
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ejemplo 2

Asuma que un componente customer es stateful con los siguientes mtodos:


Retrieve( ) retorna los datos almacenados z Update( ) aplica los cambios a los datos almacenados y los actualiza
z

Qu mtodo (s) deberan desactivar la instancia?


retrieve(blob) update(blob) Customer

1 - 128

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Se puede llamar a la funcin SetComplete( ) desde la funcin update( ).

1- 128
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El ciclo de vida del Componente EAServer


Invocacin del mtodo

Idle (in pool or bound to client)


Already bound? si no Instance in pool? si no Recycled

Execute method

Bind to client Activate Deactivate

Instantiate Constructor
si si no CanBe Pooled no Pooling

Automatic deactivation no Primitive

Deactivate SetComplete( ) / SetAbort( ) Destructor

EnableCommit( ) / DisableCommit( )
1 - 129

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El soporte de Pooling incluye el checkbox y el evento CanBePooled. Si Pooling es seleccionada, la instancia es automticamente reciclada y el evento CanBePooled no es llamado. Si el Pooling checkbox es desactivado, entonces el evento CanBePooled es llamado. Si el mtodo retorna 1, entonces la instancia es reciclada o pooled. si el mtodo no retorna 1, entonces la instancia no es reciclada y esto es destruida. El checkbox Automatic Deactivation determina si el componente es stateless o stateful. Si el componente es stateless (seleccionado), entonces la instancia es deslgada del cliente y verificada para ser reciclada. Si el componente es stateful, entonces el componente determina cuando esto es desligado por la llamada a un state primitive.

1- 129
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ejemplo: El Carrito de Compras de Los Logos


Ud. implementa esta transaccin en los siguientes mdulos Para empezar: Qu componentes pueden ser pooled?

Qu componentes pueden ser stateless?

n_order n_order_items
1 - 130

Add( )

Add( )

n_cart

PlaceOrder( )

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 130
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen

El ciclo de vida de un componente refiere a como las instancias son creadas, ligados a un cliente, desligados de un cliente y destruidos. Los componentes stateless son desactivados en el retorno del mtodo. Los componentes stateful permanecen ligados al cliente. El desarrollador del componente es responsable de desactivar un componente usando los state primitives.

1 - 131

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 131
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 5-1: Adicionando Eventos EAServer a un Custom Class User Object Lab 5-2: Escribiendo al EAServer Log
z z z

Lab 5: Manejando el Ciclo de Vida del Componente

Adicione la capacidad de anotar el error a n_loan Ver el mensaje en el server.log Adicione un command button Deactivate Escenario 1: Stateful Primera llamada, segunda llamada Escenario 2: Stateful Cliente A desactiva, pooling, no pooling Escenario 3: Stateless / pooling Primera llamada, segunda llamada Escenario 4: Siga su curiosidad

Lab 5-3: Manejando el Ciclo de Vida del componente


z z z z

1 - 132

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 132
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 5 Preguntas
Preguntas? Preguntas a los alumnos sobre el Lab 5-3

1 - 133

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 133
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 6: Procesando informacin de la base de datos

1- 134
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El objetivo
Cliente

EAServer
GetData( )

Save( )

Customer
1 - 135
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 135
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Qu es un Connection Cache? Instalando un Connection Cache Obteniendo una conexin de la base de datos Trabajando con DataWindows en un ambiente Distribuido

Sincronizacin de los DataWindow z Recuperando un DataWindow en un Componente EAServer z Actualizando un DataWindow en un Componente EAServer
z

1 - 136

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 136
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para


Instalar un Connection Cache en el EAServer z Hacer Ping al cache en el Jaguar Manager z Conectarse a un connection cache desde un programa PowerBuilder z Definir y codificar un mtodo que retorne un result set usando la sincronizacin del DataWindow z Mostrar un result set retornado desde un mtodo remoto usando la sincronizacin del DataWindow
z

1 - 137

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 137
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El Connection Management

IIOP Connection Cache

Connection Cache

El Connection Manager
1 - 138
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

EAServer te permite que establezcas un pool de conexiones a varias base de datos. Cuando un componente necesita una conexin, esto pregunta al Connection Manager para esto. El Connection Manager provee una conexin desde el pool si existe uno, o establece una nueva conexin fsica si no hay conexiones disponibles en el pool. Cuando un componente libera una conexin, el Connection Manager retorna la conexin al pool pero no se desconecta de la base de datos.

1- 138
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Qu es un Connection Cache?
Un pool de conexiones disponibles para una base de datos especfica Todas las conexiones en un cache comparten:

z z z

User ID y password Base de datos Libreras de Conectividad

1 - 139

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Todas las conexiones en un cache comparten el mismo user ID, password, base de datos, y libreras de conectividad. Sin embargo, muchas aplicaciones WebOLTP pueden asignar usuarios a los grupos y crear connection caches sobre estos grupos. En estos casos, se puede obtener grandes beneficios desde un connection cache.

1- 139
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Beneficios de un Connection Cache

Mejora la performance
z

Elimina la necesidad de crear una configuracin a una conexin cuando es requerida Permite a los servidores EAServe servir a cientos de clientes usando solo unas pocas conexiones a la base de datos Establece un nmero mximo de conexiones en un ambiente impredecible

Mejora la escalabilidad
z

Control sobre el nmero de conexiones a la base de datos


z

1 - 140

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 140
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Instalando un Connection Cache

1 - 141

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Nota: vea en el Task Guide y el captulo 24 Using Connection Management, en el EAServer Programmers Guide para detalles de implementacin. La documentacin Online para este libro est disponible cuando el EAServer es ejecutado desde la siguiente URL: http://localhost:8080/docs/jagpg/main.htm hay una manera para especificar un nmero mnimo de conexiones que el EAServer debera establecer al inicializarse? Respuesta: No hay una propiedad en el Jaguar Manager que permite especificar un nmero mnimo de conexiones al EAServer cuando se inicializa. El EAServer provee eventos que pueden ser codificados. Hay un evento Start que el cual se puede especificar un nmero fijo de conexiones. Tu puedes codificar el evento en C en este tiempo.

1- 141
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Instalando un Connection Cache

Nota: Use las tablas en la Gua de Tareas.


1 - 142
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 142
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Instalando un Connection Cache

Nota: Use las tablas en la Gua de Tareas.


1 - 143
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 143
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Instalando un Connection Cache

Nota: Use las tablas en la Gua de Tareas.


1 - 144
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 144
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Laboratorios 6
Lab 6-1: Instalando un Connection Cache Lab 6-2: Familiarizarse con la Aplicacin los Los Logos

1 - 145

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 145
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Obteniendo una conexin de la Base de datos

Como un componente obtiene una conexin desde un cache?


z z

Usa el objeto transaction y Usa la sentencia CONNECT Using <objeto transaction >; CacheName Nombre del cache definido en el Jaguar Manager GetConnectionOption vea la documentacin de PowerBuilder ReleaseConnectionOption vea la documentacin de PowerBuilder UseContextObject Use la opcin YES para administrar las transacciones*

Valores dbparm
z z z z

* Cubierto en el Mdulo 7, Manejando Transacciones

1 - 146

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 146
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El GetConnectionOption
JAG_CM_FORCE JAG_CM_NOWAIT JAG_CM_WAIT

1 - 147

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Especificar como el EAServer debera comportarse si todas las conexiones en un cache estan siendo usadas. Este parmetro DBParm es aplicado solo cuando un PowerBuilder custom class user object es desplegado como un componente EAServer. Los valores son:

JAG_CM_FORCE (Defecto) asigna y abre una nueva conexin. La nueva conexin no es ubicada en el cache y des asignada cuando la conexin explicitamente o implicitamente es cerrada por el componente. JAG_CM_NOWAIT Falla con un error si no se puede hacer las conexiones. JAG_CM_WAIT No retorna hasta que una conexin est disponible.

1- 147
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

GetConnectionOption del dbparm

Puede ponerse en el painter del Database Profile o en cdigo

SQLCA.dbParm = "GetConnectionOption =& 'JAG_CM_NOWAIT'

1 - 148

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 148
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Obteniendo una conexin de una Base de datos


Componente
//Variables de Instancia
Protected: Transaction itr_trans

// Evento Activate
If NOT IsValid(itr_trans) then itr_trans = CREATE transaction END IF Itr_trans.dbms = ODBC Itr_trans.DBParm =& UseContextObject=Yes,CacheName=EASDemoDB CONNECT USING itr_trans; If itr_trans.sqlcode <> 0 THEN process error

// Evento Deactivate
//Release the connection Disconnect using itr_trans;

1 - 149

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 149
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Trabajando con DataWindows en un Ambiente Distribuido


Como trabajar con DataWindows en un ambiente distribuido? z Puedes compartir datos entre los clientes?
z

1 - 150

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 150
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Sincronizacion de los DataWindow

La sincronizacin del DataWindow provee un API para:


z

Fcilmente transferir un DataWindows via blobs, incluyendo:


Datos Flags de Status Definicin de DataWindow DropDown DataWindow

o z Transferir solo cambios de datos, incluyendo:


Datos Flags de Status

1 - 151

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 151
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Funciones de la Sincronizacin de los DataWindows


Funcin GetFullState( ) SetFullState( ) Descripicn Empaqueta un DataWindow en un blob Desempaqueta un blob desde el GetFullState( ) en un control DataWindow Empaqueta los cambios en un DataWindow dentro de un blob Aplica los cambios desde el GetChanges( ) a un DataWindow

GetChanges( ) SetChanges( )

1 - 152

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 152
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Sincronizacin del DataWindow : Recuperar


Componente GetFullState( ) blob Data Window SetFullState( ) data store

Retrieve( )

1 - 153

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El objeto DataWindow y cualquier dropdown DataWindows no son necesarios en la aplicacin cliente. GetFullState( ) proporciona las definiciones para esto. Sin embargo, el objeto DataWindow debe estar disponible en la librera del servidor si el componente servidor usa la funcin GetFullState().

1- 153
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Sincronizacin del DataWindow : Actualizacin


Componente SetChanges( ) blob Data Window GetChanges( ) data store

Update( )

1 - 154

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El datastore en el componente EAServer no necesita ser asignado con un SetFullState( ). SetChanges( ) puede ser aplicado para un datastore vacio. Asignar los datos al DataStore permite al componente trabajar sin el estado de informacin.

1- 154
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Recuperando un DataWindow en un Componente EAServer


Client Application
n_customer Instance Variables in_customer

Component
Instance Variables Protected: datastore ids_data Transaction itr_trans Activate // Code to get a connection. See Task Guide // Create data store IF NOT IsValid(ids_data) THEN ids_data = CREATE datastore END IF ids_data.dataobject = "d_customers" ids_data.SetTransObject(itr_trans)

Client connects to Jaguar and creates proxy (i.e., Open event) gn_connect = CREATE n_connect gn_connect.ConnectToServer() // check for errors gn_connect.CreateInstance(in_customer, "orderentry/n_customer") // check for errors

Client initiates data retrieval (i.e., Retrieve event) blob lbl_data lbl_data = in_customer.getData ( ) dw_1.SetFullState ( lbl_data )

blob getData ( ) blob lbl_data ids_data.Retrieve() ids_data.GetFullState( lbl_data ) return lbl_data

Deactivate // Release the connection DISCONNECT USING itr_trans;

1 - 155

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Este ejemplo asume que el componente es stateless, y que el componente debera ser reusado. Note que el objeto transaction y el DataStore no necesitan ser recreados. Ellos pueden ser creados y reusados por cada cliente para que la instancia sea ligada. Ud. No necesita realizar la instanciacin y destruccin de estos objetos cada vez se Activa y Desactiva una instancia. Cuando la instancia es retornada al pool, este toma su objeto transaction y datastore con l. Sin embargo, asegurarse para inicializar estos objetos en el evento Activate y liberar todos los recursos en el evento Deactivate. Nota: Se podra tambin reestablecer el DataStore en el evento Deactivate para liberar cualquier dato de memoria.

1- 155
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Actualizando un DataWindow en un Componente EAServer


Codifique el cliente y el componente del servidor Revise la Gua de Tareas

1 - 156

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 156
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Un connection cache es un pool de conexiones disponibles para una base de datos especfica. Usando connection caches mejora la performance y escalabilidad de la aplicacin. Se define un connection cache usando el EAServer Manager. EAServer provee un API para acceder a un connection cache desde un componente

1 - 157

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 157
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 6-3: Recuperando clientes

Opcionales: el objeto ResultSet

GetData( )

Customer

1 - 158

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 158
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 6-4: Actualizando Clientes

EAServer

Save( )

Customer
1 - 159
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 159
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Laboratorios

Lab 6-3:
Examine el cdigo del n_customer para el mtodo getData() z Revise los procesos z Revise solucionando los problemas con los tips del Libro de Laboratorio
z

Lab 6-4
z

Examine el cdigo del n_customer para el mtodo save()

1 - 160

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 160
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 7: Manejando Transacciones

1- 161
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Qu es una Transaccin? Transacciones en un ambiente basado en Componentes Manejando Transacciones Llamadas entre componentes Los Transaction Coordinators

1 - 162

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 162
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para:


Modificar la propiedad del componente que determine el soporte de transaccin z Identificar el tipo de transaccin y los valores de la propiedad para cada componente en una transaccin multicomponente z Describir como el componente responde un satisfactorio o falla
z

1 - 163

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 163
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Qu es una Transaction?

Una secuencia de sentencias SQL que completan una unidad lgica de trabajo
Cada sentencia SQL realiza parte de una tarea z Todas las sentencias SQL deben ser satisfactorias para que la transaccin sea completa z Si cualquier sentencia falla, todos los pasos previos satisfactorios son deshechos
z

1 - 164

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Ejemplo: Asumir que se desea transferir dinero desde una cuenta de ahorros para una cuenta corriente. Hay dos pasos en este proceso: 1) Debitar desde su cuenta de ahorros. 2) Depositar a su cuenta corriente. Porque ambos pasos son necesarios para que sean satisfactorios, ellos necesitan estar ejecutados en una transaccin. Si el dbito fue satisfactorio, pero el depsito falla, se debera desear desactivar el dbito. Solo si todos los pasos son satisfactorios debera realizar un commit para la transaccin.

1- 164
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

transferencia

Ejemplo
Cajero Savings

1. retiro

2. deposito

Checking

3. escribir

Log

Qu sucede si al escribir el Log falla?


1 - 165
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Este ejemplo demuestra una funcin de transferencia en una cuenta bancaria. Una transferencia de ahorros a corriente debe satisfacer el dbito y acreditar la verificacin. El root instance coordina la transaccin.

1- 165
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Transacciones 2 Tier
/* Si el Log es parte de la transaccin*/ IF Savings.withdraw()ok THEN IF Checking.deposit()ok THEN IF log.write() ok THEN COMMIT; ELSE ROLLBACK; ELSE ROLLBACK; ELSE ROLLBACK; END IF /* Si el Log es separado de la transaccin*/ IF Savings.withdraw()ok THEN IF Checking.deposit() ok THEN COMMIT; ELSE ROLLBACK; ELSE ROLLBACK; END IF IF log.write() ok THEN COMMIT; ELSE ROLLBACK; END IF TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1 - 166

1- 166
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Transacciones en un ambiente Basado en Componentes


Mltiples componentes pueden participar en una sola transaccin Cada componente realiza parte de una tarea EAServer permite que un grupo de actualizaciones a la base de datos sean realizados por mltiples componentes en una sola unidad de trabajo

1 - 167

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

La transaccin en una aplicacin two-tier fue manejada en el cdigo para verificar el cdigo de retorno desde los mtodos y codificar un commit o rollback. Si la lgica cambia requiere un cambio en como la transaccin es manejada, el cdigo tambin necesitar ser cambiado. EAServer permite que definas y cambies la salida de una transaccin a travs del property sheets. Cambiar a la transaccin puede ser hecho tambin a travs de cdigo.

1- 167
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El EAServer Transaction Management


EAServer ejecuta todos los componentes en una transaccin EAServer convierte las transacciones en propiedades en deployment-time La propiedad Deployment-time descrie como los componentes se comportan en una transaccin multicomponente El comportamiento transaccional puede ser definido a nivel de mtodo Trabaja solo con conexiones obtenidas desde el EAServer Connection Manager

1 - 168

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Se debe usar un Connection Cache en orden para usar el administrador de transacciones del EAServer cuando el EAServer es configurado para usar el Shared Connection transaction coordinator

1- 168
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Demo

Ejecutar la aplicacin Bank con el Log como parte de la Transaccin


Realice la transferencia exitosa y escriba z Falle y escriba al log
z

Ejecutar la aplicacin Bank con el Log separado de la Transaccin


Realice la transferencia exitosa y escriba z Falle y escriba al log
z

1 - 169

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

See the setup.txt file in the \Demos directory for instructions.

1- 169
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Manejando Transacciones
1. Determine el soporte de transacciones de los componentes 2. Configurar la propiedad Transaction Support 3. Invocar los state primitive de una transaccin

El EAServer Transaction Manager asegura que los cambios a la base de datos sean realizados o no.

1 - 170

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El Transaction Manger del EAServer asegura que los cambios a la base de datos realizados por la participacin de componentes sean todas guardadas o deshechos. EAServer asegura que todos los componentes participantes en la transaccin usen la misma conexin fsica si el Shared Connection coordinator es seleccionado. Cuando un componente requiere una conexin desde un connection cache, EAServer automticamente asegura que el componente obtenga la misma conexin como otros componentes en la misma transaccin.

1- 170
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

1. Determinar el soporte de Transacciones de los Componentes

Seleccionar el valor Transaction Support


Requires New z Requires z Supports z Not Supported z Mandatory* z Never* z OTS Style*
z

* Adicionales desde PowerBuilder 8


1 - 171
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Requires Transaction El componente debe ejecutarse en una transaccin. Si hay una transaccin abierta, el componente se ejecuta en este. Si no hay una transaccin abierta, el componente inicializa la transaccin.

New Transaction el componente debe ejecutarse en una nueva transaccin; por consiguiente, esto siempre inicializa una transaccin. Supports Transaction el componente no necesita una transaccin. Si hay una transaccin abierta, el componente se ejecuta en la transaccin, si no hay una transaccin abierta, entonces el componente no crea una transaccin, esto se ejecuta sin una transaccin. Not Supported El componente nunca puede ejecutarse en una transaccin.

1- 171
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Nuevas propiedades Transaccionales desde PowerBuilder


Mandatory OTS Style Never

1 - 172

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Mandatory los mtodos pueden ser solo invocados por otros componentes que tienen una transaccin excelente. Llamando a este componente cuando no hay transaccin excelente genera un error en tiempo de ejecucin. OTS Style el componente puede manejar las transacciones. Esto puede heredar una transaccin del cliente. Si llam sin una transacicn, el componente puede explcitamente iniciar, guardar, y deshacer transacciones usando una instancia del objeto de servcio de contexto CORBACurrent.

Never los mtodos no pueden ser invocados cuando hay una transaccin excelente. Llamando estos componentes cuando hay una transaccin excelente genera un error en tiempo de ejecucin.

1- 172
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El Root Instance

Usando la tabla en la Gua de Tareas, puede A y B estar siempre en la misma transaccin si ambos son llamados directamente desde el cliente?
Component A

Component B

1 - 173

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 173
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Root Instance

Coordinator

Component A

Component B

No, se crea un componente coordinator.


1 - 174
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 174
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Transferencia

Identificar el Transaction Support


Root Instance Cajero 1. Retiro Savings

2. Depsito

Checking

3. Escribir

Log

Empiece opciones que no trabajaran.


1 - 175
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Un componente puede tener mltiples posibilidades para las caractersticas de la transaccin (en otras palabras, Requires Transaction y Requires New Transaction pueden ser ambas vlidas). Asegurarse de ver el mayor alcance. Los componentes pueden ser llamados desde otros componentes que pertenecen a una transaccin separada o aplicacin.

1- 175
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

2. Configurar la propiedad Transaction Support

1 - 176

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Este es la hoja de propiedad de un objeto project que despliega un NVO al EAServer.

1- 176
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

3. Invocar los Transaction State Primitive

Desactiva Satisfactorio SetComplete( )

No Desactiva EnableCommit( )

Falla

SetAbort( )

DisableCommit( )

1 - 177

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Un voto para satisfactorio significa que el rol del componente en la transaccin fue satisfactoria. Algunas otros componentes podra todava causar que la transaccin falle.

un voto para fallar significa que el rol del componente en la transaccin fue insatisfactoria, y sin embargo la transaccin es obligada a fallar.

El diseo de un componente en el EAServer debera ser complementametne encapsulada. El componente debera no necesitar conocer la salida de la transaccin o que otros componentes estn participando en la transaccin. El componente simplemente debera indicar donde ser su participacin en la transaccin que fue satisfactoria..

Cuando es una instancia desactivada?


z z

En el retorno del mtodo, si el Automatic demarcation/deactivation es configurado en TRUE En el retorno del mtodo, despus del SetComplete( ) o SetAbort( )

z Si instancia est participando en una transaccin, despus el root instance guarda la transaccin con el SetComplete( ) o deshace la transaccin con el SetAbort( )

Aqu hay otras dos funciones del TransactionServer :


z

IsInTransaction( ) le permite preguntar si el mtodo actual est ejecutando en el contexto de una transaccin. IsTransactionAborted( ) le permite consultar si la transaccin actual es obligada a deshacerse o estar todava viable.

1- 177
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Satisfactorio o Fracaso
// Proceso parte de una transaccin // its_jag es el objeto TransactionServer ... IF successful Then // satisfactorio its_jag.SetComplete( ) ELSE // fracaso its_jag.SetAbort( ) // Log error return END IF

1 - 178

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

PREGUNTAS: Si una transaccin falla, se tiene que usar la funcin SetAbort( ) otra vez, si es esto fue llamado por otro componente? RESPUESTA: No se necesita llamar a SetAbort( ) para causar que la transaccin falle si otro componente ya haba llamado a SetAbort(). En este caso, porque la transaccin falla, la funcin SetAbort maneja el ciclo de vida del componente y instruye al EAServer para desactivar la instancia.

1- 178
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Llamada entre componentes

Como se pueden llamar un mtodo de un componente desde un cliente?


1. Definir un objeto connection 2. Crear y publicar el objeto connection 3. Conectarse al EAServer con el ConnectToServer( ) 4. Generar el objeto proxy 5. Inicializar el proxy con el CreateInstance( )

Como se puede llamar a un mtodo de un componente desde otro componente?


Usar el mismo proceso z Usar un shortcut
z

1 - 179

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 179
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Llamada entre componentes: Shortcut

Si los componentes son almacenados por el mismo servidor EAServer


Crear un objeto TransactionServer z Llamar al CreateInstance( ) en el TransactionServer
z

Ejemplo: Suponer que el componente n_cart desea llamar al mtodo Add( ) del componente n_order
this.GetContextService ( & "TransactionServer", its_jag ) its_jag.CreateInstance ( in_order, & "orderentry/n_order" ) in_order.add()

1 - 180

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Usando el shortcut requiere menos cdigo y es ms simple. Sin embargo, si el componente est siempre ubicado en diferentes mquinas, entonces este cdigo no debera funcionar.

1- 180
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Si la transaccin es abortada?
Usar el IsTransactionAborted( ) para verificar si la transaccin pueda ser deshecha El Mtodo del TransactionServer retorna un valor Boolean Ejemplo

in_order.add() //llama al componente IF its_jag.IsTransactionAborted() THEN its_jag.SetAbort()//desactiva el componente return ELSE // continua el proceso de la transaccin END IF

1 - 181

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

PREGUNTA: Tienes que emitir la funcin SetAbort() si ya conoces que la transaccin es fallida? RESPUESTA: No necesitas emitir el SetAbort( ) para decirle al EAServer para abortar la transaccin porque algunos otros componentes participantes en la transaccin votaron para fallar. Tu puedes desear para llamar a SetAbort( ) para asegurarte que el componente es desactivado.

1- 181
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Los Transaction Coordinators

1 - 182

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

EAServer 4 ofrece transaction coordinators: el Shared Connection coordinator, el Microsoft Distributed Transaction Coordinator (DTC), y el OTS/XA Transaction Coordinator, y el JTS/XA Transaction Coordinator. (no mostrado en este pantalla) 1) Para el Shared Connection coordinator, todos los componentes participantes en una transaccin deben compartir una sola conexin fsica a la base de datos. Los componentes participantes utilizan el transaction management service para votar para un xito o falla. Al final de la accin de la transaccin comercial el servicio de administracin de la transaccin usa la informacin proporcionada por los componetnes para decidir donde hace un commit o un rollback la transaccin en la base de datos. 2) EAServer proporciona soporte para usar el Microsoft DTC, que maneja transacciones que usan mltiples conexiones fsicas de la base de datos. El DTC soporta el two-phase commits y requiere la plataforma Wintel (NT, 2000, XP), ODBC, y una base de datos DTC-compliant. 3) La opcin OTS/XA (Object Transaction Service X/Open Architecture Transactions) usa el Transarc Encina transaction coordinator que es creada en el EAServer. El Encina transaction coordinator usa two-phase commit para coordinar las transacciones entre las base de datos mltiples. El OTS/XA transaction coordinator habilita para el control del EAServer basado en transacciones desde un aplicacin cliente EAServer.

1- 182
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Una transaccin es una secuencia de sentencias SQL que completan una unidad lgica de trabajo. EAServer provee el manejo implicito de las transacciones. El objeto TransactionServer permite a los componentes influenciar en la transaccin en los que estn participando. Las propiedades transaccionales pueden ser definidas a nivel componente o mtodo.

1 - 183

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 183
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 7-1: Identificando el tipo de propiedad de Transaccin

Root Instance n_cart n_order

n_order_items

1 - 184

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 184
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 7 Laboratorio

Identifique los posibles tipos de transaccin para


n_cart z n_order z n_order_items
z

1 - 185

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 185
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 8: Migrando aplicaciones

1- 186
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El objetivo
Cliente

EAServer

n_order n_order_items
1 - 187

add( )

add( )

n_cart

placeOrder( )

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 187
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Actualizando un componente con una Lista Definiendo un componente ancestro Trabajando todo en conjunto

1 - 188

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 188
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para:


Identificar tareas comunes que realiza un componente EAServer z Declarar variables de instancias en un componente ancestro z Insertar eventos relacionados al EAServer en un componente ancestro z Codificar la inicializacin tpica de la funcionalidad en los eventos EAServer
z

1 - 189

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 189
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Como cambiar un CCUOs para ir al EAServer?

PowerBuilder CCUO

?? ?
EAServer Component

Distributed PowerBuilder CCUO

1 - 190

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 190
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Actualizando un Componente
Crear grupos de 23 Preparar una lista de items que tienen que cambiar para actualizar su componente a EAServer Compartir su lista con la clase Revisar el checklist en la Gua de Tareas

1 - 191

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 191
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Jerarqua del Componente

Qu es comn entre Componentes?


Variables instancias Variables instancias Variables instancias

n_cart

n_order

n_order_items

Constructor Activate Deactivate CanBePooled Destructor


1 - 192

Constructor Activate Deactivate CanBePooled Destructor

Constructor Activate Deactivate CanBePooled Destructor

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 192
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Definiendo un Componente Ancestro


Variables instancias n_ancestro Constructor Activate Deactivate CanBePooled Destructor

n_cart

n_order

n_order_items

Extienda y sobreescriba los Eventos Descendientes como sea necesario


1 - 193
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 193
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Los Objetos no visuales Two-tier y distributed requieren cambios para tener funcionalidad en el Jaguar. Use el checklist en la Gua de Tareas cuando actualice un objeto no visual. Use un componente ancestro para el Jaguar.

1 - 194

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 194
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Laboratorio 8

Lab 8-1
z z

z z

Identificar las tareas comunes que un componente EAServer realiza Declare variables de instancias relacionadas a EAServer en un componente ancestro Inserte eventos relacionados a EAServer en un componente ancestro Codifique la funcionalidad tpica de inicializacin en eventos EAServer Identifique las tareas necesarias para actualizar un componente Implementar el EAServer vote-style transaction management Invoque un mtodo de otro componente EAServer

Lab 8-2
z z z

1 - 195

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Identificar las tareas necesarias para actualizar componentes Implementar el EAServer vote-style transaction management Invocar un mtodo en otro componente EAServer

1- 195
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 8-2: Implementando la transaccin del Carrito Cliente

EAServer n_order n_order_items


1 - 196

add( )

add( )

n_cart

placeOrder( )

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 196
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 8 Interrogantes
Revisar el cdigo del Lab 8-1 y Lab 8-2 Preguntas / Discusiones?

1 - 197

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 197
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 9: Tipos de Componentes

1- 198
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Piense sobre
Cliente Cliente Cliente

Jaguar

getData( )

getData( )

getData( )

Product Product Product


1 - 199
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 199
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

El objetivo: Cache Data


Cliente Cliente Cliente

Jaguar

getData( )

getData( )

getData( )

ServiceProduct
1 - 200

Product

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 200
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Componentes Shared Componentes Service

1 - 201

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 201
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para


Describir los beneficios y caractersticas de un componente shared z Definir y desplegar un componente shared z Describir los beneficios y caratersticas de un componente service z Definir y desplegar un componente service z Comparar y contrastar un componente service y shared
z

1 - 202

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 202
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Shared
Tipo de componente EAServer Puede ser usado por mltiples clientes Permite trabajar con datos persistentes y compartidos Provee acceso conveniente a datos comunes No soporta el instance pooling Bueno para retener los datos relativamente estticos para muchos usuarios Reduce el nmero de conexiones a la base de datos

1 - 203

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 203
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Diseando Componentes Shared

Porque hay una sola instancia de un componente shared:


Es el diseo diferente que un componente standard? z Donde debera refrescarse los datos? z Cuando debera obtener una conexin a la base de datos? z Que debera ejecutarse en el evento Activate? Evento Constructor?
z

1 - 204

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 204
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Diseando Componentes Shared

Crear un mtodo refresh( ) que debe hacer:


Obtener una conexin a la base de datos z Crear un DataStore sino est creado z Activar el DataStore z Liberar la conexin a la base de datos
z

Crear un mtodo getData( ) que debe hacer:


z

Retornar los datos concurrentes en el DataStore via la sincronizacin de DataWindow

Llamar al mtodo refresh( ) desde el getData() si el DataStore es invalido Llamar al mtodo refresh( ) desde otro componente cuando los datos deberan ser refrescados

1 - 205
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 205
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Implementando Componentes Shared

1 - 206

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Este es la hoja de propiedades del objeto project que despliega un componente al EAServer.

1- 206
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Componentes Service

Los Componentes Service realizan procesos internos o proporcionan los servicios comunes como:
z z

Manteniendo las copias comunes de los datos usados Moviendo o replicando datos entre los origenes durante la espera del servidor Maneja los archivos log de las aplicaciones

EAServer activa los servicios cuando es iniciado

1 - 207

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 207
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Implementando un Componente Service

Nota: vea la Gua de Tareas para ms detalle.


1 - 208
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 208
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Interfaz de un Componente de Servidor

Un componente service provee tres mtodos:


z

start( )

Llamado cuando el servidor es iniciado Usado para la inicializaicn Llamado inmediatamente despus de completar el mtodo start( ) Realiza un loop por siempre para una tarea, y tiene un periodo de espera especfico. Usado para parar el mtodo run( )

run( )

stop( )

1 - 209

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 209
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Plantilla para el Run( )


// tareas de inicializacin // use una variable Boolean para ms control Do while true

// realiza tareas ... Sleep(10) // 10 Segundos para el sleep Loop

* La funcin Sleep( ) fue introducido en PowerBuilder 8

1 - 210

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 210
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

JagSleep( )
Usado si escribimos en versiones anteriores de PowerBuilder y no tenemos la funcin Sleep( ). Declare una subrutina local external Use libjdispatch.dll como el library

1 - 211

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 211
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Los componentes Shared permiten trabajar con datos persistentes y compartidos. Los componentes Shared proveen acceso conveniente a los datos comunes. Los componentes Shared no soportan el instance pooling. Los componentes Service son activados e inicializados cuando el servidor Jaguar es iniciado. Los componentes Service tienen un mtodo run( ) que puede ser ejecutado perpetuamente, independiente de cualquier interaccin con el cliente. Use componentes service para realizar procesos internos y servicios comunes.

1 - 212
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 212
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 9-1: Implementando el Catlogo de Productos


Client Client Client

EAServer

getData( )

getData( )

getData( )

Product
1 - 213
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 213
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 9-2: Implementando un Componente Service


Client

EAServer Product
1 - 214

ServiceProduct

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 214
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

PowerBuilder Distributed Developer v10.0

Mdulo 10: Web Targets y Componentes EAServer

1- 215
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Tpicos
Ambiente Web / Arquitectura Ambiente de Desarrollo de los Web Target Usando el Editor Web Desplegando el Web Target Llamando componentes EAServer desde un pgina Web 4GL Web Pages

1 - 216

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 216
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Objetivos

Al finalizar este mdulo, se debe estar hbil para


Crear un Web Target y el profile de Deployment z Crear una pgina 4GL Web usando el 4GL Web Page Wizard z Modificar una pgina existente no-4GL Web Page para darle capacidades de 4GL z Escribir cdigo usando el Coding Aids desde el System Tree z Deploy y Run a un Web Target z Ligar controles y variables z Accesar a un componente EAServer desde una pgina Web
z

1 - 217

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 217
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ambiente Web / Arquitectura


HTTP Web Server API Application Server (JSP/ ASP)

Browser

PowerBuilder Web Targets

EAServer

Corporate Data

1 - 218

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Base de datos

Almacena los recursos Web y los datos. Estos podran combinarse en la misma base de datos. A menudo ellos estn separados en su propia base de datos. Application Server

Extiende la funcionalidad del Web Server. PowerDynamo (incluido en EAServer) es un servidor de pginas que permite crear pginas web dinmicas. Microsoft ASP es otro ejemplo para la creacin de pginas web dinmicas. API Soporta las comunicaciones entre el Web server y el servidor de pginas (PowerDynamo). EAServer Almacena los componentes que pueden procesar la lgica de negocio, el manejo de las transacciones y la seguridad. Los Web Targets de PowerBuilder Es el ambiente de desarrollo integrado para desarrollar pginas Web, las utilidades incluyen la generacin rpida de documentos HTML, rpida generacin de cdigo para el lado del cliente y del lado del servidor, depuracin JavaScript, Wizards para la creacin y despliegue, design time controls y property sheets programming by property. Se puede desplegar las pginas web a sites FTP, a una base de datos en PowerDynamo y sitios Active Server Pages.

1- 218
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Arquitectura para construir Aplicaciones Web


Static Web sites Dynamic Web sites WebOLTP

1 - 219

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Estos son los tres tipos de soluciones que los negocios desean implementar en el Internet. Como los productos Sybase encajan en las soluciones para estas necesidades comerciales comunes?

1- 219
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Web Sites estticas

HTML Web Browser

HTTP

Web Server

1 - 220

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El primer desafio para muchas compaas es ir a a la Web. Las compaas desean una presencia en Internet, siempre que la presentacia ea limitada para una coleccin de pginas Web Estticas. PowerBuilder 9 permite la creacin de Web Targets. Con los Web Targets, los usuarios pueden crar pginas a travs de un editor WYSIWYG. PowerBuilder Web Targets puede tambin importar pginas web creadas con otras herramientas Web como Microsoft Frontpage y Macromedia DreamWeaver.

1- 220
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Web Sites Dinmicas

JSP HTML Web Browser HTTP

Web Server

PowerBuilder Web Targets

ASE / ASA

1 - 221

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Para publicar pginas Web dinmicas, PowerDynamo es un servidor de pginas rpido que puede acceder a una base de datos y formatear el contenido dinmico. PowerBuilder te brinda el editor HTML WYSIWYG HTML con soporte para:

Codificar Funcionalidad drag & drop desde el System Tree 4GL Web Pages para la fcil integracin con los componentes EAServer Design Time Controls para los Web DataWindow Property Sheets para habilitar el coding by property

Esto es una solucin Web pura. Sin embargo, la lgica de Negocio escrita en script PowerDynamo o JavaScript no es fcil reusar. El manejo de Transacciones, multithreading, y el soporte de conexin debe codificarse. Esto es perfecto para usar los Componentes EAServer. Generalmente, esto es una buena solucin para aplicaciones que no son transaccionales, stateless, o no interactivos: la publicacin de la base de datos Revisar el perfil del cliente (por ejemplo, frecuencia de millas de vuelo), mostrar la lista de productos y coleccin de datos (por ejemplo, registro en lnea para eventos, seminarios y as sucesivamente).

1- 221
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

WebOLTP
Enterprise Application Server

Java HTML

COM HTTP

Web Server

JSP

IIOP PowerBuilder CORBA EAServer


1 - 222
TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Soporta WebOLTP de alto volumen, aplicaciones transaccionales. Muchos clientes estn moviendo sus aplicaciones cliente/servidor existente a Web. Estas aplicaciones encajan en esta categora.

Como trabaja la comunicacin? Para clientes no HTML, el cliente se comunica con el EAServer a travs del IIOP. Para clientes HTML, El cliente se comunica con el servidor web a travs del HTTP. El servidor web usa CGI, ISAPI, o NSAPI para comunicarse con PowerDynamo. PowerDynamo se comunica con el EAServer a travs de un Java stub, MASP, o ActiveX. EAServer puede aceptar requerimientos HTTP directamente. Applets ejecutados en una pgina Web pueden conectarse al EAServer directamente a travs del IIOP. Las caractersticas de una aplicacin WebOLTP incluyen : a) Un volumen con muchas conexiones, b) Transaccional, c) Habilidad para manipular los resultados de datos, d) Una necesidad para la encriptacin de datos seguro, e) Habilidad para mantener el estado de informacin, f) Diseo basado en componentes, g) Soporte para clientes heterogneos, y h) Un ambiente de carga impredecible. Ejemplo: Comercio Electrnico, Banca electrnica.

1- 222
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Una solucin WebOLTP

El Enterprise Application Server (EAServer)


La capa media se ocupa del proceso de la aplicacin z La capa media es el componente ms crtico en una arquitectura WebOLTP z JSP incluido en el EAServer
z

Soporte para clientes ultradelgados (HTML) Servidor de Pginas

1 - 223

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 223
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Arquitectura

1 6 2 5 Web Server / Page Server


1 - 224

Base de datos 3 4

Servidor de Componentes

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1. El cliente inicia un requerimiento para una pgina Web

2. Si la pgina Web contiene un requerimiento para un componente EAServer o un Web DataWindow, la informacin es enviada al Servidor de Componentes. Este es el EAServer 3. El EAServer, a su vez puede necesitar acceder a la base de datos (si un componente tiene una sentencia SQL o la informacin se necesita para refrescar un Web DataWindow). 4. La base de datos retorna la informacin necesaria al Servidor de Componentes. 5. El Servidor de Componentes (EAServer) entonces pasa la informacin al servidor de Pginas la estructura de la informacin. 6. La informacin estructurada es pasada al usuario

1- 224
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Desarrollando Web Targets en PowerBuilder


Simplifica la creacin de Aplicaciones Web Automatiza la configuracin de deployment Dinmicamente extendido para los modelos de objetos soportados Automatiza el manejo de los links de los recursos Web Soporta la depuracin para pginas web y scripts

1 - 225

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Simplifica la creacin de aplicaciones Web porque te brinda muchos wizards para este desarrollo, as como utilizar objetos de PowerBuilder como los DataWindows, las curvas de aprendizaje utilizando PowerBuilder son menores. Automatiza la configuracin de despliegue(deploy) a travs del wizard de Deployment Configuration. Se especifica el tipo de servidor en la cual se desea ejecutar los archivos Web como: PowerDynamo, Active Server Pages o un file system que puede ser usado por cualquier servidor que se escoja. El Deployment Controllers ajusta / transforma la sintaxis del script del archivo de origen para convertirlo a los requerimientos del servidor Web escogido. Dinmicamente extiende el soporte a los modelos de objetos para proveer un modelo de objeto genrico con herramientas grficas y propiedades de hojas para simplificar la obtencin de las conexiones a la base de datos, integra el Web DataWindows, y los componentes EAServer. Si se sabe que la plataforma escogida es PowerDynamo o Active Server Pages se utiliza las especificaciones de la plataforma ms all del modelo de objetos genrico proporcionado. Automatiza el manejo de los links de los recursos Web. El proceso de construccin para los Web Targets verifica los enlaces entre archivos y reportes de cualquier enlace roto. Un enlace roto es una referencia a un recurso Web que no es localizado en una locacin especfica. Soporta la depuracin para HTML y soporta los lenguajes de codificacin

1- 225
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Arquitectura Abierta
El modelo de objeto Basic Web Target object soporta codificacin para mtlples applications servers Permite el despliegue a mltiples application servers Provee contenido dinmico para implementar el comportamiento usando cualquier script ECMA-compliant :

JavaScript z DynaScript z VBScript z JScript z Etc..


z

1 - 226

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 226
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ambiente de Desarrollo del Web Target


System Tree HTML Editor Script Editor Cascading Style Sheet Editor Frameset Editor Design-Time Controls (DTCs)

1 - 227

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 227
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ambiente de Desarrollo
Creando PowerBuilder Web Targets Importando pginas existentes, imgenes y cdigo Usando el Editor Web para crear Pginas Web Usando el Coding Aids en el Editor Web Desplegando los Web Targets

1 - 228

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 228
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Creando PowerBuilder Web Targets

Los Web Targets contienen todos los elementos necesarios para crear su website

1 - 229

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Un Web target es una aplicacin Web, que contiene todos los elementos necesarios para construir un Web site, archivos HTML, scripts, imgenes, componentes downloaded, como opciones de configuracin de conexiones a una base de datos, y despliegue. PowerDynamo Web Site, Este wizard crea una base de datos ODBC que deber contener al web target. Esto configura un mapping ODBC para el website, crea la base de datos, publica la base de datos y configura el despliegue por defecto para esta base de datos. Tambin crea un mapping para la URL para acceder a los archivos desde el web server. Web Site, Este wizard simplifica las preguntas para el nombre del web target y crea un target vaco en la ubicacin que se especifique. Este wizard debera ser usado cuando el web target no est bajo el mando de source control y si es un nuevo target (no un proyecto PowerSite existente creado en una versin anterior de PowerSite) JSP Target, Se usa el wizard del target JSP para construir una aplicacin Web y te ayuda a configurar las opciones de despliegue para desplegar una aplicacin Web hacia un application server, como EAServer o Tomcat. Migrate PowerSite 7.1 Project, Use el wizard del Migrate PowerSite 7.1 Project para traer un proyecto de PowerSite a PowerBuilder como un Web target. Se debe mantener una copia accesible a la base de datos del Component Manager en orden para migrar los proyectos PowerSite. Nota: PowerSite fue herramienta para disear pginas Web que vena con el PowerBuilder 7.0 a partir de la versin 8.0 fue integrada a PowerBuilder y ahora es representada por los Web Target. Source Controlled Web, Se usa el wizard del target Source Controlled para abrir un Web target que se encuentra dentro de un sistema de source control.

1- 229
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Importando Pginas Existentes, Imgenes y Cdigo

RMB sobre el Web Target


Import Files z Import Folder
z

Grficos existentes, pginas HTML y archivos JavaScript pueden ser importados desde el file system

1 - 230

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Presionar el botn derecho en el Web target donde deseas importar los archivos. Se puede importar uno o ms archivos de un directorio o todo el directorio.

Import Files permite que se pueda seleccionar uno o ms archivos en el Web Target.

Import Folder permite que se puede seleccionar e importar un directorio con todo su contenido. Un flder con el mismo nombre como fue seleccionado debe ser creado en el Web Target.

1- 230
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Creando una Pgina HTML en PowerBuilder

1 - 231

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Quick Web Page, es usado para poner una pgina rpida en el editor web.

Web Page, es un wizard simple que crea una pgina web simple. El wizard pregunta alguna informacin bsica acerca del cascading style sheet, headers/footers y la imagen para el background. 4GL Web Page, es un wizard ms sofisticado que configura las propiedades del 4GL. La Pgina Web 4GL permite que se pueda declarar la creacin e instanciacin de componentes EAServer, crea variables, maneja errores y otras opciones. Esto deber ser discutido en detalle en este captulo como una manera de acceder a los NVOs de PowerBuilder y otros componentes CORBA y EJB.

Web DataWindow Page, es un wizard sofisticado que consulta al usuario para poner un DataWindow existente en un design time control en la pgina web. Frameset Page, es un wizard que consulta al usuario para crear una pgina HTML frame. El wizard te pide la ubicacin y el nombre de los framesets.

Script, crea un archivo de texto en el web target que contendr el cdigo que haya escrito el usuario (como un archivo JavaScript para ser incluido en una pgina Web).

Cascading Style Sheet, este es el wizard que induce al usuario a crear una hoja de estilo con formato propio para asignarlas a las pginas que se van a crear, como para tener un estndar de desarrollo.

1- 231
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Usando el Editor Web para crear una Pgina Web

1 - 232

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 232
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Usando el Coding Aids en el Editor Web

Programacin Drop Programming desde el System Tree

1 - 233

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 233
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Configuraciones de Deployment

Las configuraciones de Deployment pueden ser modificadas o adicionadas accediendo a las propiedades del web target Ud. puede tener mltiples configuraciones de Deployment (Dynamo, ASP, basic) El orden de las configuraciones puede ser modificado

1 - 234

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Si se crea un Web Target usando el PowerDynamo WebSite Wizard, una configuracin de deployment fue configurada para el web Target.

Se puede crear configuraciones de deployment adicionales accediendo a las propiedades de los Web Target.
z z z

Dynamo ASP Basic (static file or FTP)

Para Desplegar un web target es similar a desplegar cualquier objeto objeto project de PowerBuilder. Se presiona el botn derecho en el target en el system tree y se selecciona Deploy desde el men popup.

1- 234
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Deploy a un Web Target

1 - 235

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 235
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Llamando a EAServer desde una Pgina Web


Debe generar y compilar Stubs para el componente EAServer Dos mtodos para llamar desde un cliente Web

Codificacin Manual (Necesario en versiones anteriores de PowerSite) z A travs de una Pgina Web 4GL (preferido en PowerBuilder 8 y 9)
z

Page Properties Programacin Drag & Drop

1 - 236

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 236
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Generar y Compilar un Java Stub

1 - 237

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Generate Java stubs en el Jaguar Manager. Se puede generar Java stubs para un componente PowerBuilder. 1.Presionar el botn derecho en el componente o package y seleccionar Generate Stub/Skeleton.
2. 3.

Especificar el directorio que deseas donde el Jaguar escribir los archivos stub. Activar el Check del Compile Java Stubs.

Muchos archivos Java son generados por el EAServer. Estos archivos comprenden el stub y las clases.

1- 237
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Manualmente llamando componentes EAServer


<HTML><TITLE>Result.stm</TITLE><BODY><H1>Loan Calculator</H1> <!--script /* Inicilizar el Java stub */ var loan = java.CreateComponent("finance/n_loan", "iiop://localhost:9000", "jagadmin", ""); /* Invocar el mtodo del componente EAServer */ var payment = loan.of_calculate(document.value.amount, document.value.months); /* Procesar el resultado de la llamada del mtodo */ document.WriteLn(Su pago mensual es: "+payment); --> </BODY></HTML>

1 - 238

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

El DynaScript para inicializar un Java proxy es una declaracin simple de variable y llamada de la funcin .

La funcin CreateComponent( ) inicializa el stub e identifica el servidor EAServer.

Si la llamada es satisfactoria, se puede entonces invocar los mtodos del componente. El document.value es DynaScript que permite obtener los valores desde un campo en su pagims web. Por ejemplo, document.value.amount obtiene el valor en el campo llamado amount.

La funcin document.WriteLn( ) permite mostrar la informacin dinmica en la pgina web.

1- 238
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Pginas Web 4GL


Manejo de datos de pginas entre pginas Web (usando parmetros de pginas, variables de pginas, y variables session) Acceder a los datos desde componentes EAServer Ligar datos a controles en su pgina Manejar la nevegacin de la pgina Crear server scripts con un mnimo de esfuerzo de codificacin Procesos de depuracin de pginas

1 - 239

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 239
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Creando una pgina Web 4GL


Wizard Modify Page Property

1 - 240

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Si se est creando una nueva pgina web, se puede usar el 4GL Web Page Wizard. El Wizard puede acceder a los componentes EAServer que puedes necesitar usar, opciones de depuracin y otras opciones. Si ya hay una pgina web existente, se puede modificar esto para que se convierta en una pgina web 4GL, activando el Checkbox en las propiedades de la pgina la opcin es Enable the 4GL Web Server Side Event Model.

1- 240
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Creando Variables 4GL Web Page

1 - 241

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

La cracin de variables para toda una sesin se ha simplificado con las pginas Web 4GL. En pginas Web no 4GL, las variables son declaradas en cdigo. Las variables Session son creadas llamando a mtodos en el script del servidor. Con 4GL Web Pages, sin embargo, este proceso es simplificado declarando variables en las propiedades de las pginas web.

1- 241
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Ligando Controles a Variables

1 - 242

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

Una vez que las variables son declaradas ellos pueden se ligados a los controles en las pginas Web 4GL. Ligando el el single line edit a la variable session username en este ejemplo, cuando el usuario ingrese algo en el singleline edit en tiempo de ejecucin, la variable contendr lo ingresado. Esta variable entonces puede ser usado en scripts del servidor segn el tiempo de vida especificado para esta variable.

1- 242
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Llamando Componentes EAServer (4GL)


STEP 1

Use el 4GL Web Page Wizard y cuando pregunte por los componentes EAServer, seleccionar todos a los que desea accesar o Acceder al tab EAServer en el Page Properties de un 4GL Web Page. Adicionar los componentes que se desea acceder

STEP 2

Localizar el mtodo en el componente EAServer en el tab Components del System Tree. Use la programacin Drag & Drop para su server script (o simplemente digitar la llamada de la funcin)

1 - 243

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 243
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Revisar

1 6 2 5 Web Server / Page Server


1 - 244

Database 3 4

Component Server

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1) El cliente inicia un requerimiento para una pgina web

2) Si la pgina Web contiene un requerimiento para un componente EAServer o un Web DataWindow, la informacin es enviada al servidor del Componente. Este es el EAServer.

3) El EAServer, puede acceder a la base de datos (si un componente tiene acceso a SQL o la informacin es necesaria publicar en el Web DataWindow). 4) La base de datos retorna la informacin necesaria para el Servidor del Componente 5) El Servidor del Componente (EAServer) entonces pasa la informacin al Servidor de Pginas con la informacin formateada 6) La informacin formateada es pasada al usuario

1- 244
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Un Web target es una coleccin de archivos y componentes usados para crear una aplicacin Web que puede representar todo un Web site. Los Web sites Database pueden ser replicados para proveer acceso fuera de lnea o a usuarios conectados ocasionalmente . Los Web targets pueden contener cascading style sheets, imgenes, pginas HTML, Framesets, archivos de cdigo JavaScript y pginas HTML especiales que contienen los componentes DataWindows .

1 - 245

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 245
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Resumen
Se puede invocar los mtodos de los componentes EAServer desde un cliente HTML. Las Pginas Web 4GL simplifican

El reporte de Errores z Creacin de Variables z Ligar datos a controles z Instanciacin de componentes


z

El cdigo DynaScript es para invocar un mtodo de un componente que usa un Java stub. Generar el Java stub desde el EAServer Manager.

1 - 246

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 246
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 10-1
Crear Stubs/Skeletons para el componente Loan Crear un Web Target para la aplicacin Loan Crear un 4GL Web Page para accesar al mtodo calculate del Componente Desplegar y probar

1 - 247

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 247
Derechos Reservados de TechEra e-Learning

PowerBuilder Distributed Developer v10.0 PBDD10

Mdulo 1: Arquitectura Distribuida

Lab 10-1 Interrogantes


Revisar los pasos para acceder al Componente EAServer desde una pgina Web Preguntas?

1 - 248

TechEra e-Learning 2005 Derechos Reservados, este producto solo puede ser usado para uso personal y no para otros fines

1- 248
Derechos Reservados de TechEra e-Learning

You might also like