المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تعلم برمجة خدمات الويندوز ( Windows Services ) باستخدام ال Visual Basic.net


eshrag.net
08-15-2010, 01:23 PM
http://i29.tinypic.com/5mxpt.jpg




برمجة خدمات الويندوز Windows Service باستخدام Visual Basic.net





إخوتي و أخواتي الأكارم أعضاء منتديات المشاغب ،

اليوم سأقوم بشرح أحد أنواع المشاريع الرائعة التي قامت مايكروسوفت بتوفيرها لنا في بيئة ال .net ألا و هي ال Windows Service




مقدمة :

ال Windows Services هي عبارة عن خدمات تقوم بالعمل خلف الكواليس ( في الخفاء ) في نظام التشغيل لتنفيذ عمليات معينة و ضرورية لنظام التشغيل و أيضاً للعديد من البرامج التي تعمل في بيئة الويندوز مثل مراقبة العمليات التي تتم على بعض الملفات ، و عمل ال Log Files و غيرها من المهام الحساسة و الدقيقة .
ال Windows Services في العادة لا تمتلك واجهة مستخدم (User Interface) و ذلك بسبب عدم الحاجة لتدخل المستخدم في طريقة أو سير عمل هذه الخدمات ، ففي الغالب تبدأ هذه الخدمات بالعمل بشكل أوتوماتيكي و خفي مع بداية تشغيل الويندوز .
في السابق ، كان تطوير و برمجة خدمات الويندوز مقتصراً على خبراء ال C++ ، و لكن مع دخول ال VB.net إختلفت الأمور ، و أصبحت عملية إنشاء هذه الخدمات أكثر سهولة و تطبيقاً .

و بالطبع ، نستطيع الاطلاع على خدمات الويندوز التي تعمل على جهازنا عن طريق ال Administrative Tools -> Services
فنحصل على قائمة بجميع الخدمات كما هو موضح في الصورة التالية :


http://i33.tinypic.com/2dgkqas.jpg




الشرح :

نأتي الآن لعملية التطبيق العملي و برمجة خدمة الويندوز .
سأقوم في هذا الموضوع بتصميم خدمة ويندوز بسيطة لإنجاز الأمور التالية :
· إنشاء ملف نصي و من ثم القيام بتسجيل بيانات المستخدمين عند دخولهم للجهاز مثل إسم المستخدم و
تاريخ و وقت الدخول .
· تسجيل وقت إغلاق الجهاز في نفس الملف النصي الذي قمنا بإنشاءه في الخطوة السابقة .

بالطبع إخوتي الأفاضل بإمكانكم تصميم خدمات لتؤدي مهام معقدة و حساسة بحسب احتياجكم و لكني أحببت تبسيط المثال في هذا الموضوع لإيصال الفكرة .



خطوات التطبيق العملي :

أولاً ، نقوم بعمل مشروع جديد ، و من ثم نقوم باختيار خدمة ويندوز (Windows Service) كنوع المشروع ، و سأقوم بتسمية المشروع (ABSBAService) كما هو موضح في الصورة التالية :


http://i38.tinypic.com/2yluvea.jpg



و بعد ذلك يظهر لنا المشروع كما هو موضح في الصورة التالية :

http://i35.tinypic.com/33284sk.jpg



نستطيع بعد ذلك أن نغير إسم الخدمة أو أي من الخيارات المتاحة كما هو موضح في الصورة التالية :


http://i38.tinypic.com/281vmft.jpg




و الآن ، نقوم بفتح شاشة الكود الخاصة بمشروعنا و نقوم بكتابة الكود الذي نريده في ال Start Event و التي تعمل في حال بدء الخدمة و ال Shutdown Event و التي تعمل في حال إنهاء الخدمة عن طريق عمل Shutdown للجهاز كما هو موضح في الصورة التالية :


http://i36.tinypic.com/2dl5cwj.jpg



و الآن و بعد أن انتهينا من إنجاز الكود المطلوب ، يجب علينا أن تنذكر بأن هذا المشروع هو Windows Service و ليس Windows Application و لذلك فإننا لن نستطيع تشغيل الخدمة ببساطة بالنقر المزدوج على الملف التنفيذي بعد الانتهاء من بناء المشروع كما كنا نفعل مع تطبيقات الويندوز ،
و الحل هنا بأن نقوم بإضافة ال Installer للخدمة و الذي من واجبه أن يقوم بعملية تنصيب الخدمة بالنيابة عنا .

نقوم الآن بإضافة ال Installer كما هو موضح في الصورة التالية :


http://i38.tinypic.com/2a6vx3t.jpg




http://i33.tinypic.com/e16aed.jpg



نقوم الآن بتعديل الخيارات التي نريدها كما هو موضح في الصور التالية :


http://i33.tinypic.com/k17zhk.jpg



http://i35.tinypic.com/29qcm7n.jpg




بالطبع هناك العديد من الخيارات الأخرى التي لم أقم بتعديلها مثل :
CanStop : و التي تحدد إذا ما كان مسموحاً للمستخدم إيقاف الخدمة .
CanPauseAndContinue : و التي تحدد إذا ما كان مسموحاً للمستخدم تعليق الخدمة و إعادة تشغيلها .
AutoLog : و التي في حال كانت قيمتها True ، فسيقوم النظام بإظافة أي عملية تحصل على هذه الخدمة مثل الإيقاف و التشغيل و غيرها في ال EventLog في الويندوز .


و الآن ، و بعد أن انتهينا من تعديل الخصائص التي نريدها للأداتين ServiceProcessInstaller و ServiceInstaller ، نقوم ببناء المشروع كما هو موضح في الصورة التالية :



http://i34.tinypic.com/k9hn5c.jpg




طبعاً إلى الآن لم ننته من العمل بعد ،
فالخدمة لم يتم تنصيبها و تسجيلها في النظام لتبدء العمل .
و لتنصيب الخدمة و تسجيلها في النظام ، نقوم بتشغيل ال Command Prompt الخاص بالفيجوال ستوديو كما هو موضح في الصورة التالية :



http://i34.tinypic.com/iz9feu.jpg





نقوم الآن باستخدام الأمر InstallUtil للقيام بعملية التنصيب الفعلية ، حيث نقوم بكنابة الأمر InstallUtil مع مسار الملف التنفيذي كاملاً للخدمة كما هو موضح في المثال في الصور التالية :


http://i36.tinypic.com/ng1own.jpg


http://i38.tinypic.com/25tyvro.jpg



و بذلك نكون قد انتهينا من عملية برمجة الخدمة و تنصيبها بالكامل .
كما نلاحظ الآن ، إذا ما توجهنا لشاشة خدمات الويندوز فإننا نرى بأنه قد تمت إضافة خدمتنا في قائمة الخدمات كما هو واضح في الصورة التالية :


http://i37.tinypic.com/dmtmhl.jpg




قد يتساءل بعض الإخوة لماذا لم تعمل الخدمة بشكل أوتوماتيكي كما هو واضح من الصورة !!
السبب في ذلك إخوتي الأفاضل بأن الخدمة ستعمل بشكل تلقائي مع بداية تشغيل الجهاز ، و لكن إذا أردتم تشغيلها فوراً بشكل يدوي فكل ما عليكم عمله هو أن تقوموا بالنقر بالزر الأيمن على إسم الخدمة و من ثم اختيار الأمر Start .

و الآن إخوتي و أخواتي الأفاضل ، وصلنا للنقطة الأخيرة ،
ألا و هي إلغاء تنصيب الخدمة من الجهاز .

في حال أردنا إلغاء تنصيب الخدمة من الجهاز فنقوم بتشغيل ال Command Prompt الخاص بالفيجوال ستوديو كما أوضحنا سابقاً ، و نقوم باستخدام الأمر InstallUtil و لكن هذه المرة نقوم باستخدام الخيار U/ كما هو موضح في الصور التالية :


http://i35.tinypic.com/33or1fn.jpg


http://i38.tinypic.com/29av0c0.jpg




ملاحظة :

· تجنبوا استخدام أدوات الواجهة الرسومية في الخدمات .
· في حال أردتم إجراء أي تعديلات على الخدمة ، فيتوجب عليكم بأن تقوموا بعمل Uninstall و من ثم بعد الانتهاء من التعديلات ، قوموا بعمل Install مرة أخرى .





أخيراً ، إخوتي و أخواتي الأكارم ،

أتمنى أن أكون قد وفقت في طرح هذا الموضوع ، و أن أكون قد شرحته بشكل مبسط و مفيد للجميع .




http://i28.tinypic.com/24ywoch.jpg


http://i30.tinypic.com/2wfi78x.jpg