데이터베이스를 쿼리하고 정보를 데이터베이스의 다른 테이블에 저장하는 유틸리티를 만들 계획입니다. 멀티 스레드 유틸리티이며 매일 5 분 또는 10 분마다 실행해야하며 하루에 3 번 정도 필요할 수 있습니다.
C # / DotNet 프로그래밍에서 이것을 달성하는 두 가지 옵션이 있습니다.
- 내부에 타이머 접근 방식을 가진 Windows 서비스를 만듭니다.
- 콘솔 프로그램과 Windows 작업 스케줄러를 사용하여 예약하십시오.
어느 것을 선호하고 왜?
데이터베이스를 쿼리하고 정보를 데이터베이스의 다른 테이블에 저장하는 유틸리티를 만들 계획입니다. 멀티 스레드 유틸리티이며 매일 5 분 또는 10 분마다 실행해야하며 하루에 3 번 정도 필요할 수 있습니다.
C # / DotNet 프로그래밍에서 이것을 달성하는 두 가지 옵션이 있습니다.
어느 것을 선호하고 왜?
답변:
이 주제와 관련하여 어제 동료 직원의 의견
"항상 이것에 대해 다양한 의견이있을 것입니다 ... 5 분마다 달리는 것이 필요하고 (달리는 시간이나 달리는 시간을 신경 쓰지 않는 경우) 저의 경험의 규칙은 매일 특정 시간에 무언가를 실행해야하고 오버랩이 발생하지 않을 것이라고 확신하는 경우 OS와 함께 제공된 스케줄러를 사용하십시오. 하이브리드가 필요한 경우 둘 다 사용하십시오. 다양한 경우에 대한 솔루션 또는 선반에서 무언가를 찾으십시오. (아마도 Quartz .Net) "
2005 년 Jon Galloway의 기사 "// TODONT : 예약 된 프로세스를 실행하기 위해 Windows 서비스 사용"을 잘 읽어보십시오. 토론은 오늘날까지도 계속되고 좋은 반론도 제공하기 때문에 의견도 읽어 보시기 바랍니다.
개인적으로 나는 이것에 대해 동료와 동의합니다. 가능한 한 간단하게 유지하십시오. 또한 Win2008 서버에 배포하는 경우 작업 스케줄러와 표준 스케줄러가 제공하는 모든 기능을 확인하십시오. 나를 위해, 킬러는 이벤트가 발생할 때 예약 된 작업을 시작하는 것이 었습니다.
Quartz.net
을 한 번 사용해 보지 않더라도 스케줄러를 만들 수있는 강력한 프레임 워크라고 말할 수 있으며 예약 된 작업 (데이터베이스 또는 XML 파일에 저장된)을 실행하는 사전 빌드 서비스를 제공합니다. )
http://quartznet.sourceforge.net/