Digamos que tengo una aplicación web implementada como un conjunto de páginas de asistente para editar un objeto complejo. Hasta que el usuario hace clic en el botón "Finalizar", el objeto no quede guardado en el sistema back-end (un requisito), así que mientras tanto tengo que mantener a toda la información sobre el objeto en una especie de estado de sesión .ASP.NET MVC: prácticas recomendadas para mantener el estado de la sesión en una aplicación tipo asistente
Además, algunas de las páginas del asistente deben mostrar combo y cuadros de lista con una cantidad potencialmente grande de elementos. Estos elementos se obtienen del sistema de fondo utilizando un servicio web.
Coincidentemente, el asistente permite al usuario saltar libremente de una página de asistente a otra (usando vínculos de pestaña en la parte superior del formulario), así que no es una simple cosa "siguiente, siguiente ... terminar".
Restricción adicional: la aplicación web se ejecuta en una granja de servidores web y el cliente está cansado de usar el estado de sesión del lado del servidor. En el mejor de los casos quieren mantener el tamaño del estado de la sesión mínima (que tenían problemas con esto en el pasado).
Así que, básicamente hay dos problemas aquí:
- Cómo/dónde guardar los datos introducidos por el usuario en el Asistente?
- Ya sea para almacenar en caché los elementos combinados/lista recibida desde el back-end y si es así, ¿dónde?
Opciones estoy considerando:
Almacenamiento del objeto en un WebForms-como ViewState (serializando en la página HTML). Esto también incluiría los elementos del cuadro combinado. Obviamente, podría haber un problema con las páginas HTML convertirse aplicación muy grande y por lo tanto Web será lenta.
Almacenamiento en del lado del servidor de estado de sesión, independientemente de los deseos del cliente y sin saber cómo se verá afectado el rendimiento hasta que se prueba en el conjunto de servidores Web real (tarde en el proyecto).
no puedo decidir entre los dos. ¿O hay otra alternativa?
Si baja la ruta de estado de la sesión, cree una carpeta de modelo personalizada y pase el objeto a los métodos de acción del controlador. – RichardOD
Eso es con lo que ahora estoy jugando. De hecho, estoy pensando en usar el mismo modelo que el modelo de vista y luego serializarlo en el código de vista. Y luego deserializarlo utilizando una carpeta modelo. ¿Tiene sentido? –