Migrando de Escritorio a Web, el Problema de lo "static"

Paso a describir uno de los tí­picos problemas que suele aparecer a las personas que desarrollan normalmente aplicaciones de escritorio y que entrar a participar en un proyecto en el que se requiere desarrollos web.
En escritorio, es algo muy comíºn el utilizar propiedades estáticas (shared en VB.NET, static en C# y Java) para almacenar información que la aplicación necesita desde que arranca hasta que se cierra, o en algíºn formulario especí­fico donde se esté trabajando de manera desconectada de la base de datos. Por ejemplo, la información del usuario activo, o el listado de facturas que se están presentando en un formulario en concreto. En este ámbito el uso de propiedades estáticas funciona a las mil maravillas ya que la aplicación se ejecuta en el contexto del usuario y hay un íºnico usuario accediendo a la posición de memoria reservada por la propiedad estática.
El problema viene cuando intentamos hacer lo mismo en web, por ejemplo en la capa de presentación web, donde tenemos una página (aspx, php, jsp, jsf…) que muestra las facturas relacionadas a un determinado cliente, facturas que además, tras cada transacción que realizamos contra el formulario, van modificando su información. Si en este ámbito utilizamos una propiedad estática para almacenar las facturas, de igual manera que con la aplicación de escritorio, estamos compartiendo una íºnica instancia de la lista, pero esta vez con una pequeña diferencia, aunque tengamos 1 o 100 usuarios accediendo al formulario, todos están trabajando contra la misma aplicación, por lo que todos están trabajando con la misma lista de facturas. La consecuencia de esto es obvia, ante las modificaciones que realicen cualquiera de los usuarios sobre la lista (al ser la misma para todos), afectará al trabajo del resto de usuarios.
¿Soluciones? Para la web existen otro tipo de soluciones dependiendo del tipo de información a almacenar y del rendimiento que queráis obtener: Sesión, Caché, Viewstate (para aplicaciones ASP.NET), campos Hidden (vale, vale, se está liando mucho la cosa, pero funcionar funciona, aunque le tengas que meter muchas horas), y, por supuesto, guardando en base de datos, que viene siento lo habitual y más recomendable en la mayorí­a de los casos.
Cualquier duda sobre algíºn problema en particular, dejad vuestro caso en los comentarios e intentaremos encontrar la solución más eficiente para vuestro contexto. Por favor, indicad problema y requerimientos de sistema.
Saludos!
Miguel.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.