ASP.NET - Lista obiektów

0

Witam,

Chciałbym zasięgnąć waszej rady gdyż nie bardzo wiem jak zachowuje się następujący mechanizm w aplikacjach webowych.

Powiedzmy że ma mam stronę site2.aspx, gdy użytkownik na nią wchodzi ma możliwość wprowadzenia danych które muszę gdzieś przetrzymywać (przed zapisem do bazy).Rozwiązanie może być proste gdyż mógłbym stworzyć odpowiednia klasę i przechowywać listę obiektów klasy tworzonych na stronie dynamicznie i podczas zapisu do bazy pobrać dane z listy obiektów.

Jednak zastanawia mnie czy w aplikacjach webowych nie spowoduje to jakiegoś konfliktu gdy na stronę wejdzie wiecej użytkowników w tym samym czasie. Czy jeśli zdefiniuje na stronie site2.cs liste obiektów będzie ona unikalna dla każdego użytkownika który na nią wejdzie?

0

Tworzone obiekty (instancje zwykłych klas) są widoczne tylko podczas trwania tego pojedynczego żądania, wewnątrz którego są tworzone.
Jeżeli chcesz przechować jakieś dane dłużej niż pojedyncze zapytanie HTTP, wtedy masz do wyboru:
a) przechowywanie w formie ciasteczek
b) przechowywanie w sesji
c) przechowywanie w bazie danych
d) przechowywanie w kodzie HTML (<input type="hidden">)
e) przechowywanie w kodzie JavaScript.
Jeżeli dane te nie dotyczą konkretnego użytkownika, a całej aplikacji webowej, jest również wariant:
f) zmienna aplikacyjna, czy też singleton.

Każde rozwiązanie ma swoje wady i zalety. Więcej wyczytasz w google.

0

Dziękuje za odpowiedz, czyli jeśli mam listę obiektów danej klasy przechowująca np wiersze komponentu GridView (DataTable tworzona dynamicznie na stronie) to wymagane jest zastosowanie jednego z twoich rozwiązań? Zazwyczaj stosowałem sesje jeśli musiałem coś dłużej przetrzymać lub przekazać miedzy stronami jednak myślałem ze jak stworze sobie w kodzie zwykle List<Obiekt> lista = new List<Obiekt> () to będzie ona unikalna dla każdego użytkownika ale chyba nie ma tak prosto. W takim razie przetrzymam listę w sesji

0
kradzik napisał(a):

myślałem ze jak stworze sobie w kodzie zwykle List<Obiekt> lista = new List<Obiekt> () to będzie ona unikalna dla każdego użytkownika ale chyba nie ma tak prosto. W takim razie przetrzymam listę w sesji

Oczywiście, że będzie unikalna dla każdego użytkownika, a konkretnie dla każdego żądania, które przyjdzie do serwera. Oczywiście, o ile nie zrobisz jej statycznej. Ale, żeby móc mieć do niej dostęp w kolejnym żądaniu (czyli np. na następnej podstronie), to i tak musisz ją gdzieś przechować. Przy czym sesja nie jest najlepszym rozwiązaniem, lepszy do tego celu jest ViewState.

0

Lista potrzebna jest mi na jednej stronie wec nie musi byc statyczna ani przechowywana w sesji. Uzytkowik ma miec mozliwosc wprowadzenia przed zapisem do bazy wielu danych od 1..n dopiero po zaakceptowaniu dane beda zapisywane w bazie. Dziękuje za informacje teraz jestem spokojniejszy że bedzie to dzialać

1 użytkowników online, w tym zalogowanych: 0, gości: 1