ASP.NET에서 유지 관리 프로세스를 시작하는 모범 사례는 무엇입니까 [닫기]

StackOverflow https://stackoverflow.com/questions/45841

  •  09-06-2019
  •  | 
  •  

문제

ASP.NET 응용 프로그램의 경우 정기적으로(매일, 매시간 등) 유지 관리 프로세스를 실행해야 합니다.

서버의 예약된 작업과 같은 외부 프로세스에 의존하지 않고 이를 수행하는 가장 좋은 방법은 무엇입니까(서버에 대한 액세스 권한이 없다고 가정 - 공유 호스팅 환경).

도움이 되었습니까?

해결책

StackOverflow가 수행하는 방식은 다음과 같습니다.

private static CacheItemRemovedCallback OnCacheRemove = null;

protected void Application_Start(object sender, EventArgs e)
{
    AddTask("DoStuff", 60);
}

private void AddTask(string name, int seconds)
{
    OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);
    HttpRuntime.Cache.Insert(name, seconds, null,
        DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,
        CacheItemPriority.NotRemovable, OnCacheRemove);
}

public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)
{
    // do stuff here if it matches our taskname, like WebRequest
    // re-add our task so it recurs
    AddTask(k, Convert.ToInt32(v));
}

세부: http://blog.stackoverflow.com/2008/07/easy-Background-tasks-in-aspnet/

다른 팁

이를 수행하는 한 가지 방법은 예정된 시간에 수행할 필요는 없지만 "가끔" 정리해야 하는 경우 Global.asax Session_OnEnd()에서 임의의 세션을 생성하는 함수를 생성하는 것입니다. 1에서 100 사이의 숫자이고 숫자가 50이면 유지 관리 작업을 실행합니다.

물론 작업이 더 자주 발생하도록 "100"을 줄일 수 있습니다.

또한 'ASP.NET을 사용하여 예약된 작업을 실행하는 Windows 서비스 시뮬레이션'이라는 제목의 기사가 있습니다. http://www.codeproject.com/aspnet/ASPNETService.asp 만료되는 캐시를 사용하여 타이머를 시뮬레이션합니다.모든 호스팅 사이트에서 실행될 수 있다고 주장합니다.

마지막 방법을 사용하는 경우 이 기술에 대한 게시물의 설명을 읽어보세요.

실행중인 작업 길이에주의를 기울여야합니다.모든 새로운 작업은 새로운 작업자 스레드이며 관리되는 스레드 풀에서 스레드를 "빌려"한 제한된 수의 작업이 있습니다.

프레임 워크의 v3.5에서 시작하여 최대 스레드 수는 25에서 250으로 10 배 증가했습니다.그러나 이제 그들에게 로그 스타트 업이 있기 때문에 더 많은 스레드를 배치함에 따라 그들에게 더 큰 스레드가 생깁니다.관리 된 스레드 풀에서 사용 가능한 스레드가 부족한 경우 응답 시간이 지붕을 통과합니다.

당신이 정말로 여기에 쓰고있는 것은 메시징/큐잉 시스템입니다.

캐시 업데이트와 같은 작업을 수행하는 경우에는 새로운 작업을 시작하십시오.보조 HTTP 리소스 또는 일종의 집중적 인 데이터베이스 작업을 다운로드하는 것과 같은 작업을 수행하는 경우 Windows 서비스를 작성하고 매번 "물린"금액을 더 많이 제어 할 수있는 대기열을 사용하십시오.

캐시 솔루션은 간단한 경우에는 작동하지만 일정을 변경해야 하는 경우에는 운이 좋지 않을 것입니다.대신에 다음을 사용할 수 있습니다. Quartz.NET, 널리 사용되는 Java 프레임워크의 포트 석영, 이는 매우 유연합니다.

StackOverflow가 이를 수행하는 방식은 확실히 독특하지만 이를 모니터링하고 싶을 수도 있습니다. 질문 또한 관련이 있기 때문에.

이것은 외부 프로세스이며 얼마나 신뢰할 수 있는지는 모르겠지만 항상 켜져 있는 컴퓨터에서 비슷한 것을 설정할 수 있습니다. www.webcron.org.

기본적으로 요청한 일정에 따라 요청한 페이지를 방문하는 것입니다.

기본적으로 유지 관리 작업을 시작하는 정기적인 일정에 따라 페이지에 어떤 것이든 표시될 수 있습니다.

Jeff와 Joel은 최근 팟캐스트에서 다른 방법을 통해 유사한 작업을 수행하는 것에 대해서도 논의했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top