سلام امروز میخوام طریقه ساختن یه پروژه ویندوز سرویسی رو براتون توضیح بدم . اینکه چه موقع ما باید به سراغ ویندوز سرویس ها بیایم خودش خیلی بحث گسترده ای هستش و من نمیخوام زیاد راجع به مزایا و معایب یا چالش هایی که این نوع پروژه ها دارن صحبت کنم و بیشتر میخوام به مباحث پیاده سازی اون (بخش فنی مبحث)تمرکز کنم و سعی میکنم در یک مطلب جداگانه راجع به این نوع پروژه ها با هم حرف بزنیم .
بریم سراغ اصل مطلب..
من از ویژوال استدیو 2017 برای ساخت این پروژه استفاده کردم و در ورژن های دیگه شاید جای گزینه ها متفاوت باشه و ذات کار یکی هستش .
ویژوال استدیو را به صورت Run as administrator باز میکنیم .
در مسیر :
File -> new -> project
زبان مورد نظر خود را انتخاب کنید (من از سی شارپ استفاده میکنم معمولا اما شما میتونید vb.net یا .. رو هم به عنوان زبان ویندوز سرویستون انتخاب کنید).
در سربرگ windows desktop به دنبال نوع پروژه Windows Service باشید .نام پروژه – نام سولوشن و محل پروژه را تعیین کنید .
حال یک پروژه برای شما ساخته میشود و به صورت دیفالت Service1.vb[defualt] به شما نشان داده میشود . شما با زدن f7 میتوانید به کد های خود دسترسی داشته باشید .
سرویس ها دو متد مهم دارند یکی و دیگیری که در اصل میشه گفت این ها Event های ما هستند یعنی با Run شدن سرویس به صورت خود کار داخل می افتیم . پس ادامه کار ما در متد میباشد .
صفحه ای که بالافاصله بعد از ساخت پروژه با آن روبرو میشویم .
بدیهی است که برای اجرا گرفتن از ویندوز سرویس باید آن را نصب کنید . برای این کار باید برای ویدوز سرویس خود installer نصب کنید .
برای اضافه کردن installer بر روی service1.vb [designer] کلیک راست کنید . و گزینه Add Installer کلیک کنید .
بعد از ساخت یک فایل با ProjectInstaller.vb ساخته میشود .
برای تعیین نام سرویس فایل initialize component() را باز میکنیم . و پراپرتی ServiceName را مقدار دهی میکنیم .
حال دیگر بنا به نیاز مندی کد های خود را بنویسید .در اینجا شما باید به فانکشنالیتی که برای اون به سراغ ویندوز سرویس اومدید بپردازید.
برای تست ویندوز سرویس :
ویندوز سرویس مورد نظر خود را set as start up project کنید .
حالت پروژه را بر روی debug بزارید .
در خود کد Debugger.Launch() را بگذارید.
پروژه را build کنید .
تذکر: به شدت دقت کنید که پوشه debug شما در ابتدا clean شده . دارید کدهای درست را build و نصب میکنید .
حال برای نصب باید اقدام کنید .
فایل ها درون یک پوشه در یک مسیر دلخواه بریزید .
Cmd را حتما به صورت Run as administator ران کنید .
حال دستور زیر را میزنیم
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe" "c:\myservice.exe"
بخش اول مسیر اصلی نصب کننده است که به آن دست نمیزنیم .
بخش دوم مسیر exe ما ( همان ویندوز سرویس ) ماست .
سپس پنجره ای تحت عنوان Set winows service login میآید که باید username و password را وارد نماییم
برای مثال : ./p.darvishi به عنوان username
سپس در قسمت services ها اقدام به start کردن آن کنید بافاصله بعد از این حرکت پروژه در داخل ویژوال استدیو باز و بالای خط debugger.luachاستاپ میشود و حال شما میتوانید trace خود را اغاز کنید .
چگونه ویندوز سرویس را استاپ کنیم ?
Cmd را به صورت run as administartor ران کنید .
sc queryex "نام سرویس"
با اجرای این دستور یک سری اطلاعات سرویس به دست می آورید یکی از آنها PIDاست .
حال دستور زیر را اجرا نمایید .
taskkill /F /PID [شماره ای که به دست می آورید]
تمام
پاییز 99