2010-05-12 9 views
3

난 뒤에 코드에서 긴 실행 (리소스를 많이 사용) 과정을 가지고 있으며, 최종 출력 (PDF 변환 도구 이미지)장기 실행 프로세스는

그것은을 PDF 파일입니다 웹 응용 프로그램이 잘 실행됩니다. 전용 서버를 사용하고 있기 때문에 현재 자원과 관련하여 전혀 문제가되지 않습니다.

그러나 한 번에 20 명 이상의 사용자가 처리하는 경우 시스템이 리소스 제한에 도달하게됩니다.

나는 사용자가 이메일을 입력하고 프로세스가 백그라운드에서 대기하고 있고 결과가 1st in first out 방법으로 이메일로 전송 된 온라인 서비스를 보았습니다.

누군가가 C#을 사용하여 asp.net 응용 프로그램에서 이런 종류의 논리를 구현하는 방법에 대한 시작을 줄 수 있습니까?

답변

5

이러한 시스템은 서버에서 실행되는 Windows 서비스로 구성됩니다. asp.net 페이지가 수행하는 유일한 작업은 관련 데이터와 함께 요청을 데이터베이스에 제출하는 것입니다. 그런 다음 Windows 서비스는이 테이블을 모니터링하고 모든 새 요청을 처리합니다.

0

동시 요청 수를 줄이려고합니다. 별도의 응용 프로그램을 만들어 변환 프로세스를 처리 할 수 ​​있습니다. 정기적 인 간격으로 실행되는 Windows 서비스 또는 예약 된 작업.

  1. 요청을 데이터베이스 테이블 또는 MSMQ에 대한 큐에 기록하십시오. 프로그램에 문제가 생길 경우를 대비하여 일부 대기열에 기록하는 것이 좋습니다. 프로세스를 비동기 적으로 처리 할 것이므로 사용자는 파일을 수신하지 않고 무언가가 잘못되었는지 결코 알 수 없습니다. 이렇게하면 무언가가 발생하면 프로세스를 다시 시작하고 처리를 계속할 수 있습니다.
  2. 외부 응용 프로그램에서 큐를 모니터링하고 요청을 한 번에 하나씩 처리하게하십시오.
  3. 프로세스가 완료되면 사용자에게 프로세스가 완료되었음을 알리고 웹 사이트에서 다운로드하거나 사용자에게 pdf로 전자 메일을 보낼 수 있습니다.

변환을 처리하는 데있어 외부 프로그램을 사용하면 프로그램을 여러 컴퓨터에서로드하여 요청을 더 빠르게 처리 할 수 ​​있으며 사용 된 웹/앱 서버의 속도를 늦출 필요가 없습니다. 웹 사이트를 처리 할 수 ​​있습니다. 클라우스가 바르게 지적

+0

답장을 보내 주셔서 감사합니다. 잘못 이해하면 실례합니다. 1. 나는 이미지 위치와 이메일 주소를 입력 받아 pdf 파일의 위치를 ​​출력하는 윈 서비스를 만든다. 2. 웹 인터페이스에서 요청을 제출하면 이미지 위치와 전자 메일 주소를 데이터베이스에 기록합니다. 완성 된 것인지 말하지도 않은 열이라고 말할 수 있습니다. 두 번째 요령을하는 방법을 모르겠다. 데이터베이스를 모니터링하는 Windows 서비스는 어떻게합니까? 나를 튜토리얼로 안내하거나 발췌 문장을 줄 수 있습니까? 미리 감사드립니다. 프라 사드. – pessi

0

, 우리는
부록 그의 대답에 Windows 서비스를 사용하여 구현했습니다 :
(내가) 여러 작업에 장기 실행 프로세스를 분할
(ii)는 각 작업에 들어를 만들 별도의 콘솔 응용 프로그램 &은 각 응용 프로그램에서 applicationId를 사용하여 식별합니다.

enum ApplicationId:byte 
{ 
    Router = 1, 
    Task1 = 2, 
    Task2 = 3, 
    Task3 = 4, 
    Task4 = 5, 
    Email = 6 
} 

(iii) 하나의 응용 프로그램을 라우터로 부릅니다. 한 응용 프로그램에서 다른 응용 프로그램으로 트랜잭션을 이동합니다.
(iv) 이제 transactionId, nextAppId 및 기타 관련 필드가있는 테이블을 만듭니다.
(v) 작업 완료 후
테이블의 nextAppId를 업데이트합니다. (vi) Windows의 모든 응용 프로그램 예약 작업 스케줄러 또는 활성 배치 사용 서버 (상업적)
는 (ⅶ) 마지막 응용 프로그램 '이메일'사용자

희망이 답변에 첨부 파일로 생성 된 PDF와 전자 메일을 보냅니다 !!!!. 좋은 하루 되세요 !!!

관련 문제