2011-12-15 2 views
7

MVC .NET이 무국적이라고 들었습니다. MVC의 의미와 MVC가 무국적 인 이유는 무엇입니까?ASP.NET MVC는 상태를 유지합니까?

+3

아마도 ASP.NET 웹 페이지처럼 viewstate를 유지하지 않는다는 의미 였을 것입니다. 사실입니다. 이 선택은 HTTP의 무국적 특성에 더 잘 맞으며 왜 그것이 선택되었는지 가능성이 있습니다. 설계자 만이 보증인으로 말할 수 있지만, 나는 사실을 기뻐한다. – tvanfosson

+0

더 많은 정보 나 링크를 제공해 주시겠습니까? 지금 당장은 귀하의 질문이 의심스러운 "사실"에 대한 알려지지 않은 진술에 근거합니다. – 7hi4g0

답변

7

MVC는 HTTP이기 때문에 상태 비 저장입니다. 세션 시작 또는 종료시기를 나타내는 HTTP에는 아무것도 없습니다.

모든 웹 프레임 워크는 쿼리 문자열이나 FORM 게시물과 같은 쿠키 또는 요청/응답 기능을 사용하여이를 극복하려고 시도합니다.

+3

HTTP를 통한 모든 것이 무국적이라는 것을 의미합니까? WebForms도 HTTP에서 실행됩니다. –

+2

@Henk WebForms는 상태를 유지하기 위해 viewstate와 POST를 사용합니다. – Ryan

+2

@HenkHolterman : 예. HTTP는 상태 비 저장입니다. "세션"이 없습니다. WebForms는 타임 아웃을 사용하고 요청/응답 구조를 통해 정보를 전송함으로써 세션을 모방합니다. 사용자가 웹 브라우저/"세션"을 닫을 때 HTTP로 통보받지 않습니다. – jgauffin

5

MVC는 (전체적으로) 상태 비 저장되지 않습니다. 웹 프레임 워크가 없습니다.

이것은 MVC가 _VIEWSTATE 필드를 폐지한다는 사실을 의미한다고 생각합니다.

하지만 링크 또는 자세한 정보를 제공하십시오.

2

나는 모든 웹 통신이 SignalR [Async signaling library for ASP.NET to help build real-time, multi-user interactive web applications] 같은 새로운 기술의 일부를 제외하고 상태를 저장하지 말 것.

요청을 보내서 응답을받습니다. 즉, 웹 폼과 같이 ViewState를 사용하지 않는 것이 좋습니다.

5

웹은 상태가 저장되지 않으므로 http 맨 위에 만들어진 모든 것은 상태 비 저장입니다. 무국적자 란 각 요청/응답이 이전 요청을 전혀 모르는 원자 단위임을 의미합니다.

세션 및 응용 프로그램과 같은 요청 사이에 어떤 형태의 상태를 유지할 수있는 HTTP가있는 메커니즘이 있지만 일반적으로 이러한 기능은 가능한 한 적게 사용해야합니다.

Webforms는 ViewState 및 Postback을 도입하여 상태 환상을 만들려고합니다. 그러나 이것은 웹이 무국적이라는 사실을 변화시키지 않습니다.

8

상태 several means을 통해 ASP.NET (MVC와 웹폼)에서 관리된다

  • 세션
  • 쿠키
  • 양식 게시물
  • 응용 프로그램
  • 쿼리 문자열
  • 캐시
  • 컨텍스트

MVC는 ViewState를 제거합니다. 즉, 컨트롤 (텍스트 상자, 확인란 등)은 페이지를 게시 할 때마다 값이 손실됩니다. 수동으로 또는 다른 방법 (예 : 모델 바인딩)을 사용하여 다시 채워야합니다.

MVC는 실제로 상태 비 저장은 아니지만 ASP.NET에서 가장 일반적인 상태 유지 방법 중 하나 인 ViewState를 제거합니다.