Laden...

größere datenmengen innerhalb einer Seite vorhalten

Erstellt von Tosek vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.553 Views
T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
größere datenmengen innerhalb einer Seite vorhalten

hallo,

ich habe eine ASP.net (2.0) Seite und lege dort im Page_Load ein List mit selbstdefinierten Objekten an.
Insgesamt sind relativ viele daten in diesem Array gespeichert.
Diese daten zeige ich auch auf der ASP.Net seite (zumindest teilweise) an.

Jetzt möchte ich nach einem Postback weiterhin diese daten zur Verfügung haben. Wie kann ich das hinbekommen? (Ich kann leider nicht jedesmal das Array neu aufbauen, da dies viel zu viel Zeit beanspruchen würde).

(Alles als Sessionvariable in eine Session packen? Oder was wäre sonst geeignet?)

Gruß
Tosek

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

W
799 Beiträge seit 2004
vor 17 Jahren

Also prinzipiell ist es sinnvoll, immer nur so viele Daten zu holen bzw. vorzuhalten, wie du auch darstellst, alles andere macht wenig Sinn. Und das dürfte nicht so lange dauern, als das der User die paar Millisekunden nicht warten kann.

Erste Frage: wo holst du die Daten her? Wie viel zeigst du an? Wie zeigst du sie an?

T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
.

Also:

ich habe einen Dienst geschrieben, der Daten als Ergebnis einer Suche aus unterschiedlichsten Quellen holen kann (quasi als Art Information-Crawler). Diese Quellen können Filesysteme, Archivsysteme ERP Systeme (SAP R/3) etc. sein. Das Ganze wird in einer einzigen Ergebnisliste zusammengeführt und per GridView angezeigt.

Wenn nun der GridView paged, will der Gridview natürlich auf weitere daten aus der gebundenen Quelle zugreifen, die aber im Postback einfach nicht mehr da ist.

Wenn ich die Abfrage bei jedem Postback neu starte, dann habe ich 2 Probleme:

  1. Zum einen erzeugt das tierisch Last im gesammten Netzwerk (und die Liste war ja schon einmal vollständig da). Ich brauch Sie auch ganz, da der Anwender sortieren können soll.

  2. Die Liste gann sich in der zwischenzeit geändert haben (neue Einträge können hinzugekommen sein). Ich will aber nur den Stand des Abfragezeitpunkts darstellen.

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

W
799 Beiträge seit 2004
vor 17 Jahren

Da bin ich mir selbst nicht wirklich sicher, was der beste Weg ist - das müsste man durchprobieren.

Was mir einfällt:

a) Viewstate
b) Session
c) Datenbank

Ich würde fast letzteres bevorzugen.

T
Tosek Themenstarter:in
38 Beiträge seit 2006
vor 17 Jahren
.

Hallo,

Viewstate wäre wahrscheinlich nicht sehr gut geeignet.
Entweder Session oder DB.

DB als Zwischenspeicher wäre denkbar. Dann müsste ich in einer Tabelle alle Werte zusammen mit der Session-ID(????) speichern und dann immer darauf zugreifen, oder?

Aber ich müsste ja zu irgendeinem Zeitpunkt die Datenbank wieder leerräumen. (Sonst läuft Sie irgendwann voll) Welche Stelle würde sich da anbieten?

There are 10 diffent types of people in this world: Those who understand binary and those who don't....

1.130 Beiträge seit 2005
vor 17 Jahren

Hallo Tosek,

du könntest auch den Cache verwenden:
http://aspnet.4guysfromrolla.com/articles/100902-1.aspx

W
799 Beiträge seit 2004
vor 17 Jahren

Original von Tosek
Hallo,

Viewstate wäre wahrscheinlich nicht sehr gut geeignet.
Entweder Session oder DB.

DB als Zwischenspeicher wäre denkbar. Dann müsste ich in einer Tabelle alle Werte zusammen mit der Session-ID(????) speichern und dann immer darauf zugreifen, oder?

Aber ich müsste ja zu irgendeinem Zeitpunkt die Datenbank wieder leerräumen. (Sonst läuft Sie irgendwann voll) Welche Stelle würde sich da anbieten?

Ich würde das nicht benutzer- sondern abfragebezogen speichern, d.h. als Key die Such-Expression. Leer räumen kannst du das z.B. alle paar Tage durch ein simples Script, was du per Scheduler anstößt.

Der von Kai vorgeschlagene Cache ist eine Alternative, bietet sich imho aber aufgrund der hohen Datenmengen nicht unbedingt an.

Edit: evtl. kannst du das Aufräumen intelligenter gestalten, in dem du häufige Suchanfragen rausfilterst und deren Ergebnisse nicht löchst oder gar automatisiert im Voraus, z.B. nachts, aktualisierst - d.h. für diese Suchen automatisiert suchst, bevor der Benutzer überhaupt tätig wird.