2009-04-02 6 views
0

다른 컴퓨터에서 수행해야하는 작업이 필요한 ASP.Net 응용 프로그램이 있습니다. 이렇게하려면 두 컴퓨터에서 모두 볼 수있는 큐에 메시지를 남기고 있습니다. 작업이 완료되면 두 번째 대기열에 메시지가 남습니다.ASP.Net 응용 프로그램에 대한 폴링 전략은 무엇입니까?

두 번째 큐를 정기적으로 검사하여 작업이 완료되었는지 확인하려면 ASP.Net 응용 프로그램이 필요합니다.

그런 루프에 가장 적합한 곳은 어디입니까? Global.asax?

어딘가에 간격을두고 호출 된 함수를 얻을 수 있다는 것을 기억합니다. 그게 적합할까요?

답변

1

asp.net에 대한 정기적 인 작업을 달성하기 위해, 나는이 허용되는 접근 방법을 발견했습니다 : while 루프에서, Global.asax에에 위해 Application_Start 동안

  1. 스폰 스레드를 (1) 작업을 수행 (2) 일정 간격 동안 스레드를 대기 상태로 만듭니다.
  2. Application_Start에서 asp.net 캐시에 더미 항목을 삽입하고 특정 간격으로 만료되며 해당 캐시 항목에 만료시 콜백 콜백을 제공합니다. 콜백에서 작업을 수행하고 캐시 항목을 동일한 방식으로 다시 삽입 할 수 있습니다.

두 가지 방법 모두 오류가 발생해도 스레드가 계속 작동하는지 확인해야합니다. SessionStart 및 BeginRequest에 복원 코드를 배치하여 스레드 또는 캐시 항목이 있는지 확인하고 문제가 발생한 경우이를 갱신 할 수 있습니다.

1

이 작업은 정기적으로 수행되며 다른 프로세스가 항목을 큐에 저장한다고 가정합니다.

그런 경우 Global.asax에 응용 프로그램 시작시 단순히 대기열을 모니터하는 별도의 스레드를 만드는 무언가를 넣을 수 있습니다. 타이머를 사용하면 해당 스레드가 X 초 동안 휴면 상태가되고 결과가 있는지 확인할 수 있습니다 .

관련 문제