بررسی مدیریت سرویسهای ویندوز در دات نت
سرویسهای ویندوز
سرویسهای ویندوز، سرویسها و رویههایی هستند که در پس زمینه سیستم اجرا میشوند و چون نیازی به ارتباط با کاربر ندارند، هیچ رابط کاربری ندارند. سرویسهای ویندوز را میتوان روی ویندوزهای 2000، XP و NT اجرا نمود.
معمولاً سرویسهای ویندوز کارهایی مانند چک کردن ارتباط شبکه و دسترسی کاربران را به عهده دارد. برای اینکه سرویسهای ویندوزی که در دستگاه شما وجود دارد را مشاهده کنید، به Start>Controlpanel>Administrative Tools بروید و آیکون Services را کلیک کنید. شکل 1 پنجره مربوط به سرویسها را نشان میدهد.
|
شکل 1 |
سرویس ویندوز که در رجیستری نصب میشود، یک شیء اجرا شدنی است و توسط مدیر کنترل سرویسها یا SCM یا Service Control Manager مدیریت میشود.
SCM سروری است که متدها را از راه دور فرا میخواند و به اصطلاح RPC یا Remote Procedure Call است و از مدیریت محلی و از راهدور سرویسها پشتیبانی میکند.
یکی از قابلیتهای داتنت وجود کلاسهایی در آن است که میتوان با استفاده از آنها سرویسهای ویندوز را ساخته و آنها را مدیریت نماییم (SystemServiceProcess).
اجزای معماری سرویسهای ویندوز
معماری سرویسهای ویندوز از سه جزء تشکیل شده است:
ìService Control Manager) SCM): با استفاده از این بخش میتوان سرویسها را کنترل نمود.
ìService Controller Application) SCA): با استفاده از این بخش میتوان رفتارهای سرویس را کنترل کرد.
ìService Application) SA): این بخش از یک تا چند سرویس تشکیل شده است.
برای ساخت سرویس ویندوز در داتنت میتوانیم از متدهای کلاس ServiveBase استفاده کنیم. وقتی که این سرویس ساخته شد، باید در رجیستری ثبت و نصب شود (با استفاده از کلاسهای ServiceInstaller و ServiceProcessInstaller) وقتی سرویس نصب شد، با استفاده از کلاسهای SCA و SCM میتوان سرویس را آماده به کار یا خاموش نمود.
وقتی سرویسی در سیستمی شروع به کار نمود، میتواند چندین حالت داشته باشد. در حال کار باشد، موقتاً کار نکند، یا خاموش باشد. حالت دیگری که ممکن است برای سرویسی به وجود آید، Pending است که وقتی به وجود میآید که دستوری مانند دستور توقف موقت صادر شود، ولی هنوز کامل نشده است.
تفاوت سرویسهای ویندوز در داتنت با برنامههای دیگر
سرویسهای ویندوز در داتنت تفاوتهایی با برنامههای دیگر داتنت دارند:
ïبر خلاف پروژههای معمول داتنت، برنامههای سرویسها باید حتماً نصب گردد.
ï بر خلاف پروژههای معمول داتنت که پنجرههای دیالوگ نمایان است، پنجرههای سرویسها قابل دیدن نیست.
ï بر خلاف پروژههای معمول داتنت که میتوان با استفاده از کلیدهای F5 یا F11 برنامهها را اشکالیابی کرد، در سرویسهای ویندوز ابتدا باید آنها را درست کرد. سپس آن را نصب و شروع به کار کرد. سپس یک اشکالیاب به آن متصل کنیم.
ساخت سرویس ویندوز
برای ساخت یک سرویس ویندوز در داتنت یک پروژه جدید ایجاد کنید و همانطور که در شکل 2 مشخص شده است، نوع پروژه را Windows Service انتخاب نمایید و پروژه را بسازید. شکل 3، properties برنامه Service 1 را که ساختهایم، نشان میدهد.
|
شکل 2 |
هر یک از مشخصههای این سرویس را که بخواهیم، می توانیم در این قسمت تغییر دهیم. برای افزودن قابلیت جدید به برنامه سرویس ویندوزی که درست کردهایم، باید متدهای OnStart و OnStop این سرویسها را دستکاری کنیم. مثلاً میتوانیم بگوییم هر وقت سرویس شروع شد، فایلی متنی بسازد و متنی را در آن بنویسد و وقتی که سرویس متوقف شد، فایل متنی دیگری بسازد و متنی را در آن بنویسد.
|
شکل 3 |
برای این کار کدهای شکل 4 را مینویسیم. حال سرویس ما درست شده است، ولی نمیتوان آن را اجرا نمود. چون همانطور که قبلاً نیز ذکر شد، سرویس باید نصب گردد.
پشتیبانی سرویسهای ویندوز از Eventهای مختلف
سرویسهای ویندوز از چهار Event مختلف پشتیبانی میکنند:
Start: وقتی سرویس با استفاده از SCM شروع به کار کرد، Event سرویس Start میشود و سیستم فایل اجرایی را مشخص کرده و متد OnStart برنامه اصلی را اجرا میکند.
Stop: وقتی که سرویس متوقف میگردد.
Pause: توقف موقت سرویس
Continue: ادامه کار سرویس
یک سرویس ویندوز میتواند کارهای زیادی انجام دهد و Eventهای مختلفی را کنترل نماید. مثلاً تغییر در قدرت دستگاه را پیدا کند و Log کردن اطلاعاتی مانند تغییر در موقعیت سرویسها را انجام دهد.
همچنین میتوان کارایی سیستم را با استفاده از Performance Counters چک نمود. برای اینکه بتوانیم اتفاقاتی که در سیستم پیش میآید را جمعآوری کنیم و به قول معروف Log کنیم، میتوانیم از System Event log استفاده کنیم.
با استفاده از این لوگها میتوانیم اطلاعاتی مانند خرابی سرویسها، کمبود حافظه سیستم یا توقف سرویسها در دست را داشته باشیم. برای استفاده از این ابزار میتوانیم کامپوننت EventLog برای ثبت اطلاعات استفاده کنیم.
|
شکل 4 |