2011-12-15 13 views
7

He oído que MVC .NET no tiene estado. ¿Cuáles son las implicaciones de esto y por qué MVC es apátrida?¿ASP.NET MVC es sin estado?

+3

Quizás lo que se quiso decir es que no mantiene viewstate, como las páginas web ASP.NET. Eso es verdad. Esa elección encaja mejor con la naturaleza sin estado de HTTP y es probable por qué fue elegida. Solo los diseñadores pueden decir con certeza, aunque yo, por mi parte, me regocijo en el hecho. – tvanfosson

+0

¿Puede proporcionar más información o enlaces? Tal como está ahora, su pregunta se basa en una declaración desconocida de un "hecho" dudoso. – 7hi4g0

Respuesta

7

MVC no tiene estado porque HTTP es. No hay nada en HTTP que indique cuándo comienza o termina una sesión.

Cada estructura web trata de superar esto mediante el uso de una cookie o las funciones de Solicitud/Respuesta, como la cadena de consulta o la publicación FORM.

+3

¿Quiere decir que todo a través de HTTP es sin estado? WebForms se ejecuta en HTTP también. –

+2

@Henk WebForms usa viewstate y POST para mantener el estado. – Ryan

+2

@HenkHolterman: Sí. HTTP es sin estado. No hay "sesión" WebForms imita una sesión al usar un tiempo de espera y transportar su información a través de la estructura de solicitud/respuesta. Nunca recibirá una notificación en HTTP cuando un usuario cierre su navegador web/"sesión". – jgauffin

5

MVC no es (totalmente) apátrida. No hay un marco web.

Creo que esto se refiere al hecho de que MVC suprime el campo _VIEWSTATE.

Pero proporcione un enlace o más información.

2

, diría que todas las comunicaciones Web no tiene estado, excepto algunas de las nuevas tecnologías como SignalR [Async signaling library for ASP.NET to help build real-time, multi-user interactive web applications] .

Realiza una solicitud y obtienes una respuesta, es decir, tal vez lo que estás pensando no es utilizar ViewState como en los formularios web.

5

la web no tiene estado, por lo tanto, cualquier elemento creado sobre http es apátrida. por apátrida quiero decir que cada solicitud/respuesta es una unidad atómica sin conocimiento de ninguna solicitud previa.

hay mecanismos con http que le permiten mantener algún tipo de estado entre las solicitudes como la Sesión y la Aplicación, pero en general, se deben utilizar lo menos posible.

Webforms intenta crear la ilusión de estado al presentar ViewState y Postback. Pero esto no cambia el hecho de que la web es apátrida.

8

Estado es administrado en ASP.NET (MVC y WebForms) a través de several means:

  • Sesión
  • Galletas
  • mensajes Forma
  • aplicación
  • cadena de consulta
  • caché
  • Contexto

MVC elimina ViewState, lo que significa que los controles (cuadros de texto, casillas de verificación, etc.) pierden sus valores cada vez que se vuelve a publicar una página. Necesitas repoblarlos manualmente o por otros medios (por ejemplo, el enlace del modelo).

MVC no es verdaderamente sin estado, pero elimina una de las formas más comunes de estado persistente en ASP.NET: el ViewState.

Cuestiones relacionadas