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

لرن سایت,آموزش برنامه نویسی سی شارپ,آموزش طراحی سایت,آموزش برنامه نویسی اندروید,آموزش SQL c# android php jquery,قالب سایت

شما اینجا هستید : صفحه اصلی

با عضویت در کانال تلگرامی لرن سایت ، اولین فردی باشید که از تخفیفات و مطالب جدید خبردار می شوید !

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

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

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

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

به نقل از آی تی پرو: سرویس هم مثل همه نرم افزارها و 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 را بزنید.

ServiceInstallerPropertise

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

ServiceInstallerچ

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

ServiceProperties

خب حال پروژه خود را 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 امتیاز)
اگه مطلب خوشتون اومد پس لطفا به اشتراک بذارین تا بقیه هم خوششون بیاد :)

نظرات

مشترک شدن
اطلاع رسانی از :
guest
9 نظرات
Inline Feedbacks
View all comments
مجتبی فتاحی
مجتبی فتاحی
4 ماه گذشته

ممنون عالی بود

Parsa
Parsa
3 سال گذشته

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

هادی قربانی
هادی قربانی
Reply to  Parsa
2 سال گذشته

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

دلتا
دلتا
3 سال گذشته

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

هادی قربانی
هادی قربانی
Reply to  دلتا
2 سال گذشته

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

راد
راد
3 سال گذشته

همه چیز اوکی هست ولی چرا توی لیست سرویس نمیاد؟

محسن
محسن
5 سال گذشته

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

امیرحسین باقری
امیرحسین باقری
Reply to  محسن
4 سال گذشته

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

مسیح قاسمی
مسیح قاسمی
5 سال گذشته

کارت درسته ، عالی بود .