Hablemos un poco del comportamiento del Web que se debe tener claro. Las clases que se generen en un Thread siempre que el Response es enviado del Server IIS al Browser todo se le hace Dispose. Lo que dice que mueren todas los objetos dentro del Thread que genera el Request del Browser.
Con esto en mente lo que permite Microsoft es el ASP.NET es unas variables que son para persistir la información. Para esto ahy varios niveles. Ya conoces la de Session que es una variable exclusiva para alguien que vaya a tu pagina, cada visitante tendrá su propia Session. Pero ahy más tipos de variables de persistencia y más formas de alcanzar esto.
Tipos de Variables de Persistencia
1- Session
2- Application
3- ViewState
4- Cache
5- Cookies
Entra la 1 y la 2 la diferencia es que un objeto guardado usando Application[key] es visible por todos los que naveguen tu sitio. No como Session que es exclusiva para cada visitante.
El view state es exclusiva para cada visitante pero no va a la memoria sino que se escribe en la misma página, osea que el ASP.NET le agrega eso dentro del body del html cuando lo genera y aunque lo que dice no se entiende alli estan encriptados los datos. Esto tiene limitantes porque pone pesada la pagina.
El cookie en ves de hacer uso de la memoria lo que hace es guardar la informacion en la máquina del cliente.
Cache es para crontolar el tiempo de vida de lo que deseas agregarle, osea puedes poner una clase y decir que estara alli por 5 dias. El Cache es para todos los visitantes.
Ahora como no explicas bien lo que en teoria a dicho tu profesor y aca no somos adivinos pero si tenemos conocimiento de lo que se puede hacer entonces te puedo dar algunas ideas. Pienso que como estas trabajando a full orientado a objeto lo que se quiere hacer es hacer uso de una clase y no uso de una Session, lamentablemente la Session siempre estara en algun lugar.
Me gustaria leyeras este artículo:
http://www.dotnetpanama.com/dotnetpa...tpContext.aspx
Ese articulo explica como hacer una clase que te permita hacer todo desde objetos sin tener relacion con sessiones pero ella veras que si persiste la informacion en sessiones.
Un ejemplo es que tengas tu misma clase como esta pero en ves de hacer:
public static List<> etc..
haces una Propiedad como:
Public List<string> Nombre
{
get { return (List<string>)Session["ListaSession"]; }
set { Session["ListaSession"] = value; }
}
ó lo mejor es hacerlo como dice el articulo de arriba que es solo guardar el objeto principal.
El verdadero reto aquí es saber que la información se debe persistir y se hace por medio de las variables que menciono arriba o también con base de datos. Donde todo lo escribas y lo leas desde la base de datos directo. Si esta fuera tu via solo te aconsejo que para una aplicación de alto volumen donde la información permanece siendo siempre la misma, es agregarle un cache ya sea pequeño de 10 segundos pero eso elevara el rendimiento.
Espero haber aportado algunas ideas extras.