2010-12-15 10 views
0

Ich habe mit einer Klasse zu tun, die etwa 2-3 Minuten dauert, um zu laden. Dieses Objekt befindet sich auf der Serverseite eines Silverlight/ASP/WCF-Projekts. Nach dem Laden enthält dieses Objekt eine Liste von 5 000 000 kleineren Objekten, die zur Berechnung verwendet werden.Großes Objekt im Silverlight/ASP.NET/WCF-Projekt?

Es macht den Benutzern nichts aus, 2 oder 3 Minuten zu warten, wenn die Anwendung geladen wird, aber sie wollen nicht jedes Mal neu warten, wenn sie etwas berechnen.

Ich möchte Ihre Eingabe über meine Optionen.

Option A: Behalten Sie das große Objekt in einer Sitzungsvariablen bei. Einige Leute behaupten, dass die Sitzungsvariable Gift ist ... besonders wenn sie mit einem großen Objekt verwendet wird. Ist es wirklich so schlimm?

Option B: Laden Sie das große Objekt, wenn der Server Start, dann einen Weg finden geteilt oder duplizieren dieses Objekt zwischen den Sitzungen

Option C (Dies funktionieren würde ... aber es ist nicht perfekt): Erstellen Sie ein zweites Objekt, das das Objekt 5 000 000 aus meiner zeitaufwendigen Klasse kopiert und dann an die Clientseite sendet. Diese Lösung ist jedoch nicht perfekt, da es sich bei diesen 5 000 000 Objekten um sensible Daten handelt, die auf der Client-Seite nicht "wie besehen" zugänglich sein sollten.

+0

Können Sie Hinweise geben, warum es sinnvoll ist, 5.000.000 Objekte auf den Client zu kopieren? Können Sie die Berechnung nicht auf dem Server durchführen, auf dem die Daten bereits existieren? –

+0

Das Ausführen der Berechnung auf der Serverseite ist das, was ich tun möchte ... deshalb würde ich lieber die Option A oder B verwenden. Option C ist eher eine Art Workaround. –

+0

die Daten, die Sie auf dem Server gesendet haben, können verschlüsselt werden. Aber wenn Sie Daten in Cookies speichern, müssen Sie auch Ihr Objekt serialisieren ... und Cookies haben begrenzten Speicherplatz. –

Antwort

1

Sie geben drei Methoden, die erste und zweite Methode, verwenden Sie den seision, ich denke, sie sind nicht die guten Ideen.

Ich schlage vor, wenn Sie den großen Speicher haben, können Sie die Klasse in statische Klasse ändern. weil die statische Klasse es nicht instanziiert.

oder Sie können den Cache zum Zwischenspeichern der Instanz verwenden.

+0

Ich mag die statische Klassenlösung wirklich! Und das beinhaltet nicht viele Änderungen in meiner Klasse (ändere es in statisch/mach es threadsicher) –