Windows Service
Windows Service
ย
ย
Windows Service ์์ฉํ๋ก๊ทธ๋จ ๊ฐ๋ฐ
ย
โ Main( ), OnStart( ), OnStop( ) ์ด ํ์
โ ์ฐธ์กฐ์ถ๊ฐ :System.Service Process
**ย
**
**ย
**
1.ย ย Service ํ์ผ : ์๋น์ค ๋์์ ํ๋ ํ์ผ, ServiceBase ํด๋์ค๋ฅผ ํ์ฅํ๋ค.
ย
public static void Main()
ย ย ย ย {
ย ย ย ย ย ย System.ServiceProcess.ServiceBase[] ServiceToRun;
ย ย ย ย ย ย ServiceToRun = new ServiceBase[] { new Service() };
ย ย ย ย ย ย System.ServiceProcess.ServiceBase.Run(ServiceToRun);
ย ย ย ย }
ย
ServiceBase class์ ๋ฐฐ์ด ์ธ์คํด์ค๋ฅผ ์์ฑํด์ ํ์ฌ ์๋น์ค ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ค.
(ํ์ฌ ServiceBase class๋ฅผ ํ์ฅํ ํด๋์ค๋ฅผ ์ถ๊ฐํ๋ ๊ฒ)
ย
2.ย ย Override Member ์ถ๊ฐ
ย
Protectedํ ๋ฉค๋ฒ๋ฅผ ์ถ๊ฐ
|
โ protected override void OnStop()
ย ย < ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅ>
ย
|
โ protected override void OnContinue()
ย ย ย ย ย ย ย ย
ย
ย
ย
|
ย
ย
ย ย ย ย protected override void OnStop()
ย ย ย ย {
ย ย ย ย ย ย FileStream fs = new FileStream(@โc:\log_stop.txtโ, FileMode.OpenOrCreate, FileAccess.Write);
ย ย ย ย ย ย StreamWriter sr = new StreamWriter(fs);
ย ย ย ย ย ย sr.WriteLine(โMYWindowsService stoppedโ);
ย ย ย ย ย ย sr.Flush();
ย ย ย ย ย ย sr.Close();
ย ย ย ย }
ย
ย ย ย ย protected override void OnPause()
ย ย ย ย {
ย ย ย ย ย ย FileStream fs = new FileStream(@โc:\log_stop.txtโ, FileMode.OpenOrCreate, FileAccess.Write);
ย ย ย ย ย ย StreamWriter sr = new StreamWriter(fs);
ย ย ย ย ย ย sr.WriteLine(โ์ ์์ค์งโ);
ย ย ย ย ย ย sr.Flush();
ย ย ย ย ย ย sr.Close();
ย ย ย ย }
ย
ย
ย
3.ย ย ServiceInstaller, ServiceProcessInstaller ์ธํ
โ Service๋ฅผ ์ํํ๋ ํด๋์ค ์ธ์ Installer ๊ธฐ๋ฅ์ ํ๋ ํ๋์ ํด๋์ค๋ฅผ ๋ณ๋ก๋
์ถ๊ฐํ๋ค.
ย
using System.ComponentModel;
using System.ServiceProcess;
using System.Configuration.Install;
ย
ย
namespace MyWindowsService
{
ย ย [RunInstallerAttribute(true)]
ย ย //์ด์ ๋ธ๋ฆฌ๊ฐ ์ค์น๋ ๋ Visual Studio ์ฌ์ฉ์ ์ง์ ๋์ ์ค์น ๊ด๋ฆฌ์ ๋๋ ์ค์น๊ด๋ฆฌ์๋๊ตฌ(Installutil.exe)์ ํธ์ถ ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค.
ย
**ย
**
ย ย public class ServiceInstallers : Installer
ย ย {
ย
ย ย ย ย private ServiceInstaller serviceInstaller;
ย ย ย ย // ์๋น์ค์์ฉํ๋ก๊ทธ๋จ์์ค์นํ๋์ธ์คํจ๋ฌ
ย ย ย ย private ServiceProcessInstaller serviceProcessInstaller;
ย ย ย ย // ์๋น์ค๋ฅผ์ด์ฉํ๋ํ๋ก์ธ์ค๋ฅผ๋ฑ๋กํ๋์ธ์คํจ๋ฌ
ย ย ย ย
ย
ย ย ย ย public ServiceInstallers()
ย ย ย ย {
ย ย ย ย ย ย //์์ฑ์
ย ย ย ย ย ย this.serviceProcessInstaller = new ServiceProcessInstaller();
ย ย ย ย ย ย this.serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
**ย
**
ย
ย
ย ย ย ย ย ย //this.serviceProcessInstaller.Account = ServiceAccount.User;
ย ย ย ย ย ย //this.serviceProcessInstaller.Username = โAdministratorโ;
ย ย ย ย ย ย //this.serviceProcessInstaller.Password = โ6750โ;
ย ย ย ย ย ย // ๊ณ์ ๊ณผํจ์ค์๋๋ฅผ์ ํํ์ ๋ ฅํด์ผํ๋ค.
ย
ย ย ย ย ย ย this.serviceInstaller = new ServiceInstaller();
ย ย ย ย ย ย this.serviceInstaller.ServiceName = โServiceโ;
ย ย ย ย ย ย // ์์คํ ์์์๋น์ค์ด๋ฆ์ผ๋ก์๋ณํ๋ค.
ย ย ย ย ย ย // ์๋น์ค์ด๋ฆ์ServiceBase ๋ฅผํ์ฅํํด๋์ค๋ช ์ด๋ค.
ย
ย ย ย ย ย ย Installers.Add(serviceInstaller);
ย ย ย ย ย ย Installers.Add(serviceProcessInstaller);
**ย
**
ย ย ย ย }
ย ย }
}
ย
4.ย ย cmd์์ Installtutil์ ์ด์ฉํด์ ์๋์ฐ ์๋น์ค ๋ฑ๋ก
ย
Installutill ย /iย MyWindowsService.exe : ์๋น์ค ๋ฑ๋ก
Installutill ย /uย MyWindowsService.exe : ์๋น์ค ํด์