<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>http://dagi3d.net/blog/</id>
  <title>dagi3d - php</title>
  <link rel="self" type="text/xml" href="http://dagi3d.net/blog/atom/"/>
  <link rel="alternate" type="text/html" href="http://dagi3d.net/blog/"/>
  <updated>2006-06-07T08:25:15Z</updated>
  <author>
    <name>dagi3d</name>
  </author>
  <entry>
    <title>Sesiones en aplicaciones web multiventana</title>
    <link rel="alternate" type="text/html" href="http://dagi3d.net/blog/archive/2006/6/7/sesiones-en-aplicaciones-web-multiventana"/>
    <id>http://dagi3d.net/blog/archive/2006/6/7/sesiones-en-aplicaciones-web-multiventana</id>
    <published>2006-06-07T08:25:15Z</published>
    <updated>2006-06-07T08:25:15Z</updated>
    <content type="html">
      <![CDATA[<p>Cuando estamos desarrollando una aplicación web, una manera de usar nuestras variables en las distintas peticiones que el usuario pueda hacer es ir guardándolas en la sesión. Evidentemente también se podrían ir arrastrando a través de la url pero esto supondría un engorro bastante grande, y más si lo que estamos tratando de guardar son objetos y no simples datos primitivos. <br />
Pero si guardamos los objetos en la sesión nos podremos encontrar con problemas si el usuario decide abrir otra ventana con la aplicación ya que podría darse el caso que los objetos se estuviesen pisando unos a otros  sin darnos cuenta.<br />
Por ejemplo, se abre la ventana A y guardamos el objeto X en la sesión. A continuación abrimos la ventana B y guardamos bajo el mismo el nombre el objeto Y.<br />
En ese caso, si realizásemos cambios en la ventana A, se estarían aplicando sobre el objeto Y en lugar del primero, que sería lo correcto.<br />
Por eso he tratado de implementar en php una característica que ofrece el framework <a href="http://www.jboss.com/products/seam">Seam</a> de <a href="http://www.jboss.com">JBoss</a> para tratar de solucionar este tema, que es el <em>contexto conversacional</em>. La idea en sí es bastante sencilla de implementar, ya que se trata simplemente se ir guardando en un array las distintas <em>conversaciones</em> que se vayan creando, guardando en la conversación actual de manera transparente las variables que deseemos.<br />
Así tan sólo sería necesario ir arrastrando el identificador de la conversación a la que queremos acceder cuyo nombre se indicará al crear la instancia del contexto.</p>

    <p>He colgado <a href="http://app.dagi3d.net/adivina.php">aquí</a> un ejemplo de aplicación utilizando esta técnica y <a href="http://app.dagi3d.net/adivina.php">aquí</a> el código fuente de ésta.</p>

    <p>Si se abren varias ventanas con esta aplicación, se puede comprobar que está utilizando distintas <em>conversaciones</em> pero está grabando todas las variables en la sesión del usuario.</p>

    <p>Y <a href="http://app.dagi3d.net/conversational_context.phps">aquí</a> está el código fuente de la clase.</p>

    <p>Supongo que el siguiente paso será tratar de implementar esto en RubyOnRails :)</p>]]>
    </content>
  </entry>
</feed>
