[hide=5]ผมเชื่อว่ามีเพื่อน ๆ หลายคนที่ยังไม่เคยสร้างหรือใช้งานโปรเจ็คที่ต้องเขียนให้ การทำงานของโปรแกรมนั้นเป็น Service ตัวนึงโดยที่จะทำงานด้วยตัวเองไม่ต้องคอยคำสั่งจาก user ลองมาดูกันครับ

What article covering?
แนะนำความรู้พื้นฐานเพื่อทำความเข้าใจเกี่ยวกับ Windows Service
สร้าง Windows Service Project โดยใช้ตัวอย่างงานจริง
Deployment (MSI Package, MSBuild ตอนที่2)
Debug Windows Service (ตอนที่2)

What’s a Windows Service?
คือ Program ที่สร้างและ deploy ไปแล้ว จะทำงานเป็น Service รันอยู่บน Windows โดยสามารถที่จะตั้งค่าให้ run program ไปพร้อม ๆ กับ Windows start up ได้ โดยทำงานเป็น Background Service โดยที่ user ไม่ต้องสั่งงานใด ๆ

โดยการทำงานนั้นอาจจะเป็นในลักษณะของการทำงานตามช่วงเวลา, การทำงานตาม event ที่ต้องการ เช่น การทำงานร่วมกับ FileSystemWatcher หรือ System.Timers.Timer เพื่อใช้ Event ที่เกิดขึ้นเป็น Trigger ในการทำงานบางอย่างตามเงื่อนไขที่ต้องการ

Mention the Windows service.
เนื่องจากประโยชน์ของ Widows Service หลัก ๆ ก็คือ Program ที่เราสร้างนั้นสามารถที่จะทำงานได้โดย automatic ทันทีที่ Windows ได้ Start up และการทำงานของโปรแกรมนั้นจะเป็นในลักษณะของ Background Service คือจะทำงานตามที่เราได้ตั้งเงื่อนไขการทำงานไว้ หลังจาก Service Start แล้ว และ Windows Service นั้นจะสามารถเลือก User เพื่อที่จะให้สิทธิ์สั่งการทำงานของ service นั้นได้ (ค่า default ส่วนใหญ่จะใช้ LocalService, NetworkService User) หากเพื่อน ๆ เคยเปิดดูใน Administrative Tools -> Services จะเห็น Windows Service จำนวนมากดังรูปข้างล่างนี้



ซึ่งโปรแกรมส่วนใหญ่ทั้ง MSSQL, ASP.NET, IIS, etc. ต่างก็มีการใช้ Windows Service เป็นตัวคอยควบคุมการทำงานของระบบตามที่ได้วางเงื่อนไขการทำงานต่าง ๆ ของระบบไว้ในตัว service ทำให้เสมือนโปรแกรมนั้นมีชีวิต สามารถทำงานได้ด้วยตัวเองอยู่บน Windows แต่เป็นไปตามเงื่อนไขที่เราได้กำหนดการทำงานไว้



Create my first Windows Service.

Create Solution and Windows Service Project
เริ่มแรกเลือกสร้างโปรเจ็คแบบ Windows Service ตามรูปข้างล่าง




จากนั้นก็จะได้โครงสร้างโปรเจ็คในหน้าต่าง Solution Explorer ตามรูปข้างล่างนี้



ซึ่ง Service1.cs จะเป็น file ที่เราจะทำการ coding ลงไปเพื่อควบคุมการทำงานตามที่เราต้องการ

เมื่อเราเปิดกดเลือกดู View code icon เราจะเห็น code ตาม list ข้างล่างนี้

[code]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
namespace myService
{