martes, febrero 28, 2006

Un paseo por Intraweb...

Muchos de nosotros posiblemente hemos hablado de esta suite de componentes para desarrollar nuestras paginas web desde Delphi, pero en realidad ¿que hay detras de esta Suite?.

Tiene sus origenes desde la version 7 de Delphi, y su principal objetivo es desarrollar aplicaciones para internet en Delphi (paginas web) como si estuvieramos programando alguna aplicacion GUI, es decir, es cuestion de insertar algunos componentes en nuestra superficie de diseño (Form), cambiar algunas propiedades y finalmente agregar uno que otro evento, y como resultado tendremos nuestra primera aplicacion web desde nuestro tan querido entorno de programacion Delphi.

Una Caracteristica importante de Intraweb, es que no necesita de las Cookies para dar continuidad a una serie de peticiones hechas por el usario, sino que dentro de su mismo URL va implicito este llamado creando una sola sesion por cada usuario que se conecta, de esta forma se evita poder enviar 2 o mas veces los datos desde la misma pagina o bien se intente recuperar del cache del navegador una pagina generada por la peticion de otro usuario. La URL de Intraweb es como se muestra a continuacion:

http://127.0.0.1:4956/EXEC/6/2CFAA80007485C0FDE6AE240

Como se puede observar en la URL anterior, se puede ver un valor (informacion de ruta) el cual es generado aleatoriamente del lado del servidor y el cual se mantendra constante durante todo el tiempo que dure la sesion del usuario.

Antes de este valor, se puede observar un numero [ ... 6 ... ] el cual le sirve a Intraweb para indicar la posicion de la pagina en la secuencia de peticiones, este numero se genera incrementalmente de acuerdo a la peticion del usuario.

Al inicio de la URL se encuentra el dominio de la pagina y seguido de esta se debe poner el puerto (:4956)por el cual se conectara la aplicacion cliente al servidor.

Una clase muy importante de Intraweb es la clase llamada TUserSession la cual se genera por cada aplicacion nueva que se crea, de tal forma que cuando se inicie una nueva sesion automaticamente se crea una instancia de ella, asi si declaramos una variable dentro de la clase obtendremos una copia independiente de la misma por cada sesion del usuario.

Pero bueno, vayamos al grano, ¿Como crear una nueva aplicacion de Intraweb?, para crear una nueva aplicacion se realzan los siguientes pasos. Bueno es importante mencionar que para este ejemplo ocupo Borland Developer Studio 2006 la ultima version de Delphi el cual tiene incluido la version 8 de Intraweb. ahora si continuo con los pasos:



  1. Ir al Menu del IDE de Delphi a la opcion de File --> New -->Other.
  2. En la siguiente Imagen se puede observar la opcion que debemos escoger, en este caso Intraweb Application Wizard.



  3. Escoger el tipo de Aplicacion StandAlone Application. Ahi mismo escoger las opciones de Crear una sesion para el usuario, el tiempo de forma principal Estandar, puede ser PDA o Wab, dar un nombre de Proyecto y finalmente escoger la ruta donde se alojara dicho proyecto. esto se puede ver en la imagen siguiente:




Una vez hecho lo anterior, podemos darnos cuenta que automaticamente se crearon tres unidades, una llamada Unit1.pas, otra llamada UsesSessionUnit.pas y finalmente ServerController.pas.



  • La primera de ella servira para poner todos nuestros componentes los cuales queremos que se muestren en nuestra pagina, Botones, Cajas de Edicion, Etiquetas, etc. es decir es la que se encontrara del lado del cliente.

    Para ejemplificar nos podemos ir a los componentes estandar de Intraweb los cuales estan en la pestaña de IW Standard y escogemos una Etiqueta, cambiamos su propiedad de Caption, en este caso "Hola ROCOED". Esto se puede ver en la siguiente imagen:



  • UserSessionUnit.pas como se explico anteriormente, aqui es en donde se encuentra instanciada la clase TUserSession, nos puede servir como un modulo de datos en donde podemos poner nuestros componentes de base de datos.y por cada usuario que se conecte tendra su propia instancia de datos

  • Finalmente ServerController.pas es la que se encuentra del lado del servidor, aqui se encontraran los metodos que queremos se realicen en el servidor, es decir si queremos que algo suceda cuando un usuario se desconecta, aqui lo tendriamos que poner


  • Una vez que guardamos nuestro proyecto, lo compilamos y ejecutamos, tendremos nuestra primera aplicacion web hecha desde Delphi cuando ejecutamos la aplicacion aparece una ventana como se muestra en la imagen siguiente:


    Esta ventana anterior es la aplicacion servidora de nuestro proyecto, esta se refiere a la Unit ServerController.pas, finalmene dando un click al primer icono, el cual abrira nuestro navegador que tenemos por default, mostrara la pagina web que diseñamos en la Unit1 como se ve a continuacion:




Si observamos el Codigo fuente de la pagina web, se puede observar puro codigo HTML convinado con JavaScript, internamente es como funciona el motor de Intraweb el cual transforma todos los controles o componentes que insertamos en la Unit en codigo HTML y/o JavaScript para poder desarrollar aplicaciones de internet desde Delphi.

Bueno espero que haya sido de ayuda este primer paseo por Intraweb. en otro articulo hablaremos de como desarrollar una aplicacion web convinado con una Base de Datos.

12 comentarios:

yop dijo...

Hola.
Me parece muy interesante el tema pero ¿el usuario que acceda a la web, tiene que escribir siempre en la url dominio:puerto?.¿Hay alguna manera de omitir el puerto?.

rocoed dijo...

Hola "yop" antes que nada agradesco tu comentario...

contestando tu pregunta referente a omitir el puerto, antes que nada toma en cuenta que una aplicacion de Intraweb del lado del server es en realidad un servidor web, como apache, de tal forma que si quisieras omitir el puerto de tu aplicacion tendrias que definir el puerto 80 de tu ServerController para que las peticiones sean como una pagina web normal, de esta forma cuando un usuario entra no necesita poner el puerto para entrar a las paginas.

Ahora bien, si en tu maquina servidor tienes apache el cual te sirve para montar un foro o alguna otra aplicacion web, ya no podrias entrar en ellas (si es que esta corriendo tu aplicacion web por el puerto 80) ya que apache por default tiene direccionado este puerto el cual es el puerto por donde llegan las peticiones web a tu computadora.

yop dijo...

Hola rocoed.
Solo hacia el comentario porque hay usuarios a los cuales ya les cuesta "escribir" una url, pues imaginate que se tengan que acordar del :puerto.
saludos

rocoed dijo...

En eso tienes razon yop, pero bueno opciones hay...

un gusto saludarte....

KILTRO dijo...

Hola
Soy nuevo en esto de la Intraweb, y me parece que es una herramienta muy buena, de mucho potencial.
Rocoed, necesito saber si tu puedes ayudarme con un gran problema que tengo con intraweb, el cual es no saber como publicar lo desarrolla. Vi la web http://sysmec.net:5000 y me parecio muy buena, algo lenta pero muy buena. y quisiera saber como publicar la mia. He tratado con IIS, pero no puedo. No se si me puedes orientar en esto. De antemano muchas gracias

rocoed dijo...

Hola Kiltro, sinceramente no entiendo muy bien que es lo que necesitas...si te refieres a publicar tu aplicacion en internet, antes que nada necesitas una direccion IP fija, por supuesto tu servidor, y listo... ejecutas tu aplicacion y para entrar a ella desde algun explorador solo tienes que pasarle ademas de la dir IP el puerto. Ahora bien si ya cuentas con un dominio puedes dicirle a tu aplicacion que se ejecute bajo ese dominio... si quieres un ejemplo de lo que te comento entra a:
http://www.aexiuv.com

bueno kiltro mil gracias por tu comentario, y si tienes alguna otra duda o no fui muy claro con mucho gusto por aqui ando....

Anónimo dijo...

hola.
me encantó tu ayuda, pero ejecuto mi programa (IWproject.exe) en mi máquina, y no sé hacer para que esto funcione en un servidor publico.
Tengo un dominio, he subido el archivo ejecutable, pero hasta ahi nomás.
Qué necesito para ejecutar el programa?
Muchas gracias

Jose dijo...

Hola
soy nuevo en esto, tengo una pregunta:
Si tengo un dominio, ¿cómo le digo a una aplicación que se "ejecute bajo ese dominio"?
Salu2

rocoed dijo...

Para que tu aplicacion funcion con tu dominio, es necesario que el puerto que le pongas a tu aplicacion sea el 80, ya que este puerto es el que por default se requiere para la web, asi como el 21 es el del ftp....

cualquier cosa por aqui andamos.. y gracias por sus comentarios!!!..

Jose dijo...

Hola Rocoed,
Agradezco tu respuesta y talvéz creas que soy lento para aprender pero la cosa está asi:
Tengo un dominio en: www.revistabios.com, que funciona en un servidor Linux, he subido el programa IWProject.exe al directorio "public_html" pero no se como se hace para que funcione.
¿Será que tiene algo que ver el sistema operativo en el que funciona el servidor?
¿Como hago para decirle al servidor que tiene que ejecutar este archivo, si cada vez que intento ejecutarlo sólo me da la opción para bajarlo?
Espero que se entienda mi problema y espero que me ayudes.
Gracias de antemano.

Jose dijo...

Talvez sea necesario aclarar que tengo un dominio "alquilado", y en ese sentido: ¿Es cierto que el propietario del dominio tiene que ejecutar la aplicación en su servidor con su autorizacion?
Salu2

Andres Baquer dijo...

Hola quisiera saber donde puedo conseguir manuales o documentos de INTRAWEB, pues hasta la fecha unicamente he desarrollado aplicaciones para windows con delphi y quisiera aprender a desarrollar aplicaciones WEB y por su puesto con DELPHI..

les agradezco su ayuda,,.. gracias