source

ASP.NET MVC 및 Ajax, 동시 요청?

factcode 2023. 3. 15. 19:57
반응형

ASP.NET MVC 및 Ajax, 동시 요청?

에이잭스!
「ASP」입니다.NET MVC는 AJAX를 사용합니다.
이전 요청이 완료될 때까지 요청이 완료되지 않는 것 같습니다.
개별적으로 반품 요청을 받으려면 어떻게 해야 하나요?
꼭 누군가가 답을 주길 바라는 것은 아니지만, 도움이 될 수 있는 좋은 튜토리얼이나 자료로 연결되는 링크가 있을 수 있습니다.합니다.

라클란 로슈의 답변에 대해 자세히 말씀드리겠습니다. 맞습니다.

ASP.NET 프레임워크는 세션 범위(글로벌 리소스)를 처리하는 요청을 "싱글 스레드"하여 어떤 요청이 다른 요구와 간섭하는 것을 방지합니다.WebForms에서 페이지 지시어를 사용하여 개별 페이지가 세션을 사용하지 않으므로 이와 같이 동기화할 필요가 없음을 지정할 수 있습니다.

문제는 ASP에 있습니다.NET MVC는 TempData를 구현하는 데 사용되므로 모든 요청은 세션을 사용합니다.Lachlan Roche가 지적한 것처럼 세션스테이트를 완전히 디세블로 할 수도 있고 케이스 바이 케이스로 처리할 수도 있습니다.

가능한 해결 방법은 백그라운드 스레드를 시작하여 장기 실행 중인 코드를 처리하는 것입니다. 그러면 초기 요청이 가능한 한 빨리 완료됩니다.

ASP.NET은 pages 요소의 enableSessionState Atribut을 통해 web.config에서 세션이 비활성화 또는 읽기 전용으로 설정되어 있지 않은 한 세션 단위로 요청을 시리얼 처리합니다.

이것은 페이지 설정이기 때문에 MVC 컨트롤러에는 영향을 주지 않고 시리얼 요구 처리 대상이 됩니다.

세션이 비활성화되거나 읽기 전용으로 설정된 경우에도 세션 데이터를 읽고 쓸 수 있습니다.시리얼 요구 처리를 일으키는 세션잠금에만 영향을 주는 것 같습니다.

<system.web>
    <pages enableSessionState="ReadOnly"/>
</system.web>

페이지에는 enableSessionState 속성을 설정할 수도 있지만 MVC 뷰와는 관련이 없습니다.

<%@ Page EnableSessionState="True" %>

ASP 릴리즈와 함께MVC 3에서는 컨트롤러에 Atribut을 추가하여 세션에 읽기 전용 마크를 붙일 수 있습니다.이것에 의해, 같은 클라이언트로부터 동시에 액션을 호출할 수 있습니다.

세션리스 컨트롤러 지원:

세션리스 컨트롤러는 ASP의 또 다른 신기능입니다.NET MVC 3세션리스 컨트롤러를 사용하면 컨트롤러의 세션 동작을 쉽게 제어할 수 있습니다.예를 들어 HomeController의 세션을 Disabled 또는 ReadOnly로 설정하여 단일 사용자에 대한 동시 요청 실행을 허용할 수 있습니다.자세한 내용은 ASP의 동시 요청을 참조하십시오.NET MVC 및 HowTo: MVC3의 세션리스 컨트롤러– 무엇과 그 이유

- 이 DZone 기사에서 인용합니다.

추가에 의해SessionState(SessionStateBehaviour.Disabled)실행 시 동일한 브라우저 세션에서 여러 액션을 동시에 호출할 수 있습니다.

유감스럽게도 액션이 호출되었을 때만 세션을 디세블로 하도록 액션을 마킹하는 방법은 없다고 생각합니다.따라서 세션이 필요한 액션이 있는 컨트롤러와 필요하지 않은 액션이 있는 컨트롤러가 있는 경우에는 다른 컨트롤러로 이동해야 합니다.

이후 버전의 ASP MVC에서는 SessionStateAttribute를 사용하여 개별 컨트롤러 클래스를 꾸밀 수 있습니다.

[System.Web.Mvc.SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class MyController : Controller 
{
}

.NET Framework v3.0 출시 이후 SessionStateAttribute에서 "SessionStateBehavior" 열거형을 사용할 수 있습니다.

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]
public class MyController : BaseController { }

동시 요청은 브라우저에 따라 달라집니다.Mozilla에서 AJax를 사용하고 IE 8을 사용하여 10개의 동시 요청을 실행한다고 가정하면 Mozilla는 응답을 기다린 후 두 번째 요청을 실행하는 스타일이 있습니다.IE * 에서는 서버에 대한 동시 요구가 한 번에 6개 정도 실행되기 때문입니다.

따라서 동시 요청은 브라우저 유형에 따라 달라집니다.

asp.net mvc에서 당신의 아약스 요구에 jQuery를 사용할 것을 제안합니다.저는 독점적으로 사용해 왔고, 매우 간단합니다.

튜토리얼에 대해서는, http://docs.jquery.com/Ajax 를 참조해 주세요.

플레이할 수 있는 옵션이 많이 있습니다.또, 파이어 버그를 다운로드하는 것도 추천합니다.그러면 요청의 기동이나 반환의 내용등을 비동기적으로 확인할 수 있습니다.

다른 쪽과 마찬가지로 AJAX 요청은 비동기식으로 큐잉되지 않으며 종료 시 모두 독립적으로 반환되므로 firebug로 상황을 관찰하면 디버거가 히트하기 전에 상황을 쉽게 알 수 있습니다.

언급URL : https://stackoverflow.com/questions/2326817/asp-net-mvc-and-ajax-concurrent-requests

반응형