728x90
반응형
안녕하세요
C#으로 Window Service를 만들어 보겠습니다.
1. 윈도우 서비스란?
- 장 시간 실행되는 실행 애플리케이션으로 만들 수 있습니다.
- 컴퓨터가 부팅되면서 자동적으로 시작되고, 사용자 상호작용 없이 멈추거나 재 시작될 수 있습니다.
- 명령 줄 도구는 InstallUtill에 서비스 실행 파일 경로를 전달하여 쉽게 설치할 수 있습니다.
2. 윈도우 서비스를 왜 사용하는가?
- 어떠한 비즈니스에서 가장 일반적인 요구 사항의 하나가 특정 주기 기반으로 오랜 시간 스케줄 작업할 수 있는 서비스입니다. 예를 들면, 매일 오후 뉴스레터를 보낸다던가, 매 시간마다 고객에게 메일 알림을 보내는 것입니다.
- 그래서 어떠한 윈도우 서비스를 만드는 것은 신뢰할 수 있는 솔루션의 하나가 될 수 있습니다.
3. Window Service (윈도우 서비스) 프로젝트 만들기
- 새 프로젝트 추가에서 Windows 서비스(. NET Framework)를 선택하고, 이름과 위치를 수정해서 윈도우 프로젝트를 생성합 니다.
- 생성된 프로젝트 폴더 아래 Service1.cs 파일 명을 원하는 이름으로 변경하고, 아래처럼 디자인 보기에서 오른쪽 버튼을 클릭하여 [설치 관리자 추가]를 클릭합니다.
- 설치 관리자를 추가하면 ProjectInstaller.cs라는 파일이 생성됩니다. 이 ProjectInstaller.cs라는 파일에는
- ServiceProcessInstaller와 ServiceInstaller라는 컴포넌트가 생성됩니다.
- ServiceProcessInstaller와 ServiceInstaller는 이름을 변경하여 사용하셔도 됩니다.(저는 뒤에 test만 붙였습니다.)
- ServiceProcessInstaller 컴포넌트의 속성 창을 열어서 기능에 따른 계정 권한이 필요하면 Account 속성에서 필요한 계정을 선택하시면 됩니다.
- ServiceInstaller 컴포넌트의 속성 창을 열어서 Name, ServiceName, DisplayName, StartType을 필요한 값으로 변경하여 사용하시면 됩니다.
- 아래 코드는 Servicebase로부터 상속받은 WindowServiceTest클래스는 기본 생성자 OnStart(), Onstop()의 두 개의 멤버 함수로 구성됩니다.
- 생성자에 주기적인 실행을 위해서 Timer 객체를 생성하고, 초기 주기와 그 주기가 되었을 경우 발생하는 타이머 이벤트에 주기적으로 서비스를 실행할 메서드를 등록합니다.
- 윈도우 서비스가 시작될 경우에는 Onstart() 이벤트가 실행되며, Timer의 Enabled 속성에 true값을 설정하여 서비스가 시작됩니다.
- 서비스가 중지 또는 종료 시에는 Onstop() 이벤트가 실행되고 Timer의 Enabled 속성에 false값을 설정하여 서비스가 중지되도록 합니다.
public partial class WindowServiceTest : ServiceBase
{
Timer timeScheduler = null;
private const string folderPath = "C:\\temp||test||";
private const string filePath = folderPath + "service.txt";
StreamWriter sw;
public WindowServiceTest()
{
InitializeComponent();
timeScheduler = new Timer();
timeScheduler.Interval = 30000; // 30sec
timeScheduler.Elapsed += TimeScheduler_elapsed;
}
protected override void OnStart(string[] args)
{
if(!Directory.Exists(filePath))
Directory.CreateDirectory(folderPath);
timeScheduler.Enabled = true;
}
private void TimeScheduler_elapsed(object sender, ElapsedEventArgs e)
{
sw = new StreamWriter(filePath, true);
sw.WriteLine(DateTime.Now.ToString());
sw.Close();
}
protected override void OnStop()
{
timeScheduler.Enabled=false;
timeScheduler.Dispose();
}
}
4. Window Service(윈도우 서비스) 설치 및 제거하기
- 윈도우 서비스 명령줄 도구인 InstallUtil.exe를 통해서 윈도우 서비스 애플리케이션을 등록하거나 제거합니다.
- 등록된 윈도우 서비스 애플리케이션은 Services.msc에서 서비스명으로 확인할 수 있습니다.
- 윈도우 서비스 설치하기 : InstallUtil.exe "설치할 윈도우 서비스 애플리케이션 실행 파일 패스명"
- 윈도우 서비스 제거하기 : InstallUtil.exe /u "제거할 윈도우 서비스 애플리케이션 실행 파일 패스명"
728x90
반응형
'소소한 C# 지식' 카테고리의 다른 글
[C#]C# 기상청 API 연동하여 날씨 데이터 저장하기 (16) | 2022.04.26 |
---|---|
[C#] C# 주석 사용 방법 및 종류 (9) | 2022.04.22 |
[C#]NTP 서버 - PC 시스템 시간 동기화 프로그램 (4) | 2022.04.20 |
[C#/WINFORM]-Datagridview Excel Import(엑셀 불러오기) (2) | 2022.04.20 |
[c#/WINFORM] - Datagridview Excel Export (엑셀 내보내기) (0) | 2022.04.18 |
댓글