2013-05-08 1 views
1

IIS에서 Windows 서비스를 호스팅하고 Windows에서 실행되는 것처럼 실행되는 서비스를 유지하는 방법은 무엇입니까? WCF 서비스의 일부 기능을 사용할 수 있습니까?IIS에서 Windows 서비스 (like)를 호스팅하는 방법

저는 IIS 자체에만 액세스 할 수 있습니다. 이 서비스에서는 예약 된 시간에 일부 데이터를 처리 할 스레드를 만듭니다.

답변

1

당신은 너트 껍질로 기울어 질 수 없습니다.

그러나 건강 모니터링 API, 특히 하트 비트 기능을 사용할 수 있습니다. 참조 : 일단 당신도 SO에이 대답은 Understanding heartbeat in ASP.NET health monitoring

도움이 될

http://msdn.microsoft.com/en-us/library/system.web.management.webheartbeatevent.aspx

클래스에 대한 자세한 내용은

을 할 일이있을 때 호출 할 구현해야합니다 webheartbeatevent 파생 클래스를 구현하여 db를 확인하거나 할 일이 있는지 확인할 수 있습니다.

더 나은 해결책 IMHO는 서비스가 전적으로 스크랩되어 100 % 웹 기반으로 시스템을 재 설계합니다. 서비스는 배포 및 유지 관리의 악몽이됩니다. 나는 당신이 지금 발견하고 있다고 가정하기 때문에 ...

+0

감사합니다. 내가 한번 보자 ... 그리고 나중에! –

4

간단히 말해서, 당신은 할 수 없습니다. .

  1. IIS 작업자 프로세스는 HTTP 요청이 들어 오면이 시스템과 함께 서비스를 시작 할 수 없음을 의미에만 시작됩니다

    더 자세한 대답은이 문제가있는 것입니다.

  2. IIS 작업자 프로세스는 여러 조건에서 재활용 (다시 시작)됩니다. 예를 들어 오랜 시간 동안 HTTP 요청이 들어오지 않으면 작업자 프로세스가 다시 시작됩니다. 즉, 응용 프로그램 풀 재활용 구성에 액세스 할 수있는 경우가 아니면 서비스가 종료되는 시점을 제어 할 수 없습니다. 재활용 논리는 보류중인 모든 HTTP 요청이 완료되었음을 보장하지만 모든 백그라운드 스레드가 완료 될 때까지 기다리지 않습니다.

당신은 부분적인 해결책으로이 방법으로 올 수 있습니다 :

  1. 이 장기 실행 스레드가 살아 있고하지 않을 경우, 그것을 시작하면 확인하는 WCF 서비스 방법을 작성합니다.
  2. 매우 간단하게 (5 초에 한 번) 해당 메서드를 호출하는 Windows 서비스를 만듭니다. 서비스를 어딘가에 배포하십시오. 자신의 컴퓨터에서.

유일한 질문은 다음과 같습니다. Windows 서비스를 피할 필요가 있습니까? 서비스를 호스팅 할 장소를 찾을 수 있습니까? Windows 서비스가 최상 또는 유일한 방법 인 경우가 있습니다.

+0

감사합니다. 솔루션을 다시 생각해 볼 수있는 시간 ... –

관련 문제