2011-01-12 4 views
0

Windows 서비스를 만들고 싶습니다. 내 ASP.NET 응용 프로그램의 사용자가 시간이 많이 걸리는 작업을 수행 할 때마다 IIS는 토큰 (작업의 임시 이름)을 반환하는 서비스에 작업을 제공하고 백그라운드에서 서비스는 작업을 수행합니다 . 언제든지 대기열에 대기 중이거나, 처리 중이거나, 완료된 사용자의 작업 상태를 볼 수 있습니다. 이 서비스는 고정 된 수의 작업을 병렬로 수행하고 다음 들어오는 작업을위한 대기열을 유지합니다. 또한 "깨끗한 고아 파일"또는 "비활성 사용자의 데이터 보관"과 같은 특별한 ADMIn 작업을 추가 할 수있는 시스템 관리자 용 WinForms 응용 프로그램이 있습니다.ASP.NET에서 장기 실행 작업을 처리하기위한 별도의 서비스

나를 점프 할 수있는 뭔가를 전체 개념으로 가르쳐 주시겠습니까? 저는 Windows 서비스를 위해 google을 할 수 있다는 것을 알고 있습니다. 처음부터 직접 할 수는 있지만 시간은 Essence의 것입니다. 이미 그곳에있는 어떤 것의 블록을 만들 수 있습니다.

답변

0

간단한 생각 :

데이터베이스 테이블을 사용하여 보류중인 작업을 만들 수 있습니다.
필요한 모든 정보가있는 간단한 테이블 (또는 여러 개 ...).
예를 들어 ID_Task/Name/XML_Object (일련 번호가 있고 정보가 들어 있음)/상태
사용자가 작업을 추가하려는 경우 테이블에 행이 있습니다.

XML_Object에는 예를 들어 수행 할 다음 단계가 포함됩니다.

그런 다음 5 분 또는 10 분마다 Windows 서비스를 확인하고 테이블을 확인하십시오.
상태가 "보류 중"인 작업이 있으면 백그라운드 작업자로 작업을 시작하고 계속 관찰합니다.
그리고 일부 단계에서 상태 '작업을 업데이트합니다.
각 단계에서 기대하는 상태가 아닌지 확인할 수 있습니다.

+0

답변을 주셔서 감사합니다. 그러나 작업 대기열을 처리하고 예외 처리 등을 로깅하는 준비된 프레임 워크에 대해 더 많은 것을 찾고있었습니다. 그래서 엔진을 작성하는 대신 작업의 비즈니스 로직에 집중할 수 있습니다. 먼저. – lstanczyk

+0

로깅 예외 처리 (및 기타 사항)에 대해서는 [Entreprise Library] (http://msdn.microsoft.com/en-us/library/ff650810.aspx)를 살펴보십시오. "작업"부분은 [프레임 워크 클래스] (http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.aspx) 또는 [코드 프로젝트] (http : // www .codeproject.com/KB/threads/MultiThreaded_TaskQueue.aspx). 하지만 [Workflow Fundation] (http://www.dotnetspark.com/kb/299-windows-workflow-foundation-wwf-interview.aspx)을 살펴 보시기 바랍니다. – kerrubin

0

저는 백그라운드 작업을 실행/대기시키기 위해 노력해온 서비스에 대한 의견을 듣고 싶습니다. http://sharphooks.net

인터페이스의 단일 메소드 구현, 웹 UI를 통한 파일 업로드, 그리고 HTTP POST를 통한 새로운 작업 게시가 포함됩니다.

관련 문제