2011-07-01 1 views

답변

8

컨트롤러의 새 인스턴스가 MVC의 요청마다 만들어 지므로 여러 스레드가 서로 다른 스레드에서 실행될 수 있습니다.

직접 여러 인스턴스를 만들지 못하게하는 요소는 없습니다.

컨트롤러에는 상태가 없어야합니다.

+0

컨트롤러에 요청하는 사용자 인 경우 컨트롤러에 클래스 필드를 사용하면 안되는 다른 컨트롤러 인스턴스를 요청하게됩니다. –

+0

그것은 전통적인 asp.net 양식과 다르지 않습니다. 각 요청은 페이지의 새로운 인스턴스에서 작동합니다. 그들은 단지 당신에게서 그것을 숨기기 위해 열심히 일했습니다. – asawyer

+0

@Joshua - 그렇습니다. 어떤 필드도 사용하면 안됩니다. 무국적 코드 스케일이 훨씬 좋으며 에러가 발생하기 쉽습니다. –

2

Jakub가 말했듯이 기본 컨트롤러 팩토리를 사용하면 요청 당 하나의 컨트롤러 인스턴스가 생성됩니다.

항상 컨트롤러에 상태가 저장되지 않도록하십시오. 응용 프로그램이 웹 팜 또는 Windows Azure에서 실행되는 경우에도 동일한 시스템에서 후속 요청을 처리 할 수 ​​있다고 보장 할 수 없습니다.

대신 요청을 통해 보존해야하는 데이터를 세션 상태에 저장하거나 백 엔드 데이터 저장소를 사용하십시오.