2009-04-06 2 views
5

저는 Windows Server 2003 시스템에 앉아 매분마다 실행해야하는 약간의 코드가 있습니다.코드 작업을 반복적으로 실행하는 Windows 작업 스케줄러는 얼마나 신뢰할 수 있습니까?

어떻게 처리할까요? 콘솔 서비스로 디자인하고 작업 스케줄러에 순간적으로 충돌시키는 것이 좋습니까? (그것도 가능합니까?) 그냥 그것을 빨아해야하고 Windows 서비스로 작성해야합니까?

답변

12

매분마다 실행해야하므로 Windows 서비스를 작성하는 것이 좋습니다. 그다지 복잡하지는 않습니다. 전에 그렇게 해본 적이 없다면, 그것이 어떻게 이루어 졌는지를 배우는 것이 좋을 것입니다.

매분 예약 된 작업을 호출하는 것이 좋습니다.

+0

작업 스케줄러가 매분마다 실행되는 경우 왜 Windows 서비스를 권장합니까? 당신은 그 선택을 위해 무엇이 가야합니까? –

4

나는 그것을 빨아서 Windows 서비스로 작성합니다. 나는 예약 된 작업이 매우 안정적이라는 것을 발견하지 못했고, 실행되지 않을 때 나는 그것이 왜 없었는지를 쉽게 발견 할 수있는 방법을 찾지 못했습니다.

+2

이벤트 로그에 표시되지 않은 이유가 기록되어 있어야합니다. –

+1

@jeffamaphone "should"가 키워드입니다. 나는 또한 예약 된 작업이 신뢰할 수 없다는 것을 발견했으며 종종 이벤트 로그에서 실행 시도의 흔적을 남기지 않았습니다. –

2

매분마다 실행해야 할 경우 Windows 서비스로 빌드합니다. 나는 스케쥴러를 매일 작업보다 덜 사용하지 않을 것이다.

2

나는 그것이 무엇을하고 있었는지에 달려 있다고 말할 것입니다. 그러나 일반적으로 나는 가장 적은 층을 갖는 것을 선호합니다. 콘솔 서비스로 작성하고 작업 스케줄러를 사용하면 앞으로도 계속 유지할 수있는 두 가지 장소가 있습니다.

Windows 서비스로 작성하는 경우 문제가 발생한 경우를 대비하여 확인할 장소가 하나뿐입니다.

0

나는 동의한다. 그것은 콘솔 실행 파일조차도 만들고 매분마다 실행되도록 스케줄하는 노력의 낭비이다. 나는 Quartz.Net 같은 것을 탐험해볼 것을 제안 할 것이다. 그렇게하면 간단한 작업을 만들어 매분마다 실행되도록 예약 할 수 있습니다.

+1

매분마다 작업을 예약한다는 아이디어에 반대하는 것 같지만 Quartz.Net을 통해 아이디어를 얻으려는 것입니까? 내가 놓친 게 있니? –

1

유일한 다른 점은 작업에 일종의 데이터베이스 상호 작용이 포함된다면 데이터베이스에서 제공하는 통합/예약 서비스를 살펴 보는 것입니다.

예를 들어, SQL Server 관련 서비스에 대한 SSIS 패키지를 만드는 것이 잔인한 것처럼 보일 수 있지만 환경과 잘 통합 될 수 있으며 자체 로깅/오류 검사 메커니즘이 이미 마련되어 있습니다.

3

Windows 예약 된 작업은 우리의 목적에 대해 상당히 안정적이었으며 설치가 쉽고 고급 복구 기능을 제공하기 때문에 Windows 서비스를 통해 거의 모든 경우에 유리합니다. 작성된 코드의 일부가 잠겨 있지 않거나 반복되지 않는 코드 조각에 잠겨 있거나 반복되는 경우 Windows 서비스의 특성상 항상 문제가 될 수 있습니다. 우리는 일반적으로 코드를 이

Init(); 
Run(); 
CleanUp(); 

와 유사한 방식으로 그런 다음 예약 된 작업의 일환으로 우리는 프로세스를 실행할 수있는 기간에 시간 제한을두고 더 오래 실행하는 경우이 프로세스를 종료했다. 예약 된 작업에 문제가있는 코드가 있으면이를 죽이고 다음 분에 프로세스가 시작됩니다.

2

예약 된 서비스 도움말을 검색하는 동안 나는 매우 좋은 article by Jon Galloway을 발견했습니다.

Windows 서비스가 예약 된 작업에 사용되는 경우 여러 가지 단점이 있습니다. 나는 그것에 동의했다. 나는 Task Scheduled라는 간단한 구현을 사용하도록 제안 할 것이다. detailed information of implementing the task scheduler을 참조하십시오. 이 정보가 구현 방법을 마무리하는 데 도움이되기를 바랍니다.

관련 문제