آموزش ساخت سرویس ویندوز با سی شارپ + سورس

در این پست قصد آموزش طراحی سرویس برای ویندوز را داریم . اما اول از همه باید بدانیم که:

سرویس ها چه هستند؟

به نقل از آی تی پرو: سرویس هم مثل همه نرم افزارها و Application هایی که برای سیستم عامل ویندوز وجود دارند یک برنامه کامپیوتری است. مهمترین تفاوتی که بین یک سرویس و یک برنامه کاربردی وجود دارد این است که شما می توانید محیط یک برنامه را مشاهده کنید اما نمی توانید محیط سرویس را مشاهده کنید ، در واقع تمامی سرویس ها در پس زمینه یا Background سیستم عامل مشغول به فعالیت هستند و شما از اجرا شدن آنها طبیعتا مطلع نمی شوید. در واقع سرویس ها رابط کاربری یا User Interface ندارند که شما بتوانید با آنها ارتباط برقرار کنید. سرویس ها برای ارائه خدمات هسته ای و اصلی سیستم عامل طراحی و تولید می شوند ، زمانیکه شما وارد یک وب سایت می شوید ، زمانیکه سیستم عامل از فعالیت های رخ داده بر روی سیستم عامل Log برداری می کند ، زمانیکه به یک فایل سرور متصل می شوید و یا خودتان یک فایل سرور می شوید ، زمانیکه یک پرینتر را استفاده می کنید و یا حتی یک خطا را مشاهده می کنید ، همه اینها کاری است که در واقع در پس زمینه یک سرویس در حال انجام آن است. سرویس های سیستم عامل ویندوز برگرفته ای از ماهیت Daemon در سیستم عامل Unix هستند که برنامه هایی گفته می شود که دیده نمی شوند اما برای ما کار مهمی انجام می دهند.

چگونه با سی شارپ برای ویندوز سرویس بنویسیم؟

ابتدا نیاز به نصب بودن نسخه اکسپرس ویژوال استودیو روی سیستم خود داریم ، چرا که سورس نمونه ایی که برای ساخت سرویس ویندوز نیاز داریم فقط در این نسخه موجود است!

ویزوال استودیو را باز میکنیم و روی گزینه New Project کلیک میکنیم.

سپس از بخش  # Visual C ، گزینه Windows Service را انتخاب میکنیم.

یک نام برای سرویس خود انتخاب کنید ، بعد از این که کلید OK را بزنید یک پروژه برای شما ساخته میشود که مربوط به سرویس شما میباشد . از بخش Solution Explorer روی Service1.cs کلیک راست کنید و نام آن را به نام دلخواه خود تغییر دهید .

در بخش کد پروزه دو متد به نام OnStart() و OnStop() برای ما ساخته شده است که OnStart() هنگام اجرای سرویس ما اجرا شده و OnStop() هنگام توقف سرویس ما اجرا میشود.

روی پروژه خود کلیک راست کنید( در پروژه ما Learn-Site.Com Service) یک کلاس به پروژه اضافه کنید و نام آن را به دلخواه انتخاب کنید . ما در اینجا نام Library.cs را به آن میدهیم . این کلاس برای نوشتن متد هایی که در آینده به آن ها نیاز خواهیم داشت کار آمد خواهد بود. اگر پروژه شما یک پروژه بزرگ است میتوانید بعد ساختن کلاس آن را از طریق Add Reference به پروژه خود اضافه کنید.

کلاس Library.cs را پابلیک کنید ویک متد برای لاگ کردن ارور های پروژه در یک فایل بنویسید ( طبق عکس پایین).

 

یک متد نیز برای ذخیره کردن پیغام های سفارشی در همان بنویسید ( مطابق عکس زیر) .

توجه: این متد  برای سرویس ویندوز الزامی نیست و صرفا جهت درک شما از کار کرد سرویس در این مطلب آورده شده است.

خب ، حال به کلاس اصلی خود بازگشته و یک تایمر تعریف کنید.

حالا کد های عکس پایین را در متد OnStart() و timer1_Tick() بنویسید( توجه :  به دلیل تعریف تایمر به صورت دستی رویداد تایمر را خودتان باید بنویسید).

کد مشاهده شده در عکس پایین را در متد OnStop() بنویسید .

حالا باید یک نصب کننده به پروژه خود اضافه کنیم . همانطور که میدانید سرویس ها به وسیله یک Installer باید روی ویندوز نصب شوند . برای اینکار به بخش [Design] پروژه مراجعه کنید ، سپس کلیک راست کرده و Add Installer را انتخاب کنید.

در این مرحله باید مشاهده کنید که فایلی به نام ProjectInstaller.cs به پروژه شما اضافه شده است.

روی ServiceInstaller1 کلیک راست کرده و Properties را بزنید.

در بخش ServiceName نامی که میخواهید برای سرویس خود انتخاب کنید را وارد کرده و در بخش StartType برای اجرای اتوماتیک سرویس Automatic و  برای اجرای دستی Manual را انتخاب کنید.

چ

سپس روی serviceProcessor1 کلیک راست کرده Properties را بزنید و Account را به LocalSystem تغییر دهید.

خب حال پروژه خود را Build میکنیم ( با فشردن کلید F5 این امر قابل اجراست).

 

خب تا اینجا ، شما اولین سرویس خود را نوشتید و این سرویس آماده نصب روی سیستم شماست.

برای نصب سرویس خود از منوی استارت به فولدر Visual Studio رفته و Developer Command Prompt را اجرا کنید.

حال دستور cd را تایپ کرده و بعد از زدن یک Space فولدری که سرویس ویندوز شما در آن قرار دارد را بنویسید . برای  مثال سرویس من در این مسیر قرار دارد:

C:\Sandbox\WindowServices\TestWindowService\TestWindowService\bin\Debug

و دستور من به این شکل میشود :

cd C:\Sandbox\WindowServices\TestWindowService\TestWindowService\bin\Debug و سپس کلید اینتر را بزنید.

]InstallUtil.exe “TestWindowService.exe”

به جای TestWindowsService نام فایل سرویس خود را بنویسید .

خب سرویس شما با موفقیت نصب شد و میتوانید با فشردن کلید های ترکیبی win + r و تایپ دستور : services.msc و پیدا کردن سرویس خود و کلیک راست روی ان و انتخاب Start سرویس خود را فعال کنید.

برای متوقف کردن سرویس خود نیز کافیست همین مرحله تکرار شود. فقط به جای Start روی Stop کلیک میکنیم.

LogFile.txt

اگر یادتان باشید ما دو متد برای ثبت پیام های ارور و پیام های سفارشی در کلاس Library.cs نوشتیم . بعد از اجرا کردن سرویس نتیجه این متد ها را در فایل LogFile.txt مشاهده میکنیم. این فایل در کنار فایل اصلی سرویس قرار دارد.

فایل لاگ بعد از استاپ سرویس

برای حذف سرویس هم کافیست ابتدا توسط دستور cd به فولدر فایل مربوط به سرویس خود رفته و دستور زیر را اجرا کنید:

InstallUtil.exe /u “TestWindowService.exe”

و سپس اینتر را بزنید .

به جای TestWindowsService.exe نام فایل سرویس خود را وارد نمایید .

دانلود سورس سرویس نوشته شده در این مطلب | حجم : 32 کیلوبایت

تمام شد!

بسیار خوب ، شما اولین سرویس خود را با سی شارپ نوشتید و نحوه نصب کردن اجرا کردن و حذف کردن آن را آموختید. در اینجا ما فقط متد هایی برای لاگ کردن ارور ها و پیام سفارشی  نوشتیم . شما میتوانید کار های مد نظر خود مانند نوشتن اطلاعات در دیتابیس و … را به وسیله سرویس ها انجام دهید . لطفا سوالات و مشکلات خود را در بخش نظرات همین مطلب مطرح فرمایید.

 

 

5/5 - (3 امتیاز)
فرهاد محسنی

مشاهده نظرات

  • سللم من میخوام داخل سی شارپ یک ویندوز سرویس درست کنم که صدای طرف مقابل رو از میکروفون بگیره و به من بده ولی مشکلم اینه که نمیدونم سرویس رو چطوری بنویسم که درست کار کنه

    • شما باید اول یه برنامه توی سی شارپ بنویسی که توش صدا رو بتونی ضبط کنی، بعد از اینکار میتوی همون کد ها رو توی سرویس قراربدی

  • سلام چجوری سرویسی بنویسم که وقتی کاربر نرم افزار رو نصب میکنه خودش استارت بشه درست مثل نرم افزار هایی که وقتی ویندوز راه اندازی میشه خود به خود فعال میشن؟

    • نیازی به نوشتن سرویس نیست، فقط کافیه شورت کات برنامه ای رو که میخوایی اجرا بشه توی فولدر استارت آپ ویندوز کپی کنی، برای این کار کافیه توی درایو ویندوزت بری و فولدر Send to رو پیدا کنی، که البته برای این کار باید سیستم رو روی نمایش فایلهای سیستمی قرار بدی چون این فولدر بطور سیستمی مخفی شده.

  • ممنون از راهنمايي بسيار جامع و كامل شما . اما ميخواستم بدونم چطور اين رو سيستم ديگر نصب كرد بدون نياز به حضور خودم

    • یه برنامه مینویسید که این کد های cmd رو برای نصب اجرا کنه.

آخرین مطالب

نحوه هلتداری مدرن و کارآمد

مکانیسم هتلداری پیشرفته در دنیای امروزی که تکنولوژی تمام ابعاد زندگی و کار را در… ادامه مطلب

ژوئن 6, 2020

سیستم نرم افزار هتلداری

امروزه هتل‌ها در دنیای صنعت گردشگری یکی از ارکان اساسی محسوب می‌شوند. ارائه‌ی خدمات با… ادامه مطلب

می 22, 2020

نحوه انبارداری شرکت آمازون

موفقیت کسب و کارهای بزرگ، همیشه الگوی مناسبی برای کسب و کارهای کوچک‌تر است. آمازون… ادامه مطلب

آوریل 26, 2020

طراحی نرم افزار انبارداری

  یکی از مهم‌ترین و کلیدی‌ترین بخش‌های یک سازمان، انبار محصولات یا خدمات آن است.… ادامه مطلب

آوریل 21, 2020

طراحی نرم افزار مالی و حسابداری

این روز ها با تقریب خوبی می توان گفت شرکت یا بیزینسی باقی نمانده است… ادامه مطلب

ژانویه 30, 2020

چگونه برنامه نویس موفق اندروید شویم؟

از آنجا که اپلیکیشن های موبایل بیشتر و بیشتر مردم را از راه های خلاقانه… ادامه مطلب

ژوئن 15, 2019