Foros del Web » Programación para mayores de 30 ;) » .NET »

problema curioso con colecciones

Estas en el tema de problema curioso con colecciones en el foro de .NET en Foros del Web. buenas noches compañeros.... aqui me encuentro realizando un obligatorio para clases y me encuentro con un problema que no se solucionar.. les cuento haber si ...
  #1 (permalink)  
Antiguo 18/08/2011, 16:17
 
Fecha de Ingreso: agosto-2008
Mensajes: 367
Antigüedad: 15 años, 8 meses
Puntos: 5
problema curioso con colecciones

buenas noches compañeros.... aqui me encuentro realizando un obligatorio para clases y me encuentro con un problema que no se solucionar.. les cuento haber si me pueden dar una mano , esto me esta trancando todo

resulta que tengo una clase llamada arrendadora de esta forma

namespace obligatorio_2
{
public class arrendadora
{
//agrego clientes

public static List<cliente_empresa> col_clientes_empresariales = new List<cliente_empresa>();

public static List<cliente_particular> col_clientes_particulares = new List<cliente_particular>();


public static void agregar_cliente(cliente_particular cliente)
{
foreach (cliente_particular e in col_clientes_particulares)
{
if (!cliente.get_cedula.Equals(e.get_cedula))
{
col_clientes_particular.Add(cliente);
}
else
{
throw new cliente_exepcion("Ya existe un empleado con la cedula especificada.");
}

}

}
}
}

aqui tengo la colecciond e clietnes particulares y empresas..

el hecho es que cuando llamo a la clase arrendadora para guardar un cliente. desde otra pagina mandando los datos. se vuelve a crear una nueva coleccion y siempre tengo la coleccion con un solo cliente en vez de agregarlos..
como lo soluciono esto??

please denme una mano en esto que me tranca todo
  #2 (permalink)  
Antiguo 18/08/2011, 16:27
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Respuesta: problema curioso con colecciones

Es una aplicacion de WebForms?

Debes hacer algo como:

1. Guardar en una variable de Session la lista de clientes

Código C#:
Ver original
  1. Session["ListaClientes"]  = col_clientes_particulares;

2. Cuando vas a agregar clientes no recibes la lista por los parametros, tomas la que esta en la session.

Código C#:
Ver original
  1. List<cliente_particular> miLista = (List<cliente_particular>)Session["ListaClientes"];

Realizas el proceso de validar si existe o no, si no existe la agregas a la lista, pero al finalizar debes volver a guardar la lista en la variable de Session

Código C#:
Ver original
  1. Session["ListaClientes"]  = col_clientes_particulares;

Esto para garantizar que llevas el objeto siempre actualizado Y la lista completa de clientes.

Ensaya y me comentas como te fue

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #3 (permalink)  
Antiguo 18/08/2011, 16:37
 
Fecha de Ingreso: agosto-2008
Mensajes: 367
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: problema curioso con colecciones

buenas noches jhonwilliams mil gracias por tu interes. te cuento.. de esta forma que me mencionas se hacerlo... lo curioso es que el profesor nos pide que investigemos porque se supone que existe una forma tal vez.. "mas correcta" de hacerlo en vez de utilizar variables de session... si tu sabes bienvenido sea.. de lo contrario. gracias por tu tiempo nuevamente
  #4 (permalink)  
Antiguo 18/08/2011, 18:57
 
Fecha de Ingreso: agosto-2008
Mensajes: 367
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: problema curioso con colecciones

respondiendo a lo que preguntas.. me quedo aclarar es una aplicacion de formulario de contenido web que enlazo en una master.. pero por otro lado esto lo estoy trabajando a nivel de clases.. el hecho es que me piden que no use variables de session me dijeron que hay otro modo. pero no lo encuentro en ingun lado. no se como se hace.. espero me puedan decir como se realiza.. gracias
  #5 (permalink)  
Antiguo 19/08/2011, 06:59
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Respuesta: problema curioso con colecciones

La verdad es que por el comportamiento de las aplicaciones Web no se me ocurre otra forma de hacer lo que estan pidiendo.

Espero que alguien te cuente y me cuente como se podria hacer, asi aprenderemos algo nuevo.

Saludos
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #6 (permalink)  
Antiguo 19/08/2011, 21:24
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Respuesta: problema curioso con colecciones

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.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.