Windows Service
Windows Service 
**Windows Service ๋?** โ ์ฌ๋ฌ ์์ฉํ๋ก๊ทธ๋จ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ก ์ด์ํ๋ ๊ฒ โ exe, dll์ด ์๋๋ผ os๊ฐ ๋ด๋ถ์ ์ผ๋ก ์คํ โ ๊ตฌ์ฑ์์์ ์๋น์ค ๋ชฉ๋ก์ ๋์ด๋์ด ์์
**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 OnStart(string[] args) โ protected override void OnStop() < ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅ>
โ protected override void OnPause() โ protected override void OnContinue() ์์ฑ(True)>
** 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(); }
*** Windows Service Event โ ์๋น์ค์ ์ํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค. ** ** ** Start : OnStart( ), ServiceStarmode(Automatic, manual, Disabled) : ์ด๋ค์์ผ๋ก ์์ํ๋์ง Stop : OnStop( ) Pause : OnPause( ) , ์์คํ ์ ๋ฆฌ์์ค๋ฅผ ๋ฐ๋ก ๋ณด์ ํ ์ ์๋ค. Continue : OnContinue( ), OnPause์์ ๋ฐ๋ ๊ธฐ๋ฅ์ ์คํํ ์ ์๋ค.
**3. ****ServiceInstaller, ServiceProcessInstaller ****์ธํ ** โ Service๋ฅผ ์ํํ๋ ํด๋์ค ์ธ์ Installer ๊ธฐ๋ฅ์ ํ๋ ํ๋์ ํด๋์ค๋ฅผ ๋ณ๋ก๋ ์ถ๊ฐํ๋ค. **using System.ComponentModel;** **using System.ServiceProcess;** **using System.Configuration.Install;** namespace MyWindowsService { ** [RunInstallerAttribute(true)] ** ** //****์ด์ ๋ธ๋ฆฌ๊ฐ ์ค์น๋ ๋ Visual Studio ์ฌ์ฉ์ ์ง์ ๋์ ์ค์น ๊ด๋ฆฌ์ ๋๋ [์ค์น๊ด๋ฆฌ์๋๊ตฌ(Installutil.exe)](http://msdn2.microsoft.com/ko-kr/library/50614e95(VS.80).aspx)์ ํธ์ถ ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค.** ** ** ** ** 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 : ์๋น์ค ํด์