비고
이 문서는 .NET의 호스트된 서비스에는 적용되지 않습니다. Windows 서비스 사용 Microsoft.Extensions.Hosting.BackgroundService 및 작업자 서비스 템플릿의 최신 콘텐츠는 다음을 참조하세요.
Windows 서비스 애플리케이션은 System.ServiceProcess.ServiceBase 클래스로부터 상속받은 클래스를 기반으로 합니다. 이 클래스에서 메서드를 재정의하고 서비스의 작동 방식을 결정하는 기능을 정의합니다.
서비스 만들기와 관련된 주요 클래스는 다음과 같습니다.
System.ServiceProcess.ServiceBase — 서비스를 생성할 때, ServiceBase 클래스에서 메서드를 재정의하고 코드를 정의하여 이 상속된 클래스에서 서비스가 작동하는 방식을 결정합니다.
System.ServiceProcess.ServiceProcessInstaller 및 System.ServiceProcess.ServiceInstaller - 이러한 클래스를 사용하여 서비스를 설치하고 제거합니다.
또한 명명 ServiceController 된 클래스를 사용하여 서비스 자체를 조작할 수 있습니다. 이 클래스는 서비스 만들기에 포함되지 않지만 서비스를 시작 및 중지하고, 명령을 전달하고, 일련의 열거형을 반환하는 데 사용할 수 있습니다.
서비스 동작 정의
서비스 클래스에서 서비스 제어 관리자에서 서비스 상태가 변경될 때 발생하는 작업을 결정하는 기본 클래스 함수를 재정의합니다. 클래스는 ServiceBase 사용자 지정 동작을 추가하도록 재정의할 수 있는 다음 메서드를 노출합니다.
메서드 | 덮어쓰기 |
---|---|
OnStart | 서비스 실행을 시작할 때 수행해야 하는 작업을 나타냅니다. 서비스가 유용한 작업을 수행하려면 이 절차에서 코드를 작성해야 합니다. |
OnPause | 서비스가 일시 중지될 때 발생할 작업을 나타냅니다. |
OnStop | 서비스 실행을 중지할 때 발생할 작업을 나타냅니다. |
OnContinue | 일시 중지된 후 서비스가 정상 작동을 다시 시작할 때 발생하는 작업을 나타냅니다. |
OnShutdown | 해당 시간에 서비스가 실행 중인 경우 시스템이 종료되기 직전에 수행되어야 하는 작업을 나타냅니다. |
OnCustomCommand | 서비스에서 사용자 지정 명령을 받을 때 발생할 작업을 나타냅니다. 사용자 지정 명령에 대한 자세한 내용은 온라인 MSDN을 참조하세요. |
OnPowerEvent | 배터리 부족 또는 일시 중단 작업과 같은 전원 관리 이벤트가 수신될 때 서비스가 응답하는 방법을 나타냅니다. |
비고
이러한 메서드는 서비스가 수명 동안 이동한다는 상태를 나타냅니다. 서비스는 한 상태에서 다음 상태로 전환됩니다. 예를 들어 OnContinue이 호출되기 전에는 OnStart 명령에 대해 절대 서비스가 응답하지 않을 것입니다.
관심 있는 몇 가지 다른 속성 및 메서드가 있습니다. 여기에는 다음이 포함됩니다.
Run 클래스의 ServiceBase 메서드입니다. 이것이 서비스의 주요 진입점입니다. Windows 서비스 템플릿을 사용하여 서비스를 만들면 애플리케이션의
Main
메서드에 코드가 삽입되어 서비스를 실행합니다. 이 코드는 다음과 같습니다.ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
비고
이러한 예제에서는 애플리케이션에 포함된 각 서비스를 추가할 수 있는 형식 ServiceBase의 배열을 사용한 다음 모든 서비스를 함께 실행할 수 있습니다. 그러나 단일 서비스만 만드는 경우에는 배열을 사용하지 않고 ServiceBase에서 상속된 새 개체를 선언하고 실행하도록 선택할 수 있습니다. 예를 들어 방법: 프로그래밍 방식으로 서비스 쓰기를 참조하세요.
클래스의 일련의 속성입니다 ServiceBase . 이러한 요소들은 서비스에서 호출할 수 있는 메서드를 결정합니다. 예를 들어 CanStop 속성이
true
로 설정된 경우, OnStop 메서드를 서비스에서 호출할 수 있습니다. 속성이 CanPauseAndContinue로 설정되면,true
및 OnPause 메서드를 호출할 수 있습니다. 이러한 속성 중 하나를true
로 설정하면, 연결된 메서드에 대한 처리를 재정의하고 정의해야 합니다.
또한 ServiceController라는 구성 요소를 사용하여 기존 서비스와 통신하고 그 동작을 제어할 수 있습니다.
참고하십시오
.NET