Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Optimizando Aplicaciones.
1
PUNTOS IMPORTANTES EN LA
DEFINICION
DE TRANSACCIONES
Definición de Modos
Modo Inicial
2
Micro/LAN:
AS/400
• El modo para el PRIMER NIVEL se define con:
– DEFAULT_MODE para el nivel
» SIN SUBFILE
- No se acepta la Primary Key: update
- La Primary Key es aceptada: insert
3
Loop Once
Delete Cascade
4
EJEMPLO: Delete Cascade
Orden de Compra
OrdNro*
OrdFch
PrvCod
PrvNom Tabla Orden
AnaNro
AnaNom
(PrdCod*
PrdDsc
OrdCnt
OrdPrc
PrdPrc)
OrdImpTot
Entregas
OrdNro* Tabla Entregas
PrdCod*
(EntFch* Tabla Entrega1
EntImporte)
- Transacción Orden
Se desea eliminar una Orden
- Transacción Orden
Se desea eliminar una Linea de la Orden
- Transacción Entregas
Se desea eliminar una Linea de la Orden
Uso de &Mode
'INS' - Insert
'UPD' - Update
'DLT' - Delete
5
EJEMPLO: Transacción de pedidos
PedNro*
PedFch
PrvCod
PrvNom
PedImpTot
(PrdCod*
PrdDsc
PedCnt
PrdPrc)
2 = Modificar 4 = Eliminar
F6 = Ingresar Pedidos
6
Eventos:
Event Enter
For each line
if &Op = '2' // Modificar
call(TPedido,PedNro, 'UPD')
endif
if &Op = '4’ // Eliminar
call(TPedido,PedNro, ‘DLT’)
endif
endfor
refresh
EndEvent
PUNTOS IMPORTANTES EN LA
DEFINICION
DE TRANSACCIONES
Definición de Prompts y Refcalls
7
PROMPTS
• Prompt
– La facilidad de prompt despliega todos los valores posibles que pueden ser
asignados a foreign keys, permitiendo al usuario seleccionar el valor deseado.
• Autoprompt
– Existe una autoprompt para cada nivel de una transacción que permite
visualizar y elegir un registro de la tabla base del nivel de una Transacción.
– Prompt : PC > F4
AS/400 > F4
Rule Refcall
Refcall('Pgm_Nombre', <Par1>,....<ParN>);
8
Rule Prompt
Prompt('Pgm_Nombre', <Par1>,....<ParN>);
•Esta rule se utiliza para llamar un programa que permita al usuario seleccionar
valores posibles de una lista.
•Los parámetros <Par1> .. <ParN> pueden ser tanto atributos como variables.
Si son atributos no tienen porqué formar una FK.
Foreign Key
Sustituye al Prompt que genera GeneXus por defecto.
Atributos Secundarios
Si es uno solo, habilita el F4 sobre el mismo.
Si son más de uno, habilita el F4 sobre el primero en la estructura de la
transacción.
Variables
Si es una sola, habilita el F4 sobre la misma.
Sin son más de una, habilita el F4 sobre la primera en ser aceptada (en las
rules).
9
Ejemplo
TRANSACCIONES:
TABLAS:
SubCateg
*CatCod
*SubCatCod
SubCatNom
Movimien
*MovNro
CatCod
SubCatCod
10
EJEMPLO: Se elimina la Transacción Categoría
Tablas:
SubCateg *CatCod
*SubCatCod
SubCatNom
Movimien
*MovNro
CatCod
CatNom
SubCatCod
PUNTOS IMPORTANTES EN LA
DEFINICION
DE TRANSACCIONES
Disparo de Rules
11
EJEMPLO: Transacción Factura
FacId*
FacFch
CliCod
CliNom
CliSdo Reglas:
CliDir default(FacFch ,today() ) ;
(PrdCod* error('No hay Stock suficiente') IF PrdStk< 0;
PrdDsc subtract(FacLinCnt,PrdStk);
FacLinCnt
FacLinPrc
PrdPrc Fórmulas:
PrdStk
PrdStkMin FacLinImp=FacLinCnt*FacLinPrc
FacSubTot = SUM (FacLinImp)
FacLinImp)
FacSubTot FacIva = FacSubTot * 0.22
FacIva FacTotCal = FacSubTot + FacIva
FacTotCal
DISPARO DE RULES
GeneXus
GeneXusse
seencarga
encargade
dedeterminar
determinarelelorden
ordende
deDisparo
Disparodedelas
lasreglas
reglassegún
segúnlas
las
dependencias
dependenciasde
delos
losatributos
atributosindicados
indicados
–– ORDEN
ORDENDE
DEDECLARACION:
DECLARACION:
error('No
error('Nohay
hayStock
Stocksuficiente')
suficiente')IF
IFPrdStk
PrdStk<<0;
0;
subtract(FacLinCnt,PrdStk);
subtract(FacLinCnt,PrdStk);
–– ORDEN
ORDENDE
DEEVALUACION:
EVALUACION:
subtract(FacLinCnt,PrdStk);
subtract(FacLinCnt,PrdStk);
error('No
error('Nohay
hayStock
Stocksuficiente')
suficiente')IF
IFPrdStk
PrdStk<<0;
0;
12
Orden de Disparo
TOT
FECHA
IVA FECHA
SISTEMA
.
0.22
ERROR
STOT
SUM
STOCK
IMP
subtract
PRECIO CANT
13
Level(Atributo)
Transacción Factura
FacId*
CliCod
...
( PrdCod*
FacLinCnt
PrdPrc
FacLinImp)
...
FacTotCal
Regla:
Error('No puede modificar la linea') IF Modified() .and.
Level(PrdCod);
CliCod*
CliNom
CliSdo
CliDir
CliSts
Llama a un procedimiento que realiza la impresión de los datos del cliente
y setea el atributo Status.
LLAMADAS INCORRECTAS
call('pficha', CliCod) if Insert .and. After(Confirm);
call('pficha', CliCod) if Update .and. After(Confirm);
LLAMADAS CORRECTAS
Si cada uno constituye una UTL:
call('pficha', CliCod) if After(Trn) .and. (Insert .or. Update) ;
Si ambos programas se consideran una única UTL:
call('pficha', CliCod) if After(Insert) .or. After(Update);
14
After(Level(Atributo))
EJEMPLO:
Factura__Proveedor
Factura
PrvCod*
FacId*
...
FacTotIng
( PrdCod*
FacLinCnt
PrdPrc
FacLinImp)
...
FacTotCal=SUM(FacLinImp)
– Rule:
Error('El total ingresado no coincide con el total
calculado') IF FacTotIng<> FacTotCal;
After(Level(Atributo))
Según el árbol de evaluación cada vez que el importe cambie,
cambiará el total calculado.
TOT CALC
IVA
0.22
STOT
SUM
IMP
PRECIO CANT
15
After(Level(Atributo))
After(Confirm)
EJEMPLO: Numeración Automática
Caso1
FacNro = udp(’PNumera’, ‘FAC’) IF insert ;
Caso2
FacNro = udp(’PNumera’, ‘FAC’) IF after(insert );
Lo correcto es :
FacNro = udp(’PNumera’, ‘FAC’) IF insert .and.
after(Confirm);
16
After(Trn)
EJEMPLO 1:
Queremos llamar a Líneas de Factura después de
ingresar el Cabezal de la Factura.
CabezalFactura LineasFactura
FacId* FacId*
FacDatos (PrdCod*
CliCod FacLinCnt
FacLinImp)
FacTot
Si se considera el cabezal como una UTL y las líneas como otra UTL.
Call ('TLinfac', FacId) IF after(Trn);
After(Trn)
– EJEMPLO 2:
Factura Cliente
FacId* CliCod*
FacFch CliNom
CliCod CliSdo
CliNom CliDir
CliSdo
CliDir
(PrdCod*
PrdDsc
FacLinCnt
FacLinPrc
PrdPrc
PrdStk
PrdStkMin
FacLinImp)
FacSubTot = SUM(FacLinImp)
FacIva = FacSubTot * 0.22
FacTot= FacSubTot + FacIva
17
Rules de la trn Facturas:
add(FacTotal, CliSdo);
call('pgmname', CliCod)
IF After(Level(PrdCod)); INCORRECTA
call('pgmname', CliCod)
IF After(trn); CORRECTA
• EJEMPLO 1:
• EJEMPLO 2:
| call('pgmname',&var1,&var2,&flag) if After(Confirm);
|
| error('xx') if After(Confirm) .and. &flag = 'N';
v
18
Eventos en una Transacción de dos niveles
FacId*
FacFch ---------> AFTER (FacFch)
CliCod
CliNom
CliSdo
CliDir ------> | AFTER (CliDir)
(PrdCod* | AFTER(CONFIRM).AND.LEVEL(FacId)
PrdDsc | AFTER (INSERT|UPDATE|DELETE)
FacLinCnt
FacLinPrc
PrdPrc
PrdStk
PrdStkMinimo
FacLinImp) --> | AFTER (LEVEL(PrdCod))
FacSubTotal | AFTER (TRN)
FacIva
FacTotal
USO Y RECOMENDACIONES
EN EL USO DE SUBTIPOS
19
USO DE SUBTIPOS
• Consideraciones generales.
20
A. Atributos conceptualmente iguales
que cumplen roles diferentes.
RESERVAS CIUDADES
ResNro* CiuCod*
CiuCod (orig) CiuNom
CiuCod (dest)
RESERVAS CIUDADES
ResNro* CiuCod*
CiuCodOri CiuNom
CiuCodDes
RESERVAS CIUDADES
21
A. Atributos conceptualmente iguales
que cumplen roles diferentes.
• Utilización de atributos secundarios del supertipo
definiendo atributos subtipos dentro de un grupo
Definición de Subtipos
22
B. Especialización de atributos
• Se definen PrvNro y CliNro como subtipos
EMPRESAS PROVEED CLIENTES
EmpNro* PrvNro* CliNro*
EmpNom PrvSal CliSal
EmpRuc
EmpTel
EmpDir Proved.
Empresas Clientes
B. Especialización de atributos
23
C. Evitar controles de integridad
referencial
Historico de Compras Productos
PrvCod* PrdCod*
PrvNom PrdTxt
PrdCod*
PrdTxt
HisCnt
24
C. Evitar controles de integridad
referencial
PrvCod*
PrvNom
PrdHisCod* (Subtipo de PrdCod)
PrdHisTxt (Subtipo de PrdTxt)
HisCnt
OrdCmpNro*
PrvCod
PrdCod
25
TABLA EXTENDIDA- HERENCIA
• Subtipos Simples.
Los subtipos heredan todos las propiedades del Supertipo.
(ProvNro y CliNro son subtipos de EmpNro)
EMPRESAS PROVEEDORES CLIENTES
EmpNro* ProvNro* CliNro*
EmpNom EmpNom EmpNom
EmpRuc ProvSdo CliSdo
EmpTel
EmpDir
TABLA EXTENDIDA-
HERENCIA
• Subtipos múltiples
SECCIONES
DptoCod* tabla Depart
DptoNom
(SeccCod* tabla Seccion
SeccNom)
EXPEDIENTE
ExpNro* tabla Exped
DptoCodIni ST de DptoCod
SeccCodIni ST de SeccCod
DptoCodAct ST de DptoCod
SeccCodAct ST de SeccCod
26
TABLA EXTENDIDA-
HERENCIA
DptoCod*
SeccCod*
SeccNom
ExpNro*
DptoCodIni
SeccCodIni
DptoCodAct
SeccCodAct
27
TABLA EXTENDIDA- HERENCIA
TABLA EXTENDIDA-
HERENCIA
DptoCod*
SeccCod*
SeccNom
ExpNro*
DptoCodIni
SeccCodIni
DptoCodAct
SeccCodAct
28
Consideraciones
•El subtipo y supertipo serán definidos del mismo tipo,
GeneXus lo determina así y cuando se quiere definir un
subtipo este "hereda" la definición del supertipo.
Consideraciones
• No se pueden actualizar los subtipos inferidos (Add,
Subtract) -
29
FORMULAS
AGGREGATE SELECT
Consideraciones
30
FUNCION FIND
Sintáxis:
FIND RECURSIVO
Se llaman finds recursivos a aquellos que para resolverse
recorren la misma tabla sobre la que esta definida la
fórmula.
EJEMPLO:
MovNro*
MovFch
BcoId
MovNroChe
MovImpChe
FndNroChe
MovNroAux
BcoIdAux
MovNroCheAux
MovFndOtroChe = Find(MovNro, BcoId= BcoIdAux .and.
MovNroChe = MovNroCheAux
.and. MovNro<>MovNroAux, 0)
31
FIND RECURSIVO
Se llaman finds recursivos a aquellos que para resolverse
recorren la misma tabla sobre la que esta definida la
formula.
PUNTOS A PRODUNDIZAR EN
EL MANEJO DE WORK PANELS
32
DETERMINACION DE LA TABLA BASE
DE UN WORK PANEL
• PANEL A PARTIR
• EVENTOS DE LOS
• REGLAS ATRIBUTOS
PANEL
– TODO ATRIBUTO QUE INTERVENGA EN EL PANEL
EVENTOS
– TODO ATRIBUTO QUE ESTE FUERA DE UN GRUPO FOR
EACH
REGLAS
– TODO ATRIBUTO QUE ESTE EN UNA REGLA
» HIDDEN( )
» ORDER( )
Ejemplo:
Trn Productos
ProdId* Tabla: PRODUCTO
ProdDsc
Trn Facturas
FacNro* Tabla: FACTURA
FacFech
(FacLinNro* Tabla: FACTURA1
ProdId
ProdDsc
FacLinCnt)
33
Work Panel de Selección de Productos
Rules
parm(&V15 ) ;
order(ProdId ) ; Event Enter
Conditions &V15 = ProdId
ProdId >= &C15 ; Return
ProdDsc .LIKE. &C16 ; EndEvent
Parameters : &V15
FOR EACH PRODUCTO
Order : ProdId
Index : IPRODUCT
Navigation filters:
Start from:
ProdId >= &C15
Loop while:
Not end of table
Constraints:
ProdDsc .LIKE. &C16
34
WORK PANELS SIN TABLA BASE
Ejemplo: Mostrar para cada cliente el total facturado, pero sólo de los
clientes que tienen facturas.
Event Load
for each CliId
defined by FacFch
&cli =CliNom
&tot =0
for each
&tot =&tot
+FacTotal
endfor
load
endfor
EndEvent
BREAK FACTURA
Order : CliId
Navigation filters:
Loop while:
CliId = CliId
---->> FACTURA ( FacId )
END FOR
END FOR
END EVENT
35
WORK PANELS SIN TABLA BASE
Consideraciones
Corte de Control
Para determinar un corte de control en un work panel
con tabla base el criterio del corte hay que establecerlo
con la rule:
order (att1,..,attn)
36
WORK PANELS / INTEGRIDAD BASE DATOS
WORK PANELS - PROCS
INS
WKP PROCS UPD
DEL
IMPLEMENTACION MANUAL DE LOS
CONTROLES INTEGRIDAD
PUNTOS A PROFUNDIZAR EN
REPORTES Y PROCEDIMIENTOS
37
Fórmulas en Procedimientos
• Fórmulas no redundantes
– Se calculan en todos los objetos que se utilizan. En un
procedimiento, se calculan con el valor que tiene el registro el el
momento de leerlo, no luego que se actualiza
• Fórmulas redundantes
– No se actualizan. Hay que calcularlas y actualizarlas en forma
manual.
38
New en la misma tabla de For Each
Tabla de Medicos Tabla de Consulta
MedCod* TurFch*
MedNom TurCod*
EspCod MedCod*
EspDsc ConNro
END NEW
END FOR
39
New en la misma tabla de For Each
SOLUCION:
40
New en la misma tabla de For Each
NEW CONSUL
Key : TurFch, TurCod, Medcod
41
Restricciones en la Actualización
• No se puede realizar ninguna actualización en
un For Each que recorre una tabla por índice
temporal
– En ese caso se debe construir el índice de usuario o elegir
otro orden por un índice existente
• No se puede actualizar ningún atributo del
índice que se esta utilizando en el For Each
• (XBase) Se pierde el puntero al actualizar
atributos de un índice que se esta utilizando en
el programa llamador.
For Each A B C For Each
defined by C defined by C
call(‘rprog2,A,& nuevo) B = & nuevo
Endfor Endfor
IMPACTO Y REORGANIZACION
DE LA BASE DE DATOS
42
Impacto de la base de datos
• Impact Database
• Impact From
• Impact Objects
• Restore Model
43
Impacto de la Base de datos
Table FACTURA conversion procedure
----------------------------------------------------------------
Table Structure:
FacNro* FACTURA N(3)
FacFch FACTURA D(8)
CliCod (New) (Null) N(2)
44
Reorganización en AS/400
Reorganización en PC/CS
• MENU y RMENU
45
Recomendaciones finales
INTEGRIDAD TRANSACCIONAL
Y
CONTROL DE CONCURRENCIA
46
Conceptos Teóricos
• Control de Concurrencia
• Tipos de Diálogo
– Conversacional
– Pseudo Conversacional
• Integridad Transaccional
• Unidad de Trabajo Lógico (UTL)
Conceptos Teóricos
• Control de Concurrencia:
– controles para evitar inconsistencias en
los datos cuando se trabaja en ambiente
multiusuario
47
Conceptos Teóricos
• Diálogo Conversacional
– Esquema:
1. aceptar datos
2. validar usando locks
3. pedir confirmación
4. actualizar la base de datos
5. liberar locks
Conceptos Teóricos
• Diálogo Pseudo Conversacional
1. aceptar datos
2. validar
3. pedir confirmación
4. lockear los datos y validar que no hayan sido
modificados
5. si los datos no cambiaron actualizar la BD y
liberar los locks
6. sino informar al usuario que los datos fueron
cambiados.
48
Conceptos Teóricos
• Integridad Transaccional
Conceptos Teóricos
49
Enfoque GeneXus
• Control de Concurrencia
– Locks
– Ambiente Client/Server
– Ambiente Centralizado
• UTL
• Integridad Transaccional
Control de Concurrencia
50
Control de Concurrencia
Concurrencia en Client/Server
– Lock Mode
– Isolation Level
51
Concurrencia en Client/Server
• Valores:
– Use Conversational Dialog
– Check Updated Tables only (*)
– Check all accessed tables
Co n v e r s a c i o n a l
Tipos de Diálogo
Obtener
Datos
Grabar BD
Lockear
Eventos After
Ins/Upd/Del
Validar
datos
Commit
Pedir
Confirmación
Deslockear
Confirma?
Evento
After(TRN)
Evento
After(confirm)
52
Tipos de Diálogo
Obtener
Datos Validar
cambios
Validar
datos No hubo
cambios?
Pedir
Confirmación
• Grabar BD
Confirma?
Eventos After
Ins/Upd/Del
Evento
After(confirm)
Commit Deslockear
Pseudo
Lockear
Evento
After(TRN)
Concurrencia en Client/Server
• Valores:
– Do not specify lock level (*)
Conversacional
53
Concurrencia en Client/Server
– Read Uncommited
Concurrencia en Client/Server
54
Concurrencia en Client/Server
• ¿Qué sucede cuando un programa que actualiza
la BD encuentra un registro lockeado?
Transacciones
Cuando expira el time-out despliega un mensaje
indicando que el registro esta siendo usado por
otro usuario. El usuario puede reintentar la
operación.
En SQL Server no se despliega mensaje y queda
esperando indefinidamente hasta que se libera el
registro.
Concurrencia en Client/Server
Procedimientos
55
Concurrencia en Client/Server
- Time-out
Desde GeneXus no es posible configurarlo
Concurrencia en Access
56
UTL en GeneXus
• UTL en Transacciones
– Por defecto se define el alcance de la UTL
como toda la transacción
• UTL en Procedimientos
– Por defecto se define el alcance de la UTL
como toda el programa.
• Comandos
– Commit
– Rollback
Integridad Transaccional
57
Integridad Transaccional en
Client/Server
• Transactional Integrity
• Yes (*)
• No
• File Views
• siempre tienen IT o no depedendiendo del valor de
la preference
• Transactional Integrity = No
• DB2/400 e Informix desactivan la IT
• El resto de los DBMSs entran en modo autocommit
Integridad Transaccional en
Client/Server
• Base de datos centralizadas
• Todas las tablas en el servidor
• El DBMS asegura la IT
58
Integridad Transaccional en
Client/Server
• Base de datos Informix
– ANSI
• Siempre se trabaja con IT independientemente del valor de la
preference Transactional Integrity
– Buffered Logged
• Se trabaja con IT dependiendo del valor de la preference
Transactional Integrity, excepto en la reorganización donde no
tendrá IT
– Not Logged
• No se trabaja con IT independientemente del valor de la
preference Transactional Integrity
Integridad Transaccional
– Commitment
– Commit on Exit
– Confirm Transaction
59
Integridad Transaccional
Object Properties
• Commitment
– Valores:
• Enabled (*)
• Disabled
• Consideraciones
– Válida solo en AS/400
Integridad Transaccional
Object Properties
• Ejemplo property Commitment
Commitment=Disabled
Tabla
Facturas
60
Integridad Transaccional
Object Properties
• Commit on Exit
– Valores:
• Yes (*)
• No
• Consideraciones
– No es válida si tiene Commitment = Disabled
Integridad Transaccional
Object Properties
• Ejemplo property Commit on Exit
Commit on Exit = No
61
Integridad Transaccional
Object Properties
• Confirm Transaction
– Valores:
• Yes
• No (*)
• Consideraciones
– Es válida si tiene
Commitment = Enabled y
Commit on Exit = Yes
DEFINICION Y MANTENIMIENTO
DE REDUNDANCIAS
62
Definición de Redundancias
• Redundancia Referencial
– Para definición de índices de usuario
– Por límites en la definición de una fórmula Aggregate/Select
Mantenimiento de Redundancias
63
Redundancy load Utility
64
Mantenimiento a través de
Transacciones
• Toda transacción que defina una tabla cuyos atributos
secundarios estan definidos redundantes en otras tablas
llamará a un programa para actualizar las redundancias
Consideraciones
65
EFICIENCIA Y PERFORMANCE
DE LAS APLICACIONES
Tips de optimización
• New con When duplicate vs. For each con New.
New &Existe=‘N’
Cliente=X For each
Saldo =Y Where Cliente=X
When duplicate Saldo=Y
For each &Existe=‘S’
Saldo=Y Endfor
Endfor If &Existe=‘N’
Endnew New
Cliente=X
Saldo= Y
Endnew
Endif
66
Tips de optimización
Tips de optimización
67
ARQUITECTURA DE
MULTIPLES CAPAS
• Generador C/SQL
68
Generadores del Modelo
• Generador para la Reorg. (el que existía )
– Usado para creación y reorganización de la base
de datos.
– File/Edit Model/Generator
• Generador por Default para los objetos
– En un principio coincide con el de la Reorg.,
pudiéndose elegir otro.
– File/Edit Model/Tab de “Generators”
• Generadores secundarios
– File/Edit Model/Tab de “Generators”
• Se controlan combinaciones válidas
69
Cómo decide GX el generador
para cada objeto ?
• Objetos Main
– Por defecto se generan con el generador Default.
– Si se quiere generar con otro generador:
• Information/Tab de Options/Generator
• Objetos no Main
– Se utilizan los generadores de los objetos Main que
lo llamen (directa o indirectamente).
70
INTRODUCCION A
CLIENT/SERVER
Qué es C/S ?
71
Tipos de Client/ Server
72
Client / File Server
FILE / Servidor
SERVER
Clientes de Datos
Archivos
Red
Server
Red
73
Arquitectura Client / Database
Server
DB2/400 AS/400
74
Model Properties
• Tables in Server
• Local Tables
• Connect to Server
• Data Source Name
•Outer Join -> Es posible generar con Outer Join para: Oracle,
DB2/400, DB2 Common Servers e Informix.
75
INTRODUCCION A
PAGINAS WEBS
Web
• Páginas gráficas con hipertexto
• Dos tipos fundamentales:
– Páginas estáticas
HTML standard.
Generación con algunas herramientas.
– Páginas dinámicas
GeneXus
ASP
···
76
Web - Páginas Estáticas
• Información general
• Marketing
• Información similar a la que se distribuye en
folletos y documentos
• Acceso rápido y cómodo a información
• Direcciones de correo electrónico para
información y soporte
• Mantención de alto costo
• Sin valor agregado
77
Páginas Dinámicas - Ejemplos
• Home Banking
• Divulgación de información (con y sin
costo)
• Comunicación con proveedores
• Intranet (Información dentro de la empresa)
• Intercambio de datos y documentos
• VENTA DIRECTA
Páginas Páginas
Estáticas Dinámicas
78
URL
protocol://host/path/filename[?parm1,…,[parmn]]
protocol:
Especifica el protocolo de acceso.
Ejemplos: file, ftp, http, telnet
host:
Nombre del host al cual deseamos conectarnos.
Ejemplo: www.artech.com.uy
path/filename:
Ubicación y nombre del documento en el servidor
[parm1,...,[parmn]]
Información opcional para consultas
Protocolo HTTP
Conexión/Solicitud
Respuesta/Cierre
79
HTML
<HTML>
<HEAD>
<TITLE>Esta es mi primera página</TITLE>
</HEAD>
<BODY>
Esto muestra de una forma muy <I>simple</I>,
la estructura básica de un documento HTML.
</BODY>
</HTML>
80
Browser WWW
(cliente)
APLICACION
• So
CGI
m
et
‚
er GI
un llC
fo Ca
rm
l
de I
FORM ta G ƒ
u es a C
p m
e s ra
R rog
Respuesta del P
Programa CGI
Servidor
INTERNET
Servidor : WEB SERVER
Microsoft Internet Information Server
Netscape Server
Links
Páginas
HTML
Cliente : BROWSER
NetScape, MS Internet Explorer
81
Topología
Topología
Servidor Web
Windows NT
Web Browser UNIX
AS 400
Internet
Intranet
Servidor de
Base de Datos
DB2, Informix,
Microsoft SQL Server,
Web Browser Oracle, Access
Web Servers
• Windows NT • Windows 95
– Microsoft Internet – WebSite Professional
Information Server – Fnord
– Netscape – Personal Web Server
• UNIX (FrontPage 97 y 98)
– Netscape
– Oracle
• AS/400
– IBM
82
WEB PANELS
• Interacción con la Base de Datos
• Desarrollo Inmediato
83
Web Panels VS. Work Panels
• Algunas propiedades deben setearse desde
código
• Algunas propiedades de objetos no están
implementadas o no funcionan
• El display final no corresponde
necesariamente con el de diseño
• No se han implementado todos los controles
de Windows
• El tamaño de pantalla no está limitado a una
resolución en particular
84
Web panel
85
Algunas características de los
Web panels
Son permitidos call’s a (botones y
eventos):
• Otros Web Panels o a sí mismo
• Procedimientos
Código embebido:
• Html
Ej.:
Event Start
86
Código embebido:
• JavaScript
Ej.:
Event Start
&c=‘<Script lenguage=“JavaScript”> alert(“Bienvenido a nuestra página
Web”)</script>’
mensaje.caption=&c
EndEvent
Seguridad
• ¿Es segura mi aplicación en Internet?
– ¿es segura la comunicación en Internet?
– ¿quién puede acceder a mi base de datos?
– ¿quién puede acceder a mi aplicación?
87
Seguridad a nivel de Web Server
• Criptografía
DBMS
88
Seguridad a Nivel de Aplicación
Sesión, cliente
Sesión,
cliente
Sesión, cliente
Generadores - Servidores
DBMS
VB Access, Oracle, MS SQL Server, Informix, DB2 (NT, RS/6000, OS/2)
C/SQL Oracle, MS SQL Server, DB2/6000
RPG AS/400
89
Requerimientos (Visual Basic)
• Servidor Windows 95, NT 3.5 o NT 4.0
– WEB Server
– Visual Basic 4.0 32 bits en adelante
– Webifce.dll (sólo VB 4.0)
• Cliente desarrollo GeneXus
– Visual Basic 32 bits en adelante
– Web Browser
• RED TCP/IP
90
Configuración del Modelo
GeneXus
MODEL
– PROPERTIES
– PREFERENCES
– EXECUTION
Model Properties
91
Model Properties:
EXECUTE (VB)
Model Properties:
PREFERENCES
• GENERAL
– VISUAL BASIC VERSION: 4.0 (32 BITS)
• WEB INFORMATION
– PROTOCOL SPECIFICATION (sólo para
VB y C/SQL)
• CLIENT SERVER INFORMATION
– Connect to Server
– Data Base Name
– Data Source Name
92