Angenommen, ich habe eine Webanwendung, die wie eine Reihe von Assistentenseiten zur Bearbeitung eines komplexen Objekts implementiert ist. Bis der Benutzer auf die Schaltfläche "Fertigstellen" klickt, wird das Objekt nicht im Backend-System gespeichert (eine Anforderung), so dass ich in der Zwischenzeit die gesamten Informationen über das Objekt in einer Art Sitzungszustand halten muss.
Außerdem müssen einige der Assistentenseiten Kombinations- und Listenfelder mit einer potenziell großen Anzahl von Elementen anzeigen. Diese Elemente werden mithilfe eines Webdienstes aus dem Backend-System abgerufen.
Zufälligerweise erlaubt der Assistent dem Benutzer, von einer Seite des Assistenten zu einer anderen zu springen (mit Hilfe von Registerkarten am oberen Rand des Formulars), es ist also kein einfaches "weiter, weiter... fertig".
Zusätzliche Einschränkung: Die Webanwendung läuft auf einer Webfarm und der Kunde ist der Verwendung eines serverseitigen Sitzungsstatus überdrüssig. Im besten Fall soll die Größe des Sitzungsstatus minimal gehalten werden (in der Vergangenheit gab es damit Probleme).
Im Grunde gibt es hier also zwei Probleme:
- Wie/wo sollen die vom Benutzer im Assistenten eingegebenen Daten gespeichert werden?
- Sollen die vom Backend empfangenen Kombinations-/Listenelemente zwischengespeichert werden und wenn ja, wo?
Optionen, die ich in Betracht ziehe:
-
Speichern des Objekts in einer WebForms-ähnlichen AnsichtZustand (durch Serialisierung in die HTML-Seite). Dies würde auch die Elemente der Kombinationsfelder einschließen. Natürlich könnte es ein Problem geben, wenn die HTML-Seiten sehr groß werden und die Webanwendung dadurch langsam wird.
-
Die Speicherung in Server-seitiger Sitzungsstatus ohne Rücksicht auf die Wünsche des Kunden und ohne zu wissen, wie die Leistung beeinflusst wird, bis sie auf der tatsächlichen Webfarm getestet wird (spät im Projekt).
Ich kann mich nicht zwischen diesen beiden entscheiden. Oder gibt es eine andere Alternative?
2 Stimmen
Wenn Sie den Weg über den Sitzungsstatus gehen, erstellen Sie einen benutzerdefinierten Modellbinder und lassen Sie das Objekt an die Aktionsmethoden des Controllers übergeben.
0 Stimmen
Das ist es, womit ich jetzt spiele. In der Tat denke ich über die Verwendung des gleichen Modells als die Ansicht Modell und dann serialisieren Sie es in der Ansicht-Code. Und dann deserialize es zurück mit einem Modell Binder. Macht das Sinn?