Aplicaciones Apex en Internet

Por Eddie Molina
Publicado en julio 2012

Una de las preguntas que con más frecuencia me hacen es: ¿cómo público mi aplicación Oracle Apex en Internet?

Comentarios como: qué tengo que copiar, dónde están los archivos que debo copiar, cómo hago para copiar mi aplicación. Y es que en general, nuestras aplicaciones Oracle Apex, lo que hacen es generar archivos HTML, lo que se presta a confusión si no estamos familiarizados con la arquitectura de Apex y con la manera en que este funciona; pues normalmente, aplicaciones desarrolladas a partir de HTML o PHP por ejemplo, son archivos que copiamos en un servidor Web a partir del cual las ejecutamos.

Es por todo lo expuesto anteriormente, que me he decidido a escribir este artículo en donde de manera breve y concisa, trato de explicar la arquitectura y funcionamiento de Apex y, cómo podemos publicar nuestras aplicaciones en Internet, o bien, en una Intranet o Extranet.


Figura 1
Arquitectura básica de Oracle Apex

Tomando como base la imagen presentada en la Figura 1, podemos darnos una idea clara de cómo es que Oracle Apex funciona.

Lo primero que debemos notar es que Apex se encuentra instalado dentro de la base de datos Oracle, es un componente más de esta.

En segundo lugar, podemos observar, que básicamente Apex consiste de un meta repositorio, en donde además de encontrarse todo el motor de Apex, definido como meta data, se encuentran todas y cada una de las aplicaciones Apex que desarrollamos.

El tercer punto a notar, es que se requiere de un Listener, el cual nos proporciona la conexión que necesitamos para ejecutar ya sea nuestras aplicaciones, o bien, para conectarnos a la "consola" que nos permite desarrollar esas aplicaciones.

Ahora bien, para responder a las interrogantes que se plantearon al inicio, observemos la figura 2 a continuación.


Figura 2
Procesamiento de páginas Apex

Es importante hacer notar, a partir de la imagen anterior, que toda página Apex consta de dos partes diferentes, la primera de ellas "muestra" la página como tal y la segunda ejecuta las solicitudes de procesamiento.

Cuando por medio del método "get", solicitamos el mostrar una página, lo primero que se hace, es "cargar" la meta data almacenada en el repositorio de la base de datos, una vez hecho esto, se procede a realizar los procesos de autenticación y autorización, para determinar si la persona que realiza la solicitud puede acceder a la página y además que funcionalidad de la misma puede utilizar; todo esto en caso de haber definido niveles de seguridad (la aplicación completa o algunas páginas de ella podrían ser de carácter público). Finalmente, cuando se ha finalizado con los dos pasos anteriores, se procede a "armar" y mostrar la página como tal en formato HTML.

Ahora ya tenemos nuestra página armada y en nuestro navegador, cuando por medio de alguna funcionalidad definida en la página (llámese botón, enlace, etc.) hacemos el envío de la página con el método "post", regresamos a la base de datos para cargar la meta data solicitada, se procede nuevamente a revisar autorización y autenticación, se realizan validaciones, procesos definidos y bifurcaciones y se vuelve al proceso de mostrado de la página.

¡Sorpresa!. Todo lo anterior indica que no existe físicamente una página HTML que podamos copiar a un servidor. Sí, así es, cada vez que solicitamos una página de nuestra aplicación Apex, esta es armada a partir de la meta data almacenado en el meta repositorio de la base de datos.

Ero entonces la pregunta es ¿cómo instalo mi aplicación para que pueda ser utilizada por los usuarios?. Existen varios escenarios para responder a esta interrogante, los cuales voy a citar a continuación.

Figura 3

El primero de ellos es utilizar la aplicación de manera personal, en mi computador personal en donde tengo instalada una base de datos Express Edition.

En este caso, el acceso a las aplicaciones entonces, va a quedar limitada a quien pueda sentar enfrente de mi computador.

Para ejecutar mis aplicaciones bajo este escenario, utilizo una dirección como la siguiente:

http://mi_computador:puerto_apex/apex/f?p=mi_aplicacion 

en donde, mi_computador es el nombre de mi computador, o bien, localhost o 127.0.0.1 puerto_apex es el número de puerto por el que el listener escucha las solicitudes, y mi_aplicacion es el número de aplicación Apex a ejecutar.

El segundo escenario corresponde a la ejecución en un servidor departamental, en este caso el Apex y las aplicaciones están instalados en un servidor cuyo acceso está limitado a un departamento o instalación de la empresa.

Por tanto, solo los usuarios dentro de esta instalación o segmento de red van a tener acceso a las aplicaciones.

Figura 4

Figura 5

La tercera manera en que podemos ejecutar aplicaciones Apex, es utilizando una instalación disponible desde el data center de la empresa.

En este escenario, tanto Apex como nuestras aplicaciones se encuentran disponibles de manera centralizada en los servidores de la empresa y por ende, serán disponibles para todos y cada uno de los usuarios en los diferentes departamentos de la misma.

En estos dos últimos casos, la manera de acceder a las aplicaciones, es a través de un dirección similar a la siguiente:

http://servidor:puerto_apex/apex/f?p=aplicacion 

en donde, servidor es el nombre del servidor que tiene instalado Apex, puerto_apex es el número de puerto por el que el listener escucha las solicitudes, y aplicacion es el número de aplicación Apex a ejecutar.

El último de los escenarios, es el utilizar Apex en la nube (Internet), en cuyo caso, podemos tener disponibles nuestras aplicaciones para cualquier usuario, sin importar el lugar en que este se encuentre, siempre y cuando tenga una conexión a Internet disponible

Una muy buena opción en este caso es Amazon Cloud, en cuyo caso, la única diferencia para desarrolladores y usuarios finales es la dirección a utilizar, además del uso de "add-ons" que proporciona Amazon.

Figura 6

Otra opción disponible para ejecutar Apex de esta manera, es hace disponible el servidor Apex de la empresa a través de Internet, en este caso necesitarás de la ayuda del administrador de redes de tu empresa.

Para finalizar, solo quiero dejarles algunas muy buenas razones por las que Apex es una muy buena alternativa para aplicaciones en la Nube:

• Tiene muy pocas partes móviles y por tanto es muy sencillo de administrar.
• El desarrollo, instalación y ejecución se hace utilizando un navegador web.
• No existen dependencias del lado del cliente.
• Saas Multi-inquilino, a través de múltiples espacios de trabajo.
• Es sencillo migrar las aplicaciones a otras instalaciones.
• Al respaldar la base de datos, también estas respaldando los fuentes de tus aplicaciones.
• Soporta el uso de servicios web.
• Viene incluido dentro de Oracle AMI.
• Está siendo usado ampliamente por Oracle en sitios como Oracle Store y Oracle Cloud por mencionar tan solo dos ejemplos.

Espero que la información anterior sirva para aclarar las dudas existentes en cuanto a la manera en que Oracle Apex funciona y cuales son las alternativas disponibles para instalar las aplicaciones y ejecutarlas.




Publicado por Eddie Molina.