문제

별도의 웹/데스크톱 애플리케이션 유무에 관계없이 웹 애플리케이션에 대한 예약된 작업을 생성하는 다양한 접근 방식은 무엇입니까?

도움이 되었습니까?

해결책

Microsoft 플랫폼에 관해 이야기한다면 저는 항상 이러한 일괄 작업을 처리하기 위해 별도의 Windows 서비스를 개발할 것입니다.

불쾌한 코드 중복을 피하기 위해 웹 애플리케이션에서 사용되는 것과 동일한 어셈블리를 항상 참조할 수 있습니다.

다른 팁

Jeff는 Stack Overflow 블로그에서 이에 대해 논의했습니다.http://blog.stackoverflow.com/2008/07/easy-Background-tasks-in-aspnet/

기본적으로 Jeff는 CacheItemRemovedCallback을 특정 작업 호출을 위한 타이머로 사용할 것을 제안했습니다.

저는 개인적으로 자동화된 작업이 서비스, Windows 예약 작업 또는 SQL Server의 작업으로 처리되어야 한다고 믿습니다.

Linux에서는 cron을 체크아웃하세요.

내 생각에는 Stack Overflow 자체가 ApplicationCache 만료를 사용하여 간격을 두고 백그라운드 코드를 실행하는 것 같습니다.

Linux 호스트를 사용하고 있다면 거의 확실하게 다음을 사용하게 될 것입니다. 크론.

Linux에서는 cron 작업을 사용할 수 있습니다(http://www.unixgeeks.org/security/newbie/unix/cron-1.html) 작업을 예약합니다.

HTTP GET 요청을 생성하려면 wget 또는 컬과 같은 URL 가져오기 도구를 사용하세요.

사용자/비밀번호를 모르면 누구도 작업을 실행할 수 없도록 인증을 통해 URL을 보호하세요.

저는 Windows에 내장된 작업 스케줄러가 이 작업에 권장되는 도구라고 생각합니다.이를 위해서는 외부 응용 프로그램이 필요합니다.

이것은 당신이 찾고 있는 것일 수도 있고 아닐 수도 있지만 이 기사를 읽어 보십시오.예약된 작업을 실행하기 위해 ASP.NET을 사용하여 Windows 서비스 시뮬레이션".내 생각에는 StackOverflow가 이 방법을 사용할 수도 있고 적어도 이 방법을 사용하는 것에 대해 이야기가 나왔던 것 같습니다.

제가 일하는 곳에서 사용한 매우 간단한 방법은 다음과 같습니다.

  1. 작업을 실행하는 웹 서비스/웹 메서드를 설정합니다.원하는 경우 이 웹 서비스는 사용자 이름/패스로 보호될 수 있습니다.
  2. 이 웹 서비스를 호출하는 콘솔 앱을 만듭니다.원하는 경우 콘솔 앱에서 매개변수를 보내거나 콘솔 출력 또는 외부 로깅에 대한 일종의 측정항목을 다시 가져오도록 할 수 있습니다.
  3. 선택한 작업 스케줄러에서 이 실행 파일을 예약합니다.

예쁘지는 않지만 간단하고 안정적입니다.콘솔 앱은 기본적으로 앱에 작업을 수행하라고 알리는 하트비트이므로 애플리케이션과 라이브러리를 공유할 필요가 없습니다.이 방법론의 또 다른 장점은 필요할 때 수동으로 시작하는 것이 매우 간단하다는 것입니다.

HTTP GET 요청을 생성하려면 wget 또는 컬과 같은 URL 가져오기 도구를 사용하세요.

사용자/비밀번호를 모르면 누구도 작업을 실행할 수 없도록 인증을 통해 URL을 보호하세요.

예를 들어 cron에게 PHP 스크립트를 직접 실행하도록 지시할 수도 있습니다.그리고 다른 사람이 PHP 파일에 액세스하지 못하도록 PHP 파일에 대한 권한을 설정할 수 있습니다. 또는 더 나은 방법은 웹 액세스 가능한 디렉토리에 이러한 유틸리티 스크립트를 두지 않는 것입니다.

Java 및 Spring - 석영을 사용합니다.아주 훌륭하고 믿음직스럽습니다 -- http://static.springframework.org/spring/docs/1.2.x/reference/scheduling.html

cron(Linux)이나 Task Scheduler(Windows)를 사용하는 것보다 더 쉬운 방법이 있다고 생각합니다.다음을 사용하여 이를 웹앱에 구축할 수 있습니다.(a) 석영 스케줄러,

또는 다른 타사 라이브러리를 애플리케이션에 통합하고 싶지 않은 경우:(b) 작업을 실행하기 위해 표준 Java 'java.util.Timer' 클래스를 사용하는 시작 시 스레드를 생성합니다.

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