2012-06-06 4 views
1

Visual Studio 웹 익스프레스에 웹 응용 프로그램이 있고 SQL Server Express에 DB가 있습니다. 오후 5:00에 insert 100 records를 수행하고 싶습니다. daily.web 응용 프로그램은 asp.net MVC 및 vb.net에서 개발되었습니다. IIS 7.5가 설치된 서버 컴퓨터에 배포됩니다. 어떤 논리를 따라야합니까?웹 응용 프로그램에서 스케줄러 유틸리티를 실행하는 방법

답변

1

을 (호스팅 제공 업체가 허용하는 경우) 그것은 지금까지 좋은 :)

나는 열거 한 Ta 할 SKS이 같은 초에 다시 시작하는 작업에 대한 시간과이 시간 :

public enum ScheduledTasks 
{ 
    CleanGameRequests = 120, 
    AnotherTask = 30, 
} 

그럼 난 내 응용 프로그램이 실행되는 동안 작업을 실행할 수 있도록하기 위해 Application_Start 내 모든 작업을 시작

protected void Application_Start() 
    { 
     ............... 
     // Add the tasks on Application starts 
     AddTask(ScheduledTasks.CleanGameRequests); 
     AddTask(ScheduledTasks.AnotherTask); 
    } 

확인 지금 여기 AddTask 방법에

난 그냥 캐시 및 작업 시간과 호출이 작업의 적절한 방법에 따라 대한 AbsoluteExpiration을 설정하는 새로운 빈 항목을 추가 :) 트릭입니다.

private static CacheItemRemovedCallback _onCacheRemove; 
    private void AddTask(ScheduledTasks task) 
    { 
     // Add my `CacheItemRemoved` method to be called on cache removed 
     _onCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved); 
     // Add new key to the cache with the name of this task 
     // and Expiration time acccordin to the task 
     HttpRuntime.Cache.Insert(task.ToString(), (int)task, null, 
      DateTime.Now.AddSeconds((int)task), Cache.NoSlidingExpiration, 
      CacheItemPriority.NotRemovable, _onCacheRemove); 
    } 

그럼 내가 할했습니다 모두가 CacheItemRemoved 방법에서 각 작업에 적합한 방법을 선택하는 것입니다 :

내가 여기에 분명하지만, 아이디어를 설명 할 수없는 사실 내

코드입니다

public void CacheItemRemoved(string key, object time, CacheItemRemovedReason r) 
    { 
     //Get Task enum object 
     var task = (ScheduledTasks)Enum.Parse(typeof(ScheduledTasks), key); 
     // Select the suitable method to depending on the Task Enum object 
     switch (task) 
     { 
      case ScheduledTasks.CleanGameRequests: 
       GameRequest.CleanUp(); 
       break; 
      case ScheduledTasks.AnotherTask: 
       Service.AnotherTask(); 
       break; 
     } 
     // Don't forget to re-add the task to the cache to do it again and again 
     AddTask(task); 
    } 

마지막으로 남은 것은 오후 5 시가 맞는지 확인하는 것이고,이 수표를 서비스 클래스에 넣으라고 조언합니다.

희망이 도움이되었습니다.

0

Sql server express 버전을 사용하고 있으므로 SQL에서 예약 된 작업을 만들 수 없습니다. 하지만 다른 옵션을 시도해 볼 수 있습니다.

  1. Quartz.Net

  2. Service Broker approach

  3. Windows 서비스 내가이 방법을 사용하고 나를 위해

+0

괜찮 았던 옵션입니다. 하지만 논리적으로 말하자면, 일단 서버 컴퓨터에서 웹 응용 프로그램을 호스팅/배포하고 유틸리티 메서드를 작성하고 시스템 시간에 호출한다고 가정합니다. 오후 5시 –

+0

Quartz.Net을 통해이 작업을 수행 할 수 있습니다. 모든 코드를 작성할 수있는 작업 클래스 및 메소드를 작성합니다. 그것은 또한 계획 한 시간 및 더 많은 것을 통제하는 다양한 선택권이있다. – VJAI

+0

고마워 마크, 나는 그것이 최선의 방법이라고 생각하지만, 정확한 오후 5시에 일어난 간단한 자동 기능 호출. 웹 응용 프로그램은 db가있는 서버 자체에서 호스팅됩니다. –

관련 문제