2013-10-16 2 views
0

나는 느린 코드를 실행하고 잊어 버릴 ASP.WEB 웹 API 컨트롤러가 있습니다. 그렇게하는 좋은 방법은 무엇입니까? 즉 컨트롤러가 HTML 응답을 브라우저에 반환하고 느린 코드는 계속 실행되도록합니다.웹 Api 요청에서 백그라운드 작업 시작

트레드 풀에서 작업자 스레드를 가져 와서 컨트롤러로 만든 복잡한 객체를 전달하는 것이 좋은가요? 또는 작업을 수행하기 위해 별도의 Windows 서비스를 작성해야합니까?

+0

작업 완료 후 응답해야합니까? – Ngm

답변

2

해결 방법은 구체적인 상황이나 작업 부하에 따라 다릅니다. 요청을 받으면 확실하게 새로운 작업 Factory.StartNew을 시작할 수 있습니다. 이 기술적 인 문제는 없습니다. 생각해 볼 점 :

  1. 데이터를 고객에게 반환해야합니까?
  2. 이 작업은 웹 서버 리소스를 사용하므로 이러한 작업이 매우 오랜 시간이 걸리고 많은 트래픽이 발생하면 고객이 처리를 시작하기 위해 대기하고있는 상황에 처할 수 있습니다. 이 상황에서는 Windows 서비스가있는 백엔드 서버가 훨씬 더 좋은 아이디어라고 생각합니다.
  3. 위의 모든 작업은 IIS 재설정 대상입니다. 그들은 백그라운드 작업을 처리하는 동안 사망 할 수 있습니다.