Cómo manejar las variables estáticas en una biblioteca que se utiliza tanto para el escritorio y la web?
-
19-09-2019 - |
Pregunta
Tengo algunas clases de biblioteca de C # que hacen uso de variables estáticas. Yo uso estas clases de biblioteca tanto para aplicaciones de escritorio y web. El problema es que, como acabo de descubrir, las variables estáticas no bajan tan bien en un servidor web; los valores son compartidos en todas las sesiones utilizando el sitio web!
¿Cómo puedo conservar las características de una variable estática para su uso en mis aplicaciones de escritorio, mientras se asegura de que cada sesión en mi servidor web tiene sus propios valores independientes para estas variables - pero dentro de la misma sesión, todavía realmente se comporta como una estática?
Solución
valores de las variables estáticas se comparten a través de todos los temas en un dominio de aplicación. En una aplicación ASP.NET la forma recomendada para almacenar datos que se relacionan sólo para el usuario actual es el Sesión .
Si se puede modificar el código de esta biblioteca compartida Yo aconsejaría a extraer una interfaz de estas variables estáticas que proporcionarán un mecanismo para almacenar valores. Esto permitirá que cada aplicación para proporcionar su propia implementación. Para una aplicación de Windows que podría utilizar una implementación que utiliza internamente una variable estática. Para una aplicación ASP.NET que podría utilizar la Sesión. Pero en todos los casos se expone una interfaz única. Esto también tendrá el efecto secundario positivo de la prestación de su código sea más fácil de probar la unidad.