Documentos de Académico
Documentos de Profesional
Documentos de Cultura
: . ._ 1·¡·,. DO
,._. '°
~ " l.:.
T1"" ~
1
..
/ _:~ '
' , .., ·...
-. ·, ")
.
:.; < .
·,.;
·: •:
Jurado:
M.A. Adriana Román Rodríguez Presidente
M.S.I. Rafael Martínez Casanova Secretario
M.C. Ralf Eder Lange Vocal
4
Tradicionalmente las aplicaciones se han desarrollado en AS/400 por medio
de lenguajes nativos como RPG y COBOL/400. Para un desarrollador de
aplicaciones de este tipo, el cambio hacia la tecnología cliente/servidor es
complejo, principalmente debido a que se requiere de aprender un lenguaje
visual bajo el ambiente Windows y conocer el uso de Interfaces de
Programación de Aplicación (APls).
5
CONTENIDO
Página
1.1. Antecedentes 8
1.2. Justificación 10
_1.3 . Objetivos 13
1.4. Metodología 13
6
CAPÍTULO 5: EL ESTÁNDAR ODBC 54
BIBLIOGRAFÍA 97
7
CAPÍTULO 1. ANTECEDENTES Y OBJETIVOS.
1.1. ANTECEDENTES.
Cada vez más las compañías están organizando sus sistemas de información en forma
distribuida, lo que conlleva a tener aplicaciones de tipo cliente/servidor.
Por otra parte, el uso de más y más redes de computadoras personales está también
impulsado el fenómeno de cliente/servidor.
8
En las empresas que han contado tradicionalmente con minicomputadoras o con
equipos mainframes, existe la alternativa de usarlos como servidores para los grupos
de computadoras personales. Esta alternativa es viable siempre y cuando las
minicomputadoras o mainframes evolucionen tecnológicamente en respuesta a la
tendencia cliente/servidor. Factores como qué tipo de protocolos de redes se soportan,
apego a estándares de industria y de facto, eficiencia, etc., hacen que tales equipos
sean una opción viable para ser usados como servidores [2].
Conforme el paradigma de la computación se transforma, también lo hace el sistema
AS/400. El AS/400 ha sido un poderoso sistema de aplicaciones comerciales, con más
de 28,000 aplicaciones disponibles. Muchas de estas aplicaciones existentes están
rápidamente evolucionando hacia el modelo cliente/servidor aprovechando las
innovaciones tecnológicas que en el AS/400 se han incorporado para soportar esta
tendencia.
b) Colas de Datos.
c) APIS de Mensajes.
e) SQL Remoto
f) DAL
g) Sockets.
9
De la alternativa seleccionada depende que las aplicaciones desarrolladas presenten
ciertas ventajas, como interoperabilidad, portabilidad, facilidad de desarrollo y
mantenimiento.
Si se toma la alternativa de usar interfaces a nivel de transporte (como APPC ó
Sockets) se están accesando directamente las funciones APls de comunicaciones, en
este caso se obtiene como resultado aplicaciones muy eficientes en tiempo de
respuesta. Sin embargo, el grado de complejidad para el desarrollo de la aplicación es
más alto debido a que se requieren conocimientos de los protocolos de
comunicaciones y de programación tanto en ambiente de AS/400 como de PC.
Esta alternativa es ideal, por ejemplo, si alguien desea desarrollar una aplicación
gráfica para controlar la seguridad del AS/400. En este caso se deben crear programas
en el AS/400 que intercambien datos con el programa cliente. De hecho, muchas
empresas desarroladoras de software para AS/400, incluyendo a IBM, utilizan las
interfaces propietarias del AS/400 para desarrollar, entre otros productos, emuladores
de terminales, administradores gráficos de la base de datos, administradores de
usuarios, etc.
La empresas que cuentan con AS/400 están más orientadas al desarrollo de
aplicaciones transaccionales con la Base de Datos que al desarrollo de los productos
de administración. En esta situación, el uso de interfaces de acceso directo a la base
de datos es la mejor opción.
Por otro lado, con algunas alternativas se corre el riesgo que la aplicación no sea
eficiente en términos de un buen tiempo de respuesta para el usuario final. Esto se
debe a que las APls se pueden implementar de distintas maneras. Muchos lenguajes
como Visual Basic incluyen funciones de alto nivel (como el Data Control) que
simplifican el desarrollo de la aplicación pero que no proporcionan eficiencia en el
acceso a los datos.
1.2. JUSTIFICACIÓN
10
Los manuales existentes son de referencia al programador, lo que significa que no
explican de forma amplia y comparativa las diferentes alternativas. Por otro lado,
existen diversos libros que tratan las interfaces de acceso a bases de datos locales o
en servidores de tipo PC o UNIX, pero que no consideran el acceso al AS/400. Y, por
lo tanto, no se mencionan las ventajas y consideraciones a tomar en cuenta cuando se
utiliza al AS/400 como servidor de base de datos.
11
Al analizar qué interfaces de programación existen para la base de datos 082/400 y
qué modelos de cliente/servidor se pueden implementar, los beneficios principales de
este trabajo de Tesis son:
12
1.3. OBJETIVOS.
a) lnteroperabilidad.
La facilidad para compartir y procesar información desde o hacia otros sistemas.
b) Portabilidad.
La portabilidad se refiere a la capacidad de poder utilizar la misma aplicación con
diferentes manejadores de datos, sin tener que modificar el código. El objetivo de
13
algunos estándares es lograr la máxima portabilidad, mientras que otros se orientan a
obtener la máxima eficiencia.
f) Lenguaje de programación.
Algunas interfaces permiten que todo el desarrollo se realice del lado del cliente, lo
cual nos permite utilizar herramientas de desarrollo comunes en el ambiente de PC,
como los lenguajes de cuarta generación (4GL) y/o lenguajes visuales.
14
CAPÍTULO 2. ESTADO DE ARTE.
Desde el punto de vista de la función de TI, la mayor parte de las empresas no pueden
abandonar totalmente sus sistemas tradicionales y reemplazarlos por aplicaciones de
vanguardia. Los sistemas tradicionales permanecen como núcleo de las aplicaciones
de misión crítica del negocio. En estas aplicaciones se maneja y genera la información
que soporta el negocio. A menudo, estas aplicaciones aún corren en terminales de
caracteres.
15
a) Se facilita el uso de nueva tecnología. El proceso cliente/servidor permite una
integración modular y/o el reemplazo paulatino de componentes de software. En lugar
de cambiar toda una aplicación, se pueden ir mejorando sus componentes.
Realmente no hay una definición que esté aceptada de forma general sobre lo que es
cliente/servidor. Las diferentes definiciones dependen del contexto en que se dan, ya
sea que estemos hablando de internet ó del proceso distribuido. Pero en general, el
concepto incluye a dos entidades separadas: el cliente y el servidor, trabajando juntas
para realizar alguna tarea.
Cliente/servidor es una interrelación entre dos funciones separadas: un servidor
proporcionando servicios y el cliente utilizando esos servicios. El cliente puede ser tan
16
simple como una hoja de cálculo o tan complejo como un programa de alto nivel
ejecutándose en una PC.
Prácticamente, podemos considerar que el modelo cliente/servidor se traduce en una
función con interfaz gráfica ejecutándose en una computadora personal y accesando
los recursos de una o de varias máquinas servidoras, las cuales pueden ser:
computadoras personales, minicomputadoras o mainframes. Entre estas entidades
existe, desde luego, un enlace de comuniciones que puede ser una red LAN o WAN.
Los recursos que los servidores proporcionan pueden ser de distinta clase, como
almacenamiento en disco, servicios de impresión, acceso a una base de datos o
acceso a aplicaciones.
El concepto cliente/servidor también puede ser visto como una forma especial de
proceso cooperativo. El proceso cooperativo involucra dos o más procesos realizando
una tarea común. Dichos procesos pueden estar o no en la misma máquina. El
concepto de proceso cooperativo ha existido prácticamente desde los inicios de la
computación, de tal manera que, por ejemplo, ocurre una forma de proceso
cooperativo cuando un programa llama una rutina. Cuando uno de los procesos se
caracteriza por estar siempre solicitando los servicios de otro, nos econtramos con un
esquema cliente/servidor.
Algunas de las características comunes que podemos encontrar de las distintas
definiciones de cliente/servidor son :
a) Los servidores proporcionan recursos que se comparten entre varios clientes. Estos
recursos pueden de hardware y/o software.
b) La ubicación de los recursos es transparente para los usuarios finales. Los recursos
pueden incluso estar en el mismo cliente o en un sistema diferente de la red.
c) Los clientes siempre inician la operación al solicitar un servicio. Los servidores están
esperando las requisiciones de parte de los clientes.
d) Los clientes y servidores intercambian información por medio de mensajes. La
conexión es por medio de una red local o por comunicaciones remotas.
17
base de datos. En la figura 2.1. se muestran los modelos cliente/servidor en base a
esta divisón de la aplicación.
SERVlDOR
Red
CLIENTE Datos
1) Presentación Distribuida
Un ejemplo de Presentación Distribuida es un emulador de terminal corriendo en
ambiente Windows. Muchos emuladores actuales convierten el formato basado en
caracteres en formato GUI. Esta alternativa es una forma primitiva de cliente/servidor
debido a que en realidad la aplicación no fué diseñada con interfaz gráfica, sino que un
software adicional se encarga de manejar la intefarce en el lado del cliente.
En este caso, el usuario tiene la percepción de que la intertace ha sido movida a la
computadora personal.
Los beneficios reales del cliente/servidor se pueden obtener por medio de los otros
modelos.
2) Presentación Remota.
3) Lógica Distribuida.
La lógica de la aplicación se puede dividir entre el servidor y el cliente. Este enfoque
permite que cada tarea se ejecute en el sistema más apropiado. Si la aplicación
18
maneja imágenes o rutinas especiales de proceso numérico intenso, deben quedar en
el sistema que mejor ejecute este tipo de proceso.
Frecuentemente a este modelo se le conoce como conversacional debido a la
comunicación directa entre los procesos cliente y servidor. Los procesos cliente y
servidor se pueden comunicar por diferentes métodos, incluyendo APPC, Sockets o el
estándar RMI (Remate Method lnvocation) en el caso de Java.
Este modelo proporciona el mejor rendimiento debido a que se codifica el proceso
servidor usando herramientas nativas. Sin embargo, el grado de complejidad en el
desarrollo de la aplicacion aumenta debido a que se deben conocer los dos ambientes
de desarrollo, tanto conocer lenguajes de programación del AS/400 como del ambiente
Windows.
Dentro de la clasificación de Lógica Distribuida se encuentran los procesos de
Procedimientos Almacenados y el arranque de "Triggers" de la base de datos.
4) Datos Remotos
En este modelo, el cliente maneja la lógica de la aplicación así como la presentación.
Los datos residen completamente en el servidor . De esta forma el servidor actúa como
el repositorio de la base de datos.
5) Datos Distribuidos ..
En este modelo, también el cliente maneja toda la lógica de la aplicación así como la
presentación. Los datos residen tanto en el servidor como en el cliente.
Por medio del enfoque de Datos Distribuidos se permite que una aplicación
cliente/servidor utilice diferentes bases de datos en diferentes plataformas.
El cliente utiliza interfaces SQL como ODBC, OLE/DB o JDBC para accesar los datos
remotos.
19
2) Servidor de transacciones.
En este modelo, el cliente manda una solicitud (CALL) hacia el servidor para invocar
un procedimiento remoto. El procedimiento almacenado en el servidor puede ser
una secuencia de sentencias SQL que trabajan sobre la base de datos, o puede ser
cualquier programa. Este modelo es diferente del Servidor de Base de Datos,
porque la unidad entera de ejecución es ejecutada en el servidor. Cuando el
proceso termina de ejecutarse, se envía el resultado al programa cliente. Muchos
manejadores de base de datos, incluyendo al AS/400, proporcionan facilidades para
soportar este modelo. El término común en el ambiente de base de datos para estas
unidades de ejecución es Procedimientos Almacenados.
3) Servidor de Grupos.
Una nueva forma de computación que ha surgido como influencia de la tecnología
cliente-servidor es el trabajo de grupos (Groupware). La idea surge a partir de la
necesidad de realizar ciertas actividades de manera conjunta por personas
trabajando en un grupo. Por ejemplo, la creación de un documento grande con
varios participantes, mantener una conferencia con personas en sitios remotos, etc.
Un Servidor de Grupos combina varios componentes (correo, flujo de trabajos,
calendarización, etc.) para proporcionar la sinergia del grupo. En la industria actual,
Lotus Notes es probablemente el producto más importante para soportar este
modelo.
En los párrafos anteriores se han discutido varios modelos como si cada caso fuera un
servidor separado cada uno con sus clientes. Desde luego, en la práctica los modelos
no necesitan estar separados, en un mismo sistema servidor pueden presentarse una
combinación o todos los modelos al mismo tiempo.
20
2.4.1. LENGUAJES DE PROGRAMACIÓN.
21
dentro de una ventana. En este trabajo de Tesis se usará un lenguaje de este tipo
(Visual Basic) para crear las apliaciones "cliente".
• Las bases de datos relacionales y el SQL son la parte central de las aplicaciones
nuevas.
22
2.4.2. AMBIENTE DE DESARROLLO.
Para crear un ambiente de desarrollo con características 00, los proveedores deben
considerar los siguientes aspectos [1 O]:
Con base en estas especificaciones, surge el modelo SOM (System Object Model) que
es usado en los diferentes sistemas operativos de IBM [3].
El modelo de objetos diseñado por Microsoft se llama COM (Component Objet Model).
En este modelo se definen la forma en que la tecnología 00 se implementa entre los
sistemas operativos Windows [8].
Los modelos basados en objetos no son excluyentes, es decir, los diferentes sistemas
operativos pueden soportar uno o varios modelos al mismo tiempo.
23
2.4.3. INTERFACES DE ACCESO A DATOS
2.4.3.1. OLE DB
La tecnología OLE (Object Link Embbeding ) había surgido previamente. Con OLE, es
posible crear un "enlace dinámico" entre aplicaciones. Esto significa que, despues de
copiar y pegar una hoja de cálculo en un texto de un procesador de palabras, el OLE
permite que los cambios en los datos de la hoja de cálculo se vean reflejados en la
procesador de palabras.
Sin embargo OLE por sí mismo no permite al programador accesar datos de diferentes
fuentes de datos. Gran parte de los datos que los usuarios requieren accesar no están
almacenados sólo en bases de datos relacionales. Por ejemplo, los usuarios
almacenan datos en hojas de cálculo, mensajes de e-mail, etc. Las fuentes de
información son diversas.
Para accesar a datos en formatos diferentes a una base de datos relacional, los
programadores requerían usar herramientas y APls específicos para una determinada
fuente de datos. Estas APls son completamente independientes unas de otras. El
conocer cómo extraer datos de una carpeta de mensajes e-mail no significa que se
conozca cómo usar otras APls para trabajar con sistemas de archivos planos. Para
cada tipo diferente de fuente de datos, existe un API correspondiente. Esto trae como
consecuencia que exista más codigo para el acceso a datos.
24
OLE 08 puede usar OD8C como un proveedor para accesar bases de datos
relacionales.
La ventaja de usar OLE 08 es que el programador solo debe trabajar con un API: OLE
08. Al direccionar a OLE 08 para que use un determinado proveedor, por medio de
comandos estándares, es posible obtener datos en un formato fácil de usar para la
aplicación.
OLE 08 está diseñado para ser usado con C++. Debido a que la mayoría de los
programadores en ambiente Windows trabajan con Visual 8asic u otros lenguajes,
Microsoft introdujo una interfaz para OLE 08. Esta interfaz es ADO (ActiveX Data
Objetes).
El sistema AS/400 soporta el OLE 08, por lo que, desde lenguajes como Delphi, Visual
8asic, Power8uidler, entre otros, es posible accesar la base de datos 082/400, así
como otros recursos del AS/400 como son los procedimientos almacenados, los
comandos de control y las colas de datos.
2.4.3.2. ODBC
El OD8C proporciona una interfaz portable que permite que una aplicación pueda
interactuar con diferentes bases de datos relacionales.
El origen de esta interfaz está en la problemática de que cada manejador de base de
datos usa un método diferente de acceso a los datos [9]. Ante esta diversidad de
bases de datos (Oracle, Sybase, Paradox, Access, lnformix, 082, SQL Server, etc) los
desarrolladores de aplicaciones tienen que conocer los diferentes tipos de acceso para
cada base de datos .. Si una aplicación se desarrolla usando una interfaz propietaria de
una base de datos, la aplicación sólo trabaja con esa base de datos. En el momento de
querer accesar una base de datos diferente, es necesario modificar el código de la
aplicación.
Para solventar esta situación, Microsoft fué la empresa que inicialmente propuso un
conjunto de funciones basadas en SQL y escritas en C para accesar cualquier base de
datos. El estándar desarrollado se llamó Open Data8ase Connectivity (OD8C). Las
funciones de OD8C y la sintaxis de SQL se estandarizaron por las especificaciones
X/Open y SQL Access Group.
La mayoría de las bases de datos relacionales, incluyendo a 082/400 soportan el
estándar OD8C.
25
2.4.3.3. JDBC
Java tiene su propio mecanismo de acceso a una base de datos relacional: JDBC o
Java DataBase Connectivity.
El JDBC es similar a ODBC, pero está completamente escrito en Java (en lugar de C).
Sus características son [7]:
• Los desarrolladores escriben sus aplicaciones sin considerar las funciones propias
de la base de datos.
• El proveedor de la base de datos proporciona una capa de software que debe ser
incluida entre la aplicación y la base de datos.
• Un paquete Java llamado java.sql que contiene clases y métodos para: la conexión
a la base de datos, consultas, etc.
• Un puente JDBC/ODBC que permite que una aplicación Java accese una base de
datos por medio de un Driver de ODBC. Esto sólo se requiere si un proveedor de
base de datos no cuenta con un JDBC Database Driver.
El elemento clave es que el desarrollador sólo tiene que escribir los accesos a los
datos por medio del paquete java.sql. Las clases y los métodos contenidos en este
paquete se encargan de direccionar las peticiones de SQL hacia la base de datos
específica.
El paquete java.sql es equivalente a las funciones CLI (Call Level Interface). Las
funciones CLI son un conjunto de APls para la ejecución de sentencias SQL.
26
2.4.3.4. APPC (Advanced Program to Program Communications).
Los programas "cliente" pueden ser escritos en cualquier lenguaje de Windows que
soporte el uso de funciones externas o APls. Algunos lenguajes usados son Visual
Basic, C++ y Power Builder.
Una Cola de Datos es una especie de tabla que reside en AS/400 y que sirve para
almacenar temporalmente datos. Las Colas de Datos son usadas para pasar
información de un programa a otro.
Un programa cliente en una computadora personal puede enviar un dato a una Cola de
Datos en el AS/400, de esta forma, otro programa nativo del AS/400 puede recibir este
dato como parámetro. Con el dato recibido, el programa servidor realiza accesos a la
base de datos o cualquier otra función. La información resultante se envía al programa
cliente por la misma o por otra Cola de Datos.
Dado que el enlace entre los programas es por medio de una Cola de Datos, no es
necesario que los programas corran de manera sincronizada. Tan pronto como un
programa coloque el dato en la Cola de Datos, puede continuar con otras actividades.
27
2.4.3.6. SQL REMOTO
El SQL Remoto es un conjunto de APls para accesar a la base de datos del AS/400
por medio de SQL. EL SQL Remoto y ODBC tienen en común el uso de SQL. La
diferencia es que el SQL Remoto fué desarrollado sólo para trabajar con la base de
datos del AS/400. En cambio ODBC es un estándar portable con distintas bases de
datos.
2.4.3. 7. SOCKETS.
2.5. CONCLUSIONES
a) El rendimiento de la aplicación.
28
c) Acceso a la base de datos relacional.
29
CAPÍTULO 3: LA BASE DE DATOS DEL AS/400
La gran mayoría de las bases de datos corren encima del sistema operativo al mismo
nivel que las aplicaciones. Debido a que la base de datos 082/400 está integrada con
el sistema operativo, se mejora su nivel de eficiencia además de que se integra
completamente con otros componentes. El beneficio es una mayor simplicidad en la
administración del sistema.
En la práctica, la integración de 082/400 significa que gran parte de los datos del
sistema están almacenados en la base de datos relacional. Además de los datos de
las aplicaciones, los esquemas de seguridad, las definiciones de las comunicaciones y
hasta el código fuente de las aplicaciones, se encuentran almacenados en la base de
datos.
El origen de las bases de datos relacionales se debe a los trabajos de E.F. Codd en
18M, quien definió una base de datos experimental conocida como System/R.
Codd definió 4 operaciones primitivas sobre una tabla de dos dimensines (renglones y
columnas). La primera operación se denominó Order, que permitía el procesamiento
de los renglones de la tabla en un orden determinado usando una llave.
30
De esta forma, una base de datos relacional debería soportar estas 4 operaciones
sobre una tabla de dos dimensiones.
El estudio de las carerísticas de 082/400 será de utilidad para el análisis que se hará
en los siguientes capítulos de las diversas opciones de desarrollo de aplicaciones
cliente/servidor en AS/400.
Los datos se almacenan en objetos llamados archivos físicos o tablas. Las tablas,
como en cualquier base de datos relacional, están formadas por una estructura de
datos que define el tipo y longitud de las columnas.
a) Por medio de un lenguaje de definición de datos propio del sistema conocido como
DOS (Data Description Specifications).
b) Por medio de SOL. Esta es la forma más común en la actualidad para definir la
estructura de una base de datos relacional. El 082/400 soporta los estándares
internacionales ANSI de SOL, por lo que cualquier desarrollador de aplicaciones en
otras plataformas puede definir y trabajar con 082/400.
Aunque hay dos interfaces para la definición, es importante mencionar que sólo se
trata de una base de datos.
31
3.2.1.1. ÍNDICES Y VISTAS DE SQL.
Los datos están almacenados físicamente en las tablas. Sin embargo, es común que
las aplicaciones y los usuarios requieran accesar datos en un formato diferente al
modo como están almacenados en las tablas físicas.
Por medio de una Vista se puede obtener, a patir de una tabla, una selección de
columnas y un ordenamiento de datos, sin tener que duplicar los datos en otra tabla.
Una Vista no contiene realmente datos, sino apuntadores hacia los datos de una tabla
física.
Por otro lado, un índice de SQL proporcionan una acceso por medio de llave a los
renglones de una tabla.
Los Archivos Lógicos ó Vistas proporcionan la independencia entre los datos y las
aplicaciones. La separación de la descripción de los datos de los programas permite
que en los programas no se tenga que volver a definir los datos. De esta forma, la
creación y mantenimiento de las aplicaciones se simplifica.
El sistema mantiene las descripciones de todos las tablas, vistas e índices por medio
de catálogos. Otro término común para este repositorio es el diccionario de datos. El
manejador de base de datos se encarga de actualizar el diccionario de datos cada vez
que se crea o modifica un objeto de base de datos, de tal forma que los
desarrolladores puede consultar la estructura de los datos y en qué aplicaciones se
usa determinada tabla o vista.
3.2.2.1. DIARIOS.
Un Diario ó Journal es un registro de los cambios realizados a las tablas. Cuando una
aplicación modifica un renglón, el sistema guarda una copia de los datos en el Diario,
incluyendo más información relacionada, como usuario, aplicación, fecha y hora.
Los Diarios de la base de datos se usan para la recuperación de fallas del sistema o de
problemas de datos ocasionados por las aplicaciones. Las tablas son recuperadas
automáticamente cuando el sistema se arranca después de una falla de hardware o
software.
32
3.2.2.2. FUNCIONES DE COMMIT Y ROLLBACK.
Para el usuario un pedido consiste de una sola operación, sin embargo, ocurren varios
cambios en la base de datos. Para este ejemplo, las sentencias SQL ejecutadas son
un UPDATE y dos INSERTs
Desde luego, por medio de la lógica lf Then se pueden controlar las operaciones, y de
alguna manera relacionar las sentencias SQL. Se puede también modificar la
secuencia de las sentencias para detectar el estado del crédito del cliente o para
verificar las existencias antes de registrar la orden. Esto requiere de más codificación.
En ciertos casos, cuando se detecta un error es necesario deshacer los cambios ya
hechos a los archivos.
Desde luego, por programación se pueden también relacionar las sentencias SQL e,
inclusive, modificar su secuencia para detectar primero si el cliente tiene crédito antes
de colocar la orden.
En este escenario, para evitar que una transacción quede incompleta, se debe usar la
facilidad del DBMS para el manejo de transacciones conocida como Control de
Compromiso.
33
Una transacción es un conjunto de operaciones que deben ser terminadas como si se
tratara de una operación única. De esta forma, o se realiza completamente o no se
realiza ninguna operación. A este enfoque se le conoce como "todo o nada"
El Control de Compromiso es una función del DBMS que permite definir un conjunto de
cambios como una Unidad Lógica de Trabajo o transacción.
Para el manejo de transacciones, una aplicación debe usar las siguientes sentencias:
b) Una transacción B efectúa una lectura al registro que acaba de ser actualizado por
la transacción A.
La Lectura no repetible (leer un registro que luego es cambiado por otra transacción)
se presenta cuando:
Este problema se evita si el DBMS no permite que el registro leido por "A" pueda ser
cambiado o borrado por otra transacción "B".
Para evitar estos conflictos de integridad, es necesario definir a la base de datos que
maneje un nivel de aislamiento entre las transacciones.
• El tipo y duración de los bloqueos que la base de datos pone a los datos.
Un ejemplo típico de una regla de integridad ocurre entre una tabla de clientes y una
tabla de facturas. No resulta lógico el tener facturas que no tengan relación con un
cliente, es decir, cada factura debe hacer referencia a un cliente. Como consecuencia
de esta regla, si un usuario intenta borrar un cliente que tiene facturas, la transacción
36
no se debe poder efectuar. Una forma de hacer cumplir esta regla es por medio de
rutinas en la aplicación. Sin embargo, gracias a la integridad referencial, esta clase de
reglas se pueden definir directamente al manejador 082/400. Una vez que las reglas
han sido definidas, el 082/400 automáticamente verifica su cumplimiento, sin importar
el medio usado por el usuario para efectuar el cambio.
La Integridad Referencial es, por tanto, una facilidad a nivel DBMS que evita que las
reglas de integridad tengan que ser verificadas a nivel de las aplicaciones.
3.2.2.5. TRIGGERS.
Un Trigger se define como una acción que ocurre automáticamente siempre que se
hace un cambio a una tabla. De esta forma, los Triggers son programas asociados a
una tabla.
Cuando se especifica un Trigger a una tabla se deben definir tres atributos. El primero
es el evento que dispara al programa. Los eventos pueden ser: una actualización, una
inserción ó un borrado de un renglón de la tabla. El segundo atributo define en qué
momento se ejecuta el programa: antes o después del evento. Finalmente, el tercer
atributo define el nombre del programa a ejecutarse. De esta forma, se deduce que se
pueden especificar hasta 6 Triggers por cada tabla.
Cada vez más las compañías están organizando sus sistemas de información en un
modo distribuido. La base de datos 082/400 proporciona diferentes opciones para
operar con bases de datos remotas.
37
Existen también otras interfaces para accesar los datos de 082/400 desde
aplicaciones cliente/servidor, como son ODBC, OLE/DB, JDBC, etc. A lo largo de este
trabajo se profundizará en el estudio de estas interfaces.
Los lenguajes son C, C++, CL, RPG, COBOL, FORTRAN, PASCAL y REXX. Este tipo
de procedimientos almacenados se conocen como procedimientos externos. Para las
operaciones de entrada/salida con la base de datos se pueden usar las funciones
nativas del lenguaje, o bien, incorporando sentencias SQL dentro del programa.
38
3.2.4.1. USO DE PROCEDIMIENTOS ALMACENADOS.
3.3. CONCLUSIONES.
La base de datos 082/400 soporta la mayoría de los estándares de industria actuales.
Esto permite la interoperabilidad con equipos de diversas arquitecturas. Por otro lado,
esta apertura permite también que el desarrollador de aplicaciones con 082/400
cuente con diversas alternativas para plantear su estrategia de diseño de las
aplicaciones distribuidas. En los siguientes capítulos se utilizan los conceptos
estudiados aquí (Triggers, procedimientos almacenados, etc.) para describir con más
detalle las opciones de cliente/servidor con 082/400.
39
CAPÍTULO 4: APLICACIONES CON JAVA
La portabilidad del Java se logra por medio de las clases (o APls) que proporcionan un
gran conjunto de funciones independientes de una plataforma. La existencia de este
conjunto de APls de Java proporciona a la industria de informática con la capacidad
de desarrollar aplicaciones cliente/servidor en internet que pueden correr en cualquier
plataforma que soporte Java [1 O). Por lo tanto, el Java no es solamente un nuevo
lenguaje sino una plataforma de software que puede ser implementada y ejecutada en
diversas plataformas.
Los desarrolladores de Java querían crear un lenguaje que fuera más fácil de usar que
el C++. Por lo tanto, decidieron que los programas Java no fueran capaces de manejar
el direccionamiento de áreas específicas de memoria. En su lugar, es posible usar
apuntadores de alto nivel para indicar al sistema este tipo de requerimientos. El
sistema operativo determina la dirección real cuando el programa se ejecuta.
40
proveedores ó casas de software que por desarrolladores locales dentro de una
empresa [7].
A parte de simplificar la programación, otro objetivo del Java es permitir que el mismo
programa pueda ejecutarse en diferentes plataformas. Sobre todo debido a que
existen diferentes tipos de procesadores. La solución para cumplir con este
requerimiento es incluir una capa adicional de software en cada dispositivo que pudiera
traducir el código en instrucciones de máquina. Esta capa es llamada JVM (Java Virtual
Machine)
De esta forma, los programas escritos en Java son compilados en un formato bytecode
y luego enviados a dispositivos que los ejecutan. Dentro del dispositivo existe una
máquina JVM que maneja la ejecución del programa.
Este diseño tiene una desventaja: la interpretación del formato bytecode en tiempo de
ejecución ocasiona que el proceso sea menos eficiente que si tomara la alternativa de
ejecutar un código que es compilado en instrucciones de máquinas específicas para
cada procesador. Sin embargo, conforme el precio-rendimiento de las computadoras
siga avanzando, la nueva tecnología tiende a compensar este factor.
41
4.2. CONTROL DE JAVA.
La empresa Sun Microsystem inventó el Java y es quien mantiene el control sobre la
evolución de este lenguaje por medio de una subsidiaria llamada JavaSoft.
Dentro de los estándares que JavaSoft mantiene están el paquete de desarrollo JDK
(Java Development Kit), la máquina vitual JVM y las especificaciones para el diseño de
JavaBeans y EJB (Enterprise JavaBeans).
El paquete JDK incluye especificaciones para los compiladores de Java, así como
ayudas para el desarrollo de aplicaciones y un conjunto de utilerías requeridas en un
ambiente de programación de Java en cualquier computadora que sea utilizada para
desarrollo.
E\ EJB es una especificación escrita para la creación de componentes del lado de los
servidores. Estos componentes se requieren para manejar funciones como el control
de transacciones, accesos a la base de datos ó administración de memoria. Estos
componentes proporcionan las funciones necesarias para crear la parte servidora de
las aplicaciones.
42
4.3. SOPORTE DE JAVA EN AS/400
El software de control del AS/400 es creado en dos capas. La capa de bajo nivel,
llamado SLIC (System Licensed Interna! Code) contiene toda la lógica que depende de
las características específicas del hardware. La capa superior, llamada OS/400,
mantiene una interfaz con las aplicaciones y los usuarios (figura 4.1. ).
-TIMI
Máquina Virtua Java
(JVM)
Hardware
43
en instrucciones de máquina. Esta estructura permite que los programas corran en
diferentes computadoras.
El Java está soportado en el AS/400 a partir de la versión 4.2 del sistema operativo, a
principios de 1998. Con esta versión, el OS/400 tiene la capacidad de manejar los
threads. Por medio de los threads, que es un mecanismo común en plataformas Unix,
se logra la multitarea de las aplicaciones. Un proceso puede ser subdividido en varias
operaciones simultáneas. En servidores con múltiples procesadores, los threads
incrementan el rendimiento al dividir las tareas entre todos los procesadores.
Al tener que integrar la máquina JVM dentro de la capa SLIC, fué necesario reescribir
las especificaciones de JVM en C++ ya que el micródigo del AS/400 está escrito en
este lenguaje. La ventaja de este enfoque es el incremento en el rendimiento al
ejecutar las aplicaciones.
Una de las diferencias más importantes entre las diferentes implementaciones de JVM
es de qué forma manejan la función llamada Garbage Collection. Esta función se
requiere debido a que en Java los programadores no pueden indicar el sistema en qué
momento un objeto deja de usarse. Gradualmente la memoria se va llenando de
objetos que ya no son accesados. La JVM tiene que determinar periódicamente qué
objetos deben ser eliminados de memoria. La especificación proporcionada por Sun no
dice de forma precisa cómo se debe realizar esta tarea.
Para resolver este problema, la mayoría de las JVM periódicamente detienen todos los
procesos (threads) concurrentes para que el sistema realice la limpieza de memoria.
Mientras esto ocurre, no se pueden crear nuevos objetos. En un ambiente de varios
procesadores, la tarea de Garbage Collection detiene todos los procesos. Esto
impacta al rendimiento general del sistema [5].
44
El enfoque usado en AS/400 es concurrente, permitiendo que los propios threads
participen en identificar a los objetos que deben eliminarse. Debido a que todos los
threads contribuyen en la función de limpieza, no es necesario detener el proceso de
crear nuevos objetos, lo cual resulta en un mejor rendimiento.
• Acceso a la base de datos desde Java, ya sea desde el código cliente o desde el
código servidor.
45
Como se puede observar, existen varios factores que determinan el tipo de aplicación
cliente/servidor resultante. Para simplificar este análisis, a continuación se describen
los 5 modelos típicos en que una aplicación de Java puede desarrollarse en AS/400.
Los diferentes escenarios [7] para escribir aplicaciones Java en AS/400 se pueden ver
en la figura 4.2.
Lógica Lógica
Remoto SERVIDOR
46
Debido a la portabilidad, cualquier capa puede ser implementada dentro de servidor o
en el cliente, dependiendo de qué plataforma de hardware sea la más apropiada.
En este modelo, todas las partes de la aplicación (datos, lógica y presentación) corren
en el servidor. Este caso ocurre generalmente en equipos con interfaz gráfica propia,
como en servidores NT.
El AS/400 soporta completamente este modelo con el fin de que una aplicación Java
existente en otra plataforma se pueda migrar. Sin embargo, al no contar con una
interfaz gráfica propia, todas las llamadas de la aplicación a los métodos de interfaz
son interceptadas por el AS/400 y enviadas al cliente. La función que el AS/400 utiliza
para manejar los accesos a la interfaz se llama Remate AWT (Remate Abstract
Window Toolkit).
4.5.2.1. AWT
Estas nuevas funciones están escritas totalmente en Java en lugar de usar las APls de
cada sistema operativo, además de incluir una amplia gama de funciones para crear
interfaces gráficas.
47
4.5.2.2. SOPORTE REMOTO DE AWT.
Si una aplicación existente desarrollada en Java con interfaz gráfica (y que, por lo
tanto, hace uso de las funciones AWT) se desea portar hacia el AS/400, es necesario
hacer uso de la función conocida como AWT Remoto.
La función AWT Remoto es una implementacion de AWT que permite que las
aplicaciones de Java puedan correr sin cambios en servidores que no tienen una
interfaz gráfica propia.
Interface Gráfica
Servidor
Aplicación Java
48
La aplicación Java en el servidor usa las funciones estándares de AWT para generar la
interfaz gráfica. Sin embargo, como el AS/400 no tiene el soporte gráfico, cada llamada
a una función AWT es enviada al soporte AWT Remoto. El soporte AWT Remoto usa
a RMI para comunicarse con su función equivalente en el sistema cliente.
En el sistema cliente, el soporte AWT Remoto pasa todas las peticiones AWT que son
recibidas desde el servidor a la función estándar AWT.
Como se puede ver en la figura 4.3., la trayectoria de los datos al implementar el AWT
Remoto es compleja. De hecho, la intención de soportar el AWT Remoto es permitir la
portabilidad de aplicaciones Java desde otros sistemas hacia el AS/400.
La función del AWT Remoto no se recomienda para soportar aplicaciones que hagan
uso extensivo de las interfaces gráfica. Tales aplicaciones deben ser diseñadas
usando los otros modelos de cliente/servidor mostrados en la figurara 4.2.: el lado
cliente de la aplicación usa AWT estándar para trabajar con las interfaces del usuario e
interactúa con el servidor por medio de las funciones RMI.
Un ejemplo práctico consiste de una aplicación en Java que es accesada por usuarios
remotos por medio de una página Web. Los applets son bajados desde el servidor y
se encargan de manejar la interfaz del usuario y de invocar a métodos remotos en el
servidor.
49
4.5.3. ALTERNATIVA 3: LÓGICA DISTRIBUIDA.
El RMI permite que un objeto corriendo en una máquina virtual pueda enviar mensajes
hacia otro objeto de Java corriendo en otra máquina virtual de Java en un sistema
remoto. De esta forma, el soporte RMI es utilizado para crear aplicaciones distribuidas
con Java.
El RMI permite que una aplicación local pueda llamar a métodos y accesar variables
dentro de una aplicación remota, e intercambiar objetos através de una conexión de
red.
El código Java corriendo en el servidor puede usar las siguientes funciones para
trabajar con los recursos del servidor:
• Usar JDBC para el acceso a la base de datos y/o para llamar a procedimientos
almacenados en el mismo servidor
• Usar la función DPC (Distribuited Program Call) del paquete AS/400 Toolbox, para
llamar a cualquier programa.
• Usar la función Record Level Access DOM del paquete AS/400 Toolbox for Java,
para accesar la base de datos.
50
4.5.3.2. SIN CÓDIGO JAVA EN EL SERVIDOR.
En esta alternativa, existe código tanto en el cliente como el servidor, pero a diferencia
del caso anterior, el código en el servidor no está escrito en Java sino en otros
lenguajes.
Para codificar los procedimientos se puede usar un lenguaje nativo de AS/400, o bien
el lenguaje estándar SPL (SQL Procedure Language). No es posible usar Java para
crear un procedimiento almacenado, esto se debe que el código Java no se convierte
en un objeto de tipo PGM en el AS/400 sino que se guarda como de tipo .class.
51
A diferencia de un procedimiento almacenado, el programa no tiene que estar
registrado en los catálogos de 082/400. Sin embargo, la ventaja de usar
procedimientos almacenados es que la aplicación usa un método estándar de llamar
un programa en el servidor. La función DPC trae como resultado que la aplicación sea
menos portable, pero existe con el fin de facilitar la conversión de aplicaciones
existentes hacia el ambiente Java.
La aplicación Java en el cliente puede usar JD8C para accesar los datos en la base de
datos. Las peticiones de los datos se realizan por medio del envío de sentencias SQL
hacia las funciones del D8MS. La sentencia es ejecutada y el resultado se envía al
programa cliente en forma de un Conjunto Resultado de SQL. El JD8C maneja todas
las conversiones de datos.
Otra alternativa para accesar los datos desde la aplicación cliente es usar las función
Record Level Access DOM, que está incluida en el paquete AS/400 Toolbox for Java.
Esta función sólo es válida para accesar datos almacenados en el AS/400, su
característica es que se asemeja a los mecanismos de lectura y escritura de datos
usados por el desarrollador tradicional en AS/400 en lenguajes como Cobol o RPG.
Una tercera opción para accesar los datos es usar el puente JD8C-OD8C. Esta
opción, aunque está disponible para el AS/400, no se recomienda debido a que el
rendimiento se ve afectado al usar más capas de software. La herramienta existe para
poder usar un Driver de OD8C para una base de datos que aún no soporta el JD8C.
52
4.5.4.1. RECOMENDACIONES DE RENDIMIENTO.
El JDBC permite que las sentencias de SQL sean enviadas al AS/400 para su
ejecución. Si una sentencia de SQL se ejecuta varias veces, se debe usar la función de
preparación para ejecutar la sentencia. De esta forma la sentencia se compila, por lo
que la subsecuente ejecución será más rápida.
El código Java en el cliente se encarga de accesar la base de datos local por medio
de JDBC . Los datos remotos son accesados también por JDBC, pero existen también
la alternativa de usar la función Record Level Access DDM.
53
CAPÍTULO 5. EL ESTÁNDAR ODBC
Cada DBMS tiene mecanismos particulares de acceso a sus datos, por lo que las
aplicaciones resultantes están de alguna manera enlazadas a una base de datos
específica.
Por medio de ODBC una aplicación no tiene que considerar las características propias
de una base de datos. De esta forma, ODBC es un estándar que define una serie de
funciones para que una aplicación pueda accesar a cualquier DBMS.
ODBC se basa en el lenguaje SOL para la definición y acceso a los datos. El SOL ha
sido ampliamente adoptado por varios proveedores de base de datos.
La mayoría de los DBMS actuales soportan el ODBC, tales como SOL Server,
Oracle, 082/400, Sybase, lnformix, entre otros.
Algunos lenguajes y aplicaciones que soportan ODBC son: Visual Basic, PowerBuilder,
FoxPro, SOL Windows, Access, C++, Delphi, Lotus Notes, etc.
Si todos los accesos a los datos se codifican siguiendo las especificaciones de ODBC,
se obtiene una aplicación que puede accesar cualquier base de datos. El requisito es
que la base de datos soporte el estándar ODBC [6].
54
5.2. COMPONENTES DE ODBC
Para cada función existe una descripción de los parámetros requeridos y los valores
posibles de retorno [6], esta descripción se encuentra en la publicación "Microsoft
ODBC 2.0 Reference and SDK Guide", ISBN 1-55615-658-8.
.Aplicación I
Fuente de
DD DD..- APls de ODBC
Datos
kchivoODBC .INI
----. j Driver Manager
~----,-t---~
I kchivo o oecn .DLL
ve_r~d_e_
~--º_ri_ o_o_s c_ ~I ~~;;ioec .DLL
(de Oient A:cess/400)
5.2.1.DRIVER MANAGER.
Cada una de las rutinas o APls de ODBC es código ejecutable que se encuentra en el
archivo ODBC32.DLL (ó en ODBC.DLL para Windows de 16 bits) . Este archivo es
proporcionado como parte del sistema operativo Windows. Cuando el programa usa
alguna de las APls de ODBC, realmente está llamando a una función contenida en el
archivo ODBC32.DLL. Este archivo es conocido como ODBC Driver Manager.
55
5.2.2. DRIVER DE ODBC
Debido a que cada base de datos tiene sus propias características, el Driver Manager
no está diseñado para comunicarse directamente con cualquier DBMS, por lo que
debe existir otro componente cuya tarea sea convertir todas las peticiones hechas por
el programa en peticiones que la base de datos pueda entender. Este otro componente
se conoce como Driver de ODBC. Generalmente el proveedor de la base de datos es
el responsable de proporcionar este componente.
Otros proveedores ofrecen Drivers de ODBC para trabajar con 082/400. Dentro de
estos proveedores están Attachmate, HIT, ShowCase y WallData.
La tarea del Driver proporcionado por el proveedor es traducir una llamada de OD8C
en una función propia de la base de datos. El Driver también debe manejar las
respuestas de la base de datos y entregarlas en un formato estándar 008C a la
aplicación. Si la base de datos regresa un error, el Driver es responsable de traducirlo
en un código de retorno estándar.
56
5.2.3. FUENTE DE DATOS
La Fuente de Datos se crea una sola vez antes de usar la aplicación. En la Fuente de
Datos se ecuentra nombre y el directorio donde se encuentra el driver de ODBC
proporcionado por el proveedor para accesar la base de datos remota.
Una aplicación puede trabajar con varias base de datos, por lo que debe crearse una
Fuente de Datos para cada una.
f Servidor N1]
Driver32=C:\WJNDOWS\SYS1EM\sqlsrv32.dll
/ServidorASl40CJ
Driver3 2 =C: \Program Files \JBM\Client Access \Shared\cwbodbc.dll
57
sistemas operativos de Windows ( 16 bits o 32 bits) para trajar con las Fuentes de
Datos.
Los proveedores que desarrollan los Drivers de ODBC son los responsables de
asegurarse que la interacción con el Driver Manager sea adeacuada. El Driver de
ODBC debe entender las solicitudes del Driver Manager y debe regresar información
estándar para que el Driver Manager le entienda. Idealmente, todos los drivers de
ODBC deberían cubrir al 100% esta interfaz. Sin embargo, el grado de soporte a los
estándares del Driver Manager puede variar dependiendo del proveedor.
Existen diversos factores [9] que influyen en la calidad del Driver de ODBC, como son:
costos, tiempo de producción, rapidez de acceso y nivel de apego al estándar.
Debido a esta variación, se ha diseñado una escala para clasificar a los Drivers de
ODBC en base a su nivel de apego o "conformancia" al estándar. La clasificación se
ha dividido en dos areas: el grado de soporte a las funciones APls y el grado de
soporte a la gramática SQL. El proveedor respectivo debe especificar las
características de su Driver de ODBC.
58
5.4.1. CONFORMANCIA DE APls.
Existen cerca de 60 APls definidas por ODBC. El número y tipo de APIS que soporte
un determinado Driver de ODBC, determina su clasificación. Existen tres clases: Nivel
O ("Core"), Nivel 1 y Nivel 2.
Nivel O
Conectarse a una Fuente de Datos
Preparar y Ejecutar sentencias SQL
Leer los datos resultante de una sentencia SQL
Nivel 1
Todas las funciones de Nivel O
Recuperar información de columnas
Nivel 2
Todas las funciones de Nivel 2
Obtener una lista de las fuentes de Datos disponibles
Trabajar con arreglos que contienen parámetros y resultados
Existen tres niveles: base ó "core", mínimo y extendido. Algunos ejemplos de las
sentencias soportadas en cada nivel son:
59
5.5. PROCESO DEL USO DE APls.
Cuando un programa usa una API de ODBC, se está llamando a una rutina (función)
de ODBC que está contenida en el archivo ODBC32.DLL, conocido como Driver
Manager.
Aplicación
Inicialización
Ejecución
API API
Driver Manager
API
D
t
Driver de ODBC
082/400
Como se puede ver en la figura anterior, por medio de las APls la aplicación se
comunica directamente con el Driver Manager.
60
Esta arquitectura asegura que las funciones de ODBC son llamadas desde cualquier
aplicación de la misma forma, sin importar si la conexión es hacia un AS/400 u otro
equipo con diferente DBMS.
Esta arquitectura por capas también permite que varios Drivers de ODBC puedan estar
activos al mismo tiempo.
a) Inicialización de ODBC.
b) Ejecución de sentencias SQL.
e) Terminación del ODBC.
El primer paso de toda aplicación ODBC consiste en arrancar la interfaz ODBC. Esto
se realiza por medio de la función SQLAllocEnv.
Con esta función se indica que una aplicación usará ODBC. Este paso se conoce
como arranque del ambiente ODBC para la aplicación. En otras palabras, se indica
que existirá un enlace entre el programa y el Driver Manager.
Un programa puede conectarse con distintas bases de datos al mismo tiempo, lo cual
significa que se usarán varios Drivers de ODBC. (El término "conexión al Driver de
ODBC" tiene el mismo significado que "conexión a la base de datos").
Por medio de la función SQLLAl/ocConnect, se lleva el control de la conexión con un
determinado Driver de ODBC.
61
5.5.2. EJECUCIÓN DE LA SENTENCIA SQL
a) Ejecución directa
b) Ejecución de sentencias preparadas.
Para ejecutar de manera directa una sentencia SQL, se debe usar la función
SQLExecDírect.
Una vez que la aplicación cliente ha terminado sus operaciones de base datos con el
sistema servidor, es necesario ejecutar los pasos de cierre de ODBC. Con estos pasos
se liberan los recursos asignados para las variables "handler" de ODBC y se terminan
las conexiones que se arrancaron.
Después del cierre de ODBC, la aplicación puede terminar, o bien, continuar con otros
procesos dependiendo de la lógica de la aplicación, ó incluso arrancar otra vez el
ambiente de ODBC.
Es necesario realizar los pasos de cierre de ODBC, ya que de esta manera existe la
seguridad de que existan recursos disponibles si es que se arranca otra aplicación
ODBC. Por otra parte, con el proceso de cierre se avisa al servidor que también libere
los recursos utilizados en la conexión.
62
El uso de las APls de ODBC requiere de mayor programación que las otras
alternativas. Aunque el propósito fundamental de ODBC es ejecutar sentencias SQL,
existen tareas previas que la aplicación debe realizar. Dentro de estas tareas se
encuentran la declaración de las APls. Otras tareas típicas son la inicialización del
ambiente ODBC, el manejo de errores y la desconexión. Además, las APls deben
ejecutarse en una secuencia específica.
Sin embargo, las ventajas de usar las APls directamente son el incremento sustancial
en el rendimiento de la aplicación y la flexibilidad, lo cual permite crear aplicaciones
robustas y de misión crítica.
En general, cada vez que una sentencia de SQL se ejecuta desde la aplicación cliente,
la sentencia es "compilada" en el servidor (AS/400). En este proceso el DBMS crea
temporalmente una definición de acceso a los datos.
La definición creada se conoce como Plan de Acceso. El Plan de Acceso permite que
en la ejecución de la sentencia SOL el sistema utilice los índices y algoritmos
adecuados para maximizar el proceso de los datos [11].
Si una sentencia será utilizada varias veces, no es eficiente que en el sistema servidor
se cree el plan de acceso en cada ejecución. Para evitar esto, la sentencia de SQL
debe ser "preparada".
La función de ODBC para preparar una sentencia es SQLPrepare. Para una sentencia
preparada se usa SQLExecute.
63
En estapas de desarrollo y prueba de una aplicación ODBC, el paquete de SQL en el
AS/400 puede dañarse debido a los cambios frecuentes de las sentencias SQL. En
esta situación, la aplicación recibe el mensaje de error "Soporte deshabilitado para el
SQL Dinámico Extendido". Para resolver este problema, basta con borrar el paquete en
el AS/400. Al correr nuevamente la aplicación de ODBC, el sistema volverá a crear el
paquete.
Para describir con más detalle estas consideraciones, a continuación se muestran los
modelos típicos en que una aplicación ODBC puede desarrollarse en AS/400.
65
5.7.1. MODELOS CLIENTE/SERVIDOR CON ODBC.
Los diferentes escenarios para escribir aplicaciones ODBC en AS/400 (8) se pueden
ver en la figura 5.4.
Lógica
roe. Almacenados
SERVIDOR
Red
CLIENTE Datos
66
con el servidor. La lógica principal de la aplicación se codifica en el servidor por medio
de los lenguajes conocidos al desarrollador tradicional en el AS/400.
El código en el cliente se desarrolla con algún lenguaje visual y el manejo de los tipos
de datos es realizado por medio del Driver de ODBC.
Otro uso de los datos distribuidos ocurre cuando la aplicación maneja datos gráficos,
como uso de dibujos de las partes de un inventario, o bien, fotografías de los
empleados en una aplicación de recursos humanos. En estos casos resulta más
conveniente tener estos elementos en el sistema cliente.
67
CAPÍTULO 6: PROTOCOLOS A NIVEL DE
TRANSPORTE.
El SNA define cómo se comunican las computadoras dentro de una red. Dentro de la
arquitectura SNA, hay muchos "lenguajes" o protocolos por medio de los cuales las
computadoras se pueden comunicar entre sí. Algunos lenguajes son más usados que
otros, mientras que otros han dejando de usarse y han aparecido nuevos para cubrir
las nuevas necesidades de comunicaciones.
68
Para entender su funcionamiento y lograr posicionar al APPC como alternativa de
desarrollo de aplicaciones cliente/servidor, a continuación se estudian los términos
más importantes usados en este protocolo [3].
Una LU (Logical Unit) es el término usado en SNA para representar el software que
controla el intercambio de datos entre programas remotos. Este control se lleva a cabo
siguiendo un conjunto de reglas predefinidas conocidas como el protocolo de la LU.
Por ejemplo, una LU conocida de SNA es la LU 2, por lo que el protocolo usado en
esta LU se conoce como protocolo LU2.
Otra LU similar es la LU7 que permite el flujo de datos entre el AS/400 y las terminales
conectadas por enlace twinaxial, esta LU también se conoce como "5250 Display Data
Stream". De igual forma, el control del flujo de datos con las impresoras del AS/400 se
lleva a cabo por medio de la LU 4 ó "5250 Printer Data Stream".
Para comprender mejor la evolución de los protocolos SNA, basta con comparar la
funcionalidad entre la LU 7 con la LU6.2. Una PC conectada al AS/400 por medio de
un emulador 5250 (LU 7) sólo nos servirá como terminal. En cambio, si en la PC se
instala un software de comunicaciones que use el APPC , tendremos la posibilidad de
contar con varias funciones: uso del AS/400 como servidor de archivos, como servidor
de base de datos, emulación de terminal y de impresora, etc.
69
6.1.1.2. PROGRAMAS DE TRANSACCIÓN.
Las funciones que podemos obtener por medio del APPC, se logran mediante el
sincronismo entre un par de programas: un programa cliente residente en la
computadora personal y otro programa servidor ejecutándose del lado del AS/400.
Cada uno de estos programas recibe el nombre de Programa de Transacción ó
simplemente TP por sus iniciales en idioma inglés. En la figura 6.1 . se muestra el
concepto de los programas TPs:
Programa Programa
TP Cliente TP Servidor
111
Funciones
APPC
Funciones
APPC
!!j
Ruteador APPC en
(LU 6.2) Servidor
Un TP es el programa que usa los servicios del protocolo LU para comunicarse. Por
ejemplo, si se realiza una transferencia de un archivo de base de datos del AS/400, los
datos del nombre del archivo, tipo de secuencia, selección de renglones, etc., se
especifican dentro del programa TP cliente. Este programa invoca los servicios del
programa TP servidor, el cual envia los datos.
a) Programas de Servicio, los cuales son proporcionados por el proveedor del software
de comunicaciones, como por ejemplo, las funciones de Transferencia de Archivos, la
función DOM (Distribuited Data Management), SNADS (SNA Distribution Services) y
otras que vienen con el OS/400. Generalmente estos programas están codificados en
lenguaje C.
b) Programas de Aplicación, que son los programas que se pueden codificar para
cubrir los requerimientos específicos de los usuarios finales. Como ejemplo, se pueden
mencionar aplicaciones comerciales como la versión cliente/servidor de BPCS,
70
MAPICS, JO EDWARDS. O bien, aplicaciones creadas dentro del área de sistemas de
una empresa.
La sesión controla el intercambio de datos entre las LU's, incluyendo el tamaño de los
paquetes de información, la detección y recuperación de errores, el ruteo de los datos
y el sincronismo.
Existe otro concepto que está relacionado con una sesión: la conversación. Una
conversación es el término dado al enlace de datos entre un par de programas de
transacción (TP). Sólo se puede tener una conversación por cada sesión.
Los TPs tienen el control de la sesión mientras exista una conversación entre ellos.
Cuando la conversación termina, la misma sesión puede ser usada por otro par de
TPs, de esta forma se hace más eficiente el uso de los recursos de la red al evitar la
sobrecarga que se requeriría si una sesión se tuviera que crear para cada
conversación entre programas TPs
La duración de una conversación está determinada por los mismos TPs, por ejemplo, si
se trata de una transferencia de datos, quizá el programa TP servidor decide terminar
la conversación debido a que ya no hay mas registros que enviar.
El APPC permite establecer sesiones paralelas entre un par de LUs, de esta forma se
pueden tener varias conversaciones al mismo tiempo: una puede ser utilizada por una
71
emulación de terminal, mientras otra serviría para usar la función de Servidor de
Archivos.
Otras funciones típicas son: enviar datos al TP, recibir datos desde un TP y terminar
la conversación. Cada una de estas funciones es ejecutada por del programa
ruteador, por lo que el TP debe proporcionar los parámetros adecuados.
Del lado del AS/400, los programas TPs servidores utilizan las funciones de APPC por
medio de archivos ICF (lntersystem Communication Facility) ó por medio de funciones
CPI-C (Common Programming lnterface-Communications).
d) El personal de una empresa de mensajería externa llega todas las tardes a recoger
los envíos. Coloca el sobre en una bolsa que es rotulado con información nueva que
sólo es útil y entendible a la empresa de mensajería, como puede ser: número de
guía, peso, número de cliente, etc.
• Existe una comunicación "vertical" pre-establecida entre las diferentes capas del
proceso.
• Las funciones de una capa son realizadas de forma desconocida para la otra. Sin
embargo, una capa podría saltarse los servicios de otra, por ejemplo, la persona
"A" podría llevar su sobre directamente a la empresa de mensajería, o incluso llevar
73
personalmente la información a la persona "B". El beneficio sería mayor rapidez,
pero el costo está en que deben conocer y realizar los convencioanalimos de las
otras capas. En términos de comunicaciones, esto equivale a codificar un programa
que realice todas las funciones de enlace de datos, controlando el estado de cada
bit de los paquetes de información y llegando incluso a intercambiar datos con los
adaptadores de comunicaciones .
En la arquitectura SNA, el mensaje que un programa TP envía, debe pasar por 7 capas
de comunicaciones:
1. Servicios de Transacción
2. Servicos de Presentación
3. Control de Flujo de Datos
4. Control de Transmisión
5. Controlde Ruta
6. Control de Enlace de Datos
7. Control Físico
En el sistema AS/400 existen dos alternativas para escribir programas de APPC. Por
medio de archivos ICF (lntersystem Comunications Function) y por medio de CPI-C
(Common Programming lnterface-Comunications). La forma más común es por medio
de archivos ICF.
Se ha descrito que un programa en la PC, por ejemplo en Visual Basic, accesa a las
funciones de APPC por medio de las APls de APPC. En el AS/400, un programa
ejecuta las funciones de APPC por medio de operaciones WRITE y READ hacia un
archivo de tipo ICF.
74
6.1.2. DISEÑO DE APLICACIONES CON APPC.
Cuando un programa requiere iniciar una conversación con un programa remoto, debe
usar la función Allocate. El programa que ejecuta el Allocate debe proporcionar cierta
información. La infomación más importante es:
Cuando la LU local recibe los datos, se copian a un buffer interno. Aunque el programa
local reciba un código de retorno de éxito, esto no significa que los datos hayan sido
75
enviados. Solamente significa que el APPC ya tiene los datos. Esto se hace para
optimizar el rendimiento. En lugar de enviar pequeños bloques de datos, el APPC
acumula datos hasta que el buffer se llena. Existen situaciones en las cuales el
contendio buffer es enviado inmediatemente, sin importar si esta lleno o no, por
ejemplo, cuando se usa una función de APPC que cambie de estado de envío a
estado de recpción, o cuando se termina la conversación.
Si hay datos en el buffer listos para ser enviados, el APPC los enviará junto con el
indicador de terminación de la conversación. Por medio Receive- And - Wait ó
Receive_lnmediate, el programa remoto leerá los datos y el indicador de que la
conversación ha terminado.
Para verificar que el programa remoto ha recibido y procesado los datos, el programa
local puede, mientras esté en modo de envío, ejecutar la función Confirm. Esta función
ocasiona el envío del contenido del buffer y solicita una respuesta de confirmación del
programa remoto.
76
El uso del Confirm es opcional. Se recomienda en transacciones complejas, en donde
un programa puede estar enviando varios datos y de vez en cuando preguntar si el
programa remoto los ha recibido y ha terminado de procesarlos satisfactoriamente. Un
ejemplo puede ser un programa de transferencia de archivo. La confirmación significa
que los datos han sido enviados y grabados exitosamente en disco.
Para simplificar el ejemplo, se asume que este programa solo realiza una consulta. En
la figura 6.2. se muestra la conversación entre el programa cliente y el servidor.
Enlace de
Programa Cliente comun icaciones Programa Servidor
Intercambio de datos
Inicio
íl Anicate ,nTº
@) ! Receive_And_Watt 0
Send_Data (núm artículo) - - - - • • -
'
Receive_And_Watt
J~
Leer Base de Datos
@MostL dalo
''
Send_Data (Descripción)
Receive_And_Watt
@) t
Deallocate
'
Fin Fin
77
1) El programa cliente ejecuta el Allocate para iniciar una conversación con el
programa servidor. Esto ocasiona que programa servidor sea arrancado en modo de
recepción y el programa cliente queda en modo de envío.
5) El programa cliente lee el dato enviado por el programa servidor y luego muestra el
dato al usuario
78
Con los sockets de TCP/IP, un programa cliente usa un canal de comunicación
(socket) para enviar y recibir datos con un programa servidor (figura 6.3.).
PC AS/400
Programa Programa
WINSOCK
ITCP/IP 1 =:;.:ón I
TCP/IP I
Microcódigo
Cuando el programa cliente envía datos usando el API de WinSock, el dato es pasado
al soporte de TCP/IP y luego enviado por el enlace físico de la red. El adaptador de red
del AS/400 recibe el paquete y lo pasa a la capa TCP/IP. Ahí se direcciona a un
programa de tipo socket que está "escuchando" un puerto específico.
Los programas que usan los sockets de TCP/IP deben seguir una conjunto dado de
reglas, muy parecidas a las reglas de APPC. Por lo tanto, el desarrollador de este tipo
de aplicaciones debe dominar las herramientas de programación tanto en ambientes
Windows como en AS/400. Las aplicaciones del lado de la PC se escriben típicamente
en Visual Basic, Delphi ó Visual C++. Por el lado del AS/400, los programas que usan
sockets se escriben en C debido a que las bibliotecas de funciones para los sockets
en AS/400 se proporcionan para este lenguaje.
79
6.2.1. ESTRATEGIAS DE DISEÑO CON APPC O SOCKETS EN AS/400
El modelo cliente/servidor que se utiliza para escribir aplicaciones con APPC ó Sockets
en AS/400 se puede ver en la figura 6.4.
Datos
SERVIDOR
Lógica
Red
Lógica
CLIENTE
Presentación
Lógica
Distribuida
80
Como se puede observar en la figura 6.4. sólo se soporta el modelo de Lógica
Distribuida. Los otros modelos de cliente/servidor estudiados en el capítulo 2, no se
soportan debido a que con APPC o con Sockets se requiere programar tanto en el
cliente como en el servidor. La aplicación usa las funciones ó APls del protocolo APPC
o de Sockets para intercambiar mensajes su contraparte.
81
CAPÍTULO 7. COMPARACIÓN DE ALTERNATIVAS.
Modelos Cliente/Servidor
Interfaces (Capítulo 2)
Presentación Presentación Logica Datos Datos
Remota Distribuida Distribuida Remotos Distribuidos
ODBC X X X
APPC X X
Sockets X X
JAVA X X X X X
82
7 .2. EFICIENCIA DE LA APLICACIÓN.
APP C ó Sod<E!s
B'i ciencia de
la aplicación Lógca Ostribuidi! con Java
009Csin .A.Pis
Menor
Menor Mayor
Complejidad de desarrollo
Para obtener aplicaciones más eficientes, se deben usar las APls directamente y
combinarlas con los procedimientos almacenados, ya sea con ODBC o con Java.
Las aplicaciones con el mejor tiempo de respuesta se logran por medio de las
interfaces como APPC ó Sockets. En el capítulo 6 se mostró que con estas técnicas el
grado de complejidad en el desarrollo es mayor.
83
7.3. PORTABILIDAD DE LA APLICACIÓN.
En la figura 7.3. se compara la portabilidad de una aplicación dependiendo de la
interfaz de programación utilizada.
OD BC y Pro c. Almacenados
APPC ó Sockets
Menor May;,r
Portabilidad de la aplicación
Las aplicaciones más portables se logran utilizando a Java o ODBC bajo el modelo de
Datos Remotos. Esto se debe a que no existe código en el servidor. En caso de mover
la aplicación a otro servidor, sólo es necesario contar con un esquema de datos similiar
en el nuevo servidor. Las aplicaciones menos portables son aquellas que se han
desarrollado con APPC. Esta interfaz de programación es propietaria y requiere que
exista código tanto en el cliente como en el servidor, lo que minimiza la portabilidad de
la aplicación.
84
7.4. DESARROLLO DE APLICACIONES CON JAVA.
Como se mecionó en el capítulo 4, una de las características más importantes de Java
es que se puede desarrollar una aplicación en cualquier tipo de computadora y luego
ejecutarla en otras, siempre que la computadora tenga una máquina virtual JVM. Las
aplicacionees de Java que en algún momento correrán en el AS/400 pueden ser
creadas en una PC con NT, o en plataformas UNIX.
85
7.4.1.1. DIFUSIÓN DEL LENGUAJE.
7.4.1.2. RENDIMIENTO.
Otro problema serio que actualmente tiene Java tiene que ver con la cantidad de
recursos de cómputo requeridos para correr los programas. Existen dos razones por
las cuales el Java consume gran cantidad de recursos. En primer lugar, mientras se
ejecuta una aplicación, la máquina virtual JVM está diseñada para convertir el
bytecode en código de máquina, tomando instrucción por instrucción, lo cual
disminuye la velocidad de la ejecución. En segundo lugar, los lenguajes orientados a
objetos son por lo general más lentos que los lenguajes procedurales debido a la
sobrecarga propia de los objetos.
En suma, Java requiere de más poder de cómputo que otros lenguajes. La historia de
la computación muestra que cada avance importante en la tecnología de software trae
un impacto adverso en el rendimiento. Por ejemplo: la aparición del Fortran o Cobol,
versus el ensamblador y el cliente/servidor versus terminales de caracteres.
Parte del problema del rendimiento puede ser mejorado con el uso de la
precompilación del código en AS/400. En general, las aplicaciones de Java son
convertidas por la máquina virtual a instrucciones de máquina al momento de
ejecución. Sin embargo, si la aplicación es de uso común en el AS/400, existe la
alternativa de convertir sólo una vez el bytecode en instrucciones nativas de máquina
86
y almacenar estas instrucciones. Cada ejecución posterior de la aplicación será en
realidad una ejecución directa, lo cual mejora significativamente el rendimiento.
7.4.1.3. ESCALABILIDAD
La forma actual en que Java maneja los bloqueos y la sincronización ocasiona que no
se aproveche completamente el procesamiento simétrico SMP (Symmetrical
Multiprocesor) de los servidores. En algunos servidores, incluyendo al AS/400, el
problema se minimiza con el manejo propio que el sistema tiene para procesos
concurrentes. Cuando existe contención de recursos, exsiten mecanismos dentro del
microcódigo que mejorar la utilización del procesamiento simétrico.
87
Para obtener más flexibilidad en la programación de las transacciones y contar con el
mejor tiempo de respuesta, con ODBC se tienen estas opciones:
a) Usar directamente las APls de ODBC.
b) Usar las APls de ODBC en combinación con las técnicas marcadas en el modelo de
un Servidor de Transacciones, en donde se utilizan las facilidades de Procedimientos
Almacenados del servidor. Esta opción ocasiona que se tenga que desarrollar código
del lado del AS/400. Este código se puede elaborar usando algún lenguaje nativo
como COBOL o RPG, o bien, usando el lenguaje portable de SOL puro.
Las APls son funciones externas incluidas en archivos DLL (Dynamic Link Library) y
frecuentemente están codificadas en lenguaje C. Al usar una API, el programador tiene
que entender los detalles de paso de parámetros, manejo de variables de tipo string,
conversión de tipos de datos, manejo de los códigos de retorno, etc.
88
7.6. PROTOCOLOS A NIVEL DE TRANSPORTE.
Esta alternativa es ideal para, por ejemplo, si alguien desea desarrollar una aplicación
gráfica para controlar la seguridad del AS/400, o una aplicación para el monitoreo de
las comunicaciones o del rendimiento del sistema. En este caso se deben crear
programas en el AS/400 que intercambien datos con el programa cliente. De hecho,
muchas empresas desarrolladoras de software para AS/400, incluyendo a IBM, utilizan
APPC o Sockets para desarrollar, entre otros productos, emuladores de terminales,
administradores gráficos de la base de datos, administradores de usuarios, etc.
• Cada vez que una conexión de APPC se arranca, el AS/400 crea un trabajo
diferente. Esto significa que por cada usuario remoto, el AS/400 arranca un
proceso. Aunque es posible diseñar el programa servidor para que atienda a varios
clientes, esto dificulta el diseño de la aplicación.
89
• Uso de conversaciones tipo duplex. Por omisión, las conversaciones de APPC son
del tipo half-duplex. Esto significa que solo un programa puede enviar datos en un
momento dado. Cuando el otro programa requiere enviar, la dirección de la
conversación debe ser cambiada. Este proceso de cambio toma tiempo. Una
técnica para eliminar el cambio de dirección es establecer desde el inicio una
conversación de tipo duplex. Al tener dos conversaciones, una se utiliza para el
envío y la otra para la recepción.
90
APPC. Este mecanismo incrementa el rendimiento de la aplicacción y disminuyen
los tiempos de espera por parte del usuario.
• Usar los sockets de TCP/IP para aplicaciones comerciales. Los sockets son un
excelente alternativa para el desarrollo de aplicaciones comerciales y para
aplicaciones en donde se requiera el máximo rendimiento. En estos casos, el
esfuerzo de desarrollo se compensa por el rendimiento obtenido. Para aplicaciones
de menor escala desarrolladas dentro de la misma empresa, no se justifica el
esfuerzo.
• Los datos enviados entre el AS/400 y la PC deben ser convertidos. Debido a que el
el AS/400 usa un código de carácter EBCDIC que es diferente al ASCII, el
desarrollador necesita usar las funciones de sockets de conversión de datos antes
de enviarlos al AS/400. De la misma forma, los datos regresados del AS/400 deben
ser convertidos usando estas funciones. Para WinSock, la conversión de datos se
realiza con las funciones htonx (host-to-network) y ntohx (network to host). La letra
x debe ser sustituida de acuerdo al tipo de datos. Por ejemplo, la función htons se
utiliza para variables de tipo Short.
91
CAPÍTULO a.CONCLUSIONES Y RECOMENDACIONES
Las herramientas estudiadas son Java, ODBC y las interfaces a nivel de transporte
como Sockets en redes TCP/IP y APPC en redes de tipo SNA.
Desde luego, existen otras alternativas para producir aplicaciones Cliente/Servidor con
AS/400. Algunas de estas alternativas son: Data Queues y OLE/DB.
Sin embargo, tomando en consideración que las áreas de sistemas que cuentan con
AS/400 están más enfocadas al desarrollo de aplicaciones transaccionales con la Base
de Datos, el uso de interfaces portables basadas en el estándar SQL representa la
mejor alternativa de desarrollo. Las interfaces estudiadas de Java y ODBC se basan en
el estándar SOL para el acceso a los datos remotos.
Como se ha mencionado, la opción del ODBC en AS/400 produce aplicaciones
totalmente portables y eficientes. Por otro lado, se tiene también la ventaja de
simplificar el desarrollo ya que no es necesario programar del lado del AS/400. Una
ventaja adicional es que la codificación de la aplicación "cliente" se puede realizar por
medio de un lenguaje visual fácil de usar. Sin embargo, en la actualidad el ODBC se
percibe por la industria de cómputo como un mecanismo de acceso lento a los datos
remotos, por lo que el número de desarrolladores con experiencia en ODBC es escaso.
Esto significa que en algunas empresas no existe razón para reescribir sus
aplicaciones hacia Java, sobre todos las funciones típicas transaccionales con la base
de datos. En cambio, cuando se requiere portabilidad, productividad por medio de
programación orientada a objetos, y beneficios de la reutilización, la estrategia debe
ser el uso de Java ya que en estos casos es en donde se ubica mejor.
92
El uso de las interfaces de APPC o Sockets no se recomiendan para los
departamentos de sistemas que cuentan con AS/400 y que desarrollan aplicaciones
transaccionales con la base de datos. Estas interfaces ocasionan que el desarrollo de
las aplicaciones se complique al tener que codificar tanto en el cliente como el
servidor. En cambio, debido a que con estas herramientas se obtiene el mejor tiempo
de respuesta, su uso es más común en proveedores de aplicaciones.
Para mostrar las ventajas señaladas de portabilidad y eficiencia, en este trabajo se han
explicado las siguientes técnicas:
b) Procedimientos Almacenados.
Los procedimientos almacenados se utilizan para maximizar el rendimiento de las
aplicaciones distribuidas ya que reduce significativamente el tráfico de información
entre el programa cliente y el servidor.
El programa servidor puede ser codificado en cualquier lenguaje nativo del servidor, sin
embargo, para seguir contando con la característica de portabilidad de la aplicación, se
recomienda que el procedimiento almacenado se codifique usando el lenguaje
estándar de SQL conocido como SPL (Stored Procedure Language). Este lenguaje se
basa en el estándar SQL3 de ANSI. La ventaja de este enfoque es que el código del
servidor se puede mover entre diferentes plataformas que soporten el SPL. La mayoría
de las bases de datos relacionales actuales lo soportan.
93
8.1. SOPORTE DE NUEVAS TECNOLOGÍAS.
Para que el sistema AS/400 funcione como servidor de páginas Web, se puede utilizar
el producto "HTTP Server'', el cual forma parte del sistema operativo. Este producto
proporciona pricipalmente los siguientes servicios:
94
Con respecto al desarrollo de aplicaciones "e-business" en AS/400, una de las
principales alternativas es utilizar el producto WebSphere. Este producto permite
aprovechar las capacidades que ofrece Java de "escribir la aplicación una vez y
ejecutarla en cualquier sistema". El producto WebSphere proporciona un ambiente de
ejecución para los "servlets" de Java, así como acceso a la base de datos y a otros
recursos a través de conectores y agentes de objetos estándares en la industria. Esto
significa que las empresas pueden lograr que cualquier sistema con capacidades de
correr un navegador habilitado para Java (como por ejemplo una computadora de red o
una estación de trabajo UNIX) ejecute aplicaciones corriendo en AS/400 a través de la
red.
Para los desarrolladores de aplicaciones que han trabajado con bases de datos
tradicionales y rutinas procedurales, el cómputo colaborativo es un concepto diferente.
Por ejemplo, los requerimientos de datos en el cómputo colaborativo son muy
diferentes de los servicos que una base de datos relacional proporciona. En las
aplicaciones colaborativas, los usuarios compartes diferentes clases de datos. Además
de los datos estructurados en renglones y columnas, se requieren datos no
estructurados como son hojas de cálculo, documentos de texto, gráficas, o gran
cantidad de textos.
El Lotus Domino está diseñado para manejar y organizar datos de diferentes tipos . Un
ejemplo de una aplicación colaborativa es el proceso de contratación de empleados.
Por medio de una aplicación colaborativa se puede controlar el proceso de las
entrevistas, de tal forma que los diferentes entrevistadores compartar la misma
información: la imágen digitalizada del curriculum, las respuestas de la entrevista
anterior, etc. Otros ejemplos similares son el proceso de adquisiciones del
departamento de compras y el proceso de autorizaciones de gastos de viaje.
95
Con respecto al soporte para desarrollo de aplicaciones en internet, tanto los servicios
de Domino en el servidor, como de Notes en el cliente soportan una variedad de
estándares de internet. Se incluyen herramientas para servicios Web, agente de
tranferencia de mensajes SMTP/MIME, soporte a los estándares IMAP y POP3,
servidor NNTP (Network News Transport Protocol, el servicio LDAP (Lightweight
Directory Access Protocol) y SSL 3.0.
El soporte a esta variedad de estándares permiten que el sistema AS/400 pueda
participar como servidor de aplicaciones para usuarios internos sobre redes de tipo
intranet, y para usuarios externos sobre extranets. Las aplicaciones de este tipo
combinan las funciones de publicación de páginas Web, correo eléctrónico y el
"e-business".
96
BIBLIOGRAFÍA
(1] E. Wain Right; Jeff Ray; A. Hoffer. "Managing the lnformation Technology what
managers need to know". 2nd. Edition. Prentice Hall.
[2] Peter Burris; Chris Christiansen. "Midyear Update: Cost-to-Use of Midrange and PC
LAN System in the Networked Enterprised". lnternational Data Corporation.
(3] Jim Hoskins. "Exploring IBM Technology and Products". Maximum Press
[4] David Andrews; Roy Bauer; Janet Puistonen. "The AS/400: In a class by itself'.
ADM Consulting, lnc.
[6] Microsoft." ODBC 2.0 Reference and SDK Guide", Microsoft Press.
[7] Phil Coulthard; George Farr. "Java For RPG Programmers". Advice Press
(8] Roy Janes "Visual Basic with Client Access APls". Duke Press.
[11] Paul Cante. "DataBase Desing and Programming for 082/400". Duke Press
97