hesky
17-12-2010, 06:02 PM
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
برمجة خدمات الويندوز Windows Service باستخدام Visual Basic.net
إخوتي و أخواتي الأكارم أعضاء منتديات ساسو سوفت،
اليوم سأقوم بشرح أحد أنواع المشاريع الرائعة التي قامت مايكروسوفت بتوفيرها لنا في بيئة ال .net ألا و هي ال Windows Service
مقدمة :
ال Windows Services هي عبارة عن خدمات تقوم بالعمل خلف الكواليس ( في الخفاء ) في نظام التشغيل لتنفيذ عمليات معينة و ضرورية لنظام التشغيل و أيضاً للعديد من البرامج التي تعمل في بيئة الويندوز مثل مراقبة العمليات التي تتم على بعض الملفات ، و عمل ال Log Files و غيرها من المهام الحساسة و الدقيقة .
ال Windows Services في العادة لا تمتلك واجهة مستخدم (User Interface) و ذلك بسبب عدم الحاجة لتدخل المستخدم في طريقة أو سير عمل هذه الخدمات ، ففي الغالب تبدأ هذه الخدمات بالعمل بشكل أوتوماتيكي و خفي مع بداية تشغيل الويندوز .
في السابق ، كان تطوير و برمجة خدمات الويندوز مقتصراً على خبراء ال C++ ، و لكن مع دخول ال VB.net إختلفت الأمور ، و أصبحت عملية إنشاء هذه الخدمات أكثر سهولة و تطبيقاً .
و بالطبع ، نستطيع الاطلاع على خدمات الويندوز التي تعمل على جهازنا عن طريق ال Administrative Tools -> Services
فنحصل على قائمة بجميع الخدمات كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
الشرح :
نأتي الآن لعملية التطبيق العملي و برمجة خدمة الويندوز .
سأقوم في هذا الموضوع بتصميم خدمة ويندوز بسيطة لإنجاز الأمور التالية :
· إنشاء ملف نصي و من ثم القيام بتسجيل بيانات المستخدمين عند دخولهم للجهاز مثل إسم المستخدم و
تاريخ و وقت الدخول .
· تسجيل وقت إغلاق الجهاز في نفس الملف النصي الذي قمنا بإنشاءه في الخطوة السابقة .
بالطبع إخوتي الأفاضل بإمكانكم تصميم خدمات لتؤدي مهام معقدة و حساسة بحسب احتياجكم و لكني أحببت تبسيط المثال في هذا الموضوع لإيصال الفكرة .
خطوات التطبيق العملي :
أولاً ، نقوم بعمل مشروع جديد ، و من ثم نقوم باختيار خدمة ويندوز (Windows Service) كنوع المشروع ، و سأقوم بتسمية المشروع (ABSBAService) كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و بعد ذلك يظهر لنا المشروع كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
نستطيع بعد ذلك أن نغير إسم الخدمة أو أي من الخيارات المتاحة كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و الآن ، نقوم بفتح شاشة الكود الخاصة بمشروعنا و نقوم بكتابة الكود الذي نريده في ال Start Event و التي تعمل في حال بدء الخدمة و ال Shutdown Event و التي تعمل في حال إنهاء الخدمة عن طريق عمل Shutdown للجهاز كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و الآن و بعد أن انتهينا من إنجاز الكود المطلوب ، يجب علينا أن تنذكر بأن هذا المشروع هو Windows Service و ليس Windows Application و لذلك فإننا لن نستطيع تشغيل الخدمة ببساطة بالنقر المزدوج على الملف التنفيذي بعد الانتهاء من بناء المشروع كما كنا نفعل مع تطبيقات الويندوز ،
و الحل هنا بأن نقوم بإضافة ال Installer للخدمة و الذي من واجبه أن يقوم بعملية تنصيب الخدمة بالنيابة عنا .
نقوم الآن بإضافة ال Installer كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
نقوم الآن بتعديل الخيارات التي نريدها كما هو موضح في الصور التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
بالطبع هناك العديد من الخيارات الأخرى التي لم أقم بتعديلها مثل :
CanStop : و التي تحدد إذا ما كان مسموحاً للمستخدم إيقاف الخدمة .
CanPauseAndContinue : و التي تحدد إذا ما كان مسموحاً للمستخدم تعليق الخدمة و إعادة تشغيلها .
AutoLog : و التي في حال كانت قيمتها True ، فسيقوم النظام بإظافة أي عملية تحصل على هذه الخدمة مثل الإيقاف و التشغيل و غيرها في ال EventLog في الويندوز .
و الآن ، و بعد أن انتهينا من تعديل الخصائص التي نريدها للأداتين ServiceProcessInstaller و ServiceInstaller ، نقوم ببناء المشروع كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
طبعاً إلى الآن لم ننته من العمل بعد ،
فالخدمة لم يتم تنصيبها و تسجيلها في النظام لتبدء العمل .
و لتنصيب الخدمة و تسجيلها في النظام ، نقوم بتشغيل ال Command Prompt الخاص بالفيجوال ستوديو كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
نقوم الآن باستخدام الأمر InstallUtil للقيام بعملية التنصيب الفعلية ، حيث نقوم بكنابة الأمر InstallUtil مع مسار الملف التنفيذي كاملاً للخدمة كما هو موضح في المثال في الصور التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و بذلك نكون قد انتهينا من عملية برمجة الخدمة و تنصيبها بالكامل .
كما نلاحظ الآن ، إذا ما توجهنا لشاشة خدمات الويندوز فإننا نرى بأنه قد تمت إضافة خدمتنا في قائمة الخدمات كما هو واضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
قد يتساءل بعض الإخوة لماذا لم تعمل الخدمة بشكل أوتوماتيكي كما هو واضح من الصورة !!
السبب في ذلك إخوتي الأفاضل بأن الخدمة ستعمل بشكل تلقائي مع بداية تشغيل الجهاز ، و لكن إذا أردتم تشغيلها فوراً بشكل يدوي فكل ما عليكم عمله هو أن تقوموا بالنقر بالزر الأيمن على إسم الخدمة و من ثم اختيار الأمر Start .
و الآن إخوتي و أخواتي الأفاضل ، وصلنا للنقطة الأخيرة ،
ألا و هي إلغاء تنصيب الخدمة من الجهاز .
في حال أردنا إلغاء تنصيب الخدمة من الجهاز فنقوم بتشغيل ال Command Prompt الخاص بالفيجوال ستوديو كما أوضحنا سابقاً ، و نقوم باستخدام الأمر InstallUtil و لكن هذه المرة نقوم باستخدام الخيار U/ كما هو موضح في الصور التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
ملاحظة :
· تجنبوا استخدام أدوات الواجهة الرسومية في الخدمات .
· في حال أردتم إجراء أي تعديلات على الخدمة ، فيتوجب عليكم بأن تقوموا بعمل Uninstall و من ثم بعد الانتهاء من التعديلات ، قوموا بعمل Install مرة أخرى .
أخيراً ، إخوتي و أخواتي الأكارم ،
أتمنى أن أكون قد وفقت في طرح هذا الموضوع ، و أن أكون قد شرحته بشكل مبسط و مفيد للجميع .
منقول
برمجة خدمات الويندوز Windows Service باستخدام Visual Basic.net
إخوتي و أخواتي الأكارم أعضاء منتديات ساسو سوفت،
اليوم سأقوم بشرح أحد أنواع المشاريع الرائعة التي قامت مايكروسوفت بتوفيرها لنا في بيئة ال .net ألا و هي ال Windows Service
مقدمة :
ال Windows Services هي عبارة عن خدمات تقوم بالعمل خلف الكواليس ( في الخفاء ) في نظام التشغيل لتنفيذ عمليات معينة و ضرورية لنظام التشغيل و أيضاً للعديد من البرامج التي تعمل في بيئة الويندوز مثل مراقبة العمليات التي تتم على بعض الملفات ، و عمل ال Log Files و غيرها من المهام الحساسة و الدقيقة .
ال Windows Services في العادة لا تمتلك واجهة مستخدم (User Interface) و ذلك بسبب عدم الحاجة لتدخل المستخدم في طريقة أو سير عمل هذه الخدمات ، ففي الغالب تبدأ هذه الخدمات بالعمل بشكل أوتوماتيكي و خفي مع بداية تشغيل الويندوز .
في السابق ، كان تطوير و برمجة خدمات الويندوز مقتصراً على خبراء ال C++ ، و لكن مع دخول ال VB.net إختلفت الأمور ، و أصبحت عملية إنشاء هذه الخدمات أكثر سهولة و تطبيقاً .
و بالطبع ، نستطيع الاطلاع على خدمات الويندوز التي تعمل على جهازنا عن طريق ال Administrative Tools -> Services
فنحصل على قائمة بجميع الخدمات كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
الشرح :
نأتي الآن لعملية التطبيق العملي و برمجة خدمة الويندوز .
سأقوم في هذا الموضوع بتصميم خدمة ويندوز بسيطة لإنجاز الأمور التالية :
· إنشاء ملف نصي و من ثم القيام بتسجيل بيانات المستخدمين عند دخولهم للجهاز مثل إسم المستخدم و
تاريخ و وقت الدخول .
· تسجيل وقت إغلاق الجهاز في نفس الملف النصي الذي قمنا بإنشاءه في الخطوة السابقة .
بالطبع إخوتي الأفاضل بإمكانكم تصميم خدمات لتؤدي مهام معقدة و حساسة بحسب احتياجكم و لكني أحببت تبسيط المثال في هذا الموضوع لإيصال الفكرة .
خطوات التطبيق العملي :
أولاً ، نقوم بعمل مشروع جديد ، و من ثم نقوم باختيار خدمة ويندوز (Windows Service) كنوع المشروع ، و سأقوم بتسمية المشروع (ABSBAService) كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و بعد ذلك يظهر لنا المشروع كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
نستطيع بعد ذلك أن نغير إسم الخدمة أو أي من الخيارات المتاحة كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و الآن ، نقوم بفتح شاشة الكود الخاصة بمشروعنا و نقوم بكتابة الكود الذي نريده في ال Start Event و التي تعمل في حال بدء الخدمة و ال Shutdown Event و التي تعمل في حال إنهاء الخدمة عن طريق عمل Shutdown للجهاز كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و الآن و بعد أن انتهينا من إنجاز الكود المطلوب ، يجب علينا أن تنذكر بأن هذا المشروع هو Windows Service و ليس Windows Application و لذلك فإننا لن نستطيع تشغيل الخدمة ببساطة بالنقر المزدوج على الملف التنفيذي بعد الانتهاء من بناء المشروع كما كنا نفعل مع تطبيقات الويندوز ،
و الحل هنا بأن نقوم بإضافة ال Installer للخدمة و الذي من واجبه أن يقوم بعملية تنصيب الخدمة بالنيابة عنا .
نقوم الآن بإضافة ال Installer كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
نقوم الآن بتعديل الخيارات التي نريدها كما هو موضح في الصور التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
بالطبع هناك العديد من الخيارات الأخرى التي لم أقم بتعديلها مثل :
CanStop : و التي تحدد إذا ما كان مسموحاً للمستخدم إيقاف الخدمة .
CanPauseAndContinue : و التي تحدد إذا ما كان مسموحاً للمستخدم تعليق الخدمة و إعادة تشغيلها .
AutoLog : و التي في حال كانت قيمتها True ، فسيقوم النظام بإظافة أي عملية تحصل على هذه الخدمة مثل الإيقاف و التشغيل و غيرها في ال EventLog في الويندوز .
و الآن ، و بعد أن انتهينا من تعديل الخصائص التي نريدها للأداتين ServiceProcessInstaller و ServiceInstaller ، نقوم ببناء المشروع كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
طبعاً إلى الآن لم ننته من العمل بعد ،
فالخدمة لم يتم تنصيبها و تسجيلها في النظام لتبدء العمل .
و لتنصيب الخدمة و تسجيلها في النظام ، نقوم بتشغيل ال Command Prompt الخاص بالفيجوال ستوديو كما هو موضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
نقوم الآن باستخدام الأمر InstallUtil للقيام بعملية التنصيب الفعلية ، حيث نقوم بكنابة الأمر InstallUtil مع مسار الملف التنفيذي كاملاً للخدمة كما هو موضح في المثال في الصور التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
و بذلك نكون قد انتهينا من عملية برمجة الخدمة و تنصيبها بالكامل .
كما نلاحظ الآن ، إذا ما توجهنا لشاشة خدمات الويندوز فإننا نرى بأنه قد تمت إضافة خدمتنا في قائمة الخدمات كما هو واضح في الصورة التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
قد يتساءل بعض الإخوة لماذا لم تعمل الخدمة بشكل أوتوماتيكي كما هو واضح من الصورة !!
السبب في ذلك إخوتي الأفاضل بأن الخدمة ستعمل بشكل تلقائي مع بداية تشغيل الجهاز ، و لكن إذا أردتم تشغيلها فوراً بشكل يدوي فكل ما عليكم عمله هو أن تقوموا بالنقر بالزر الأيمن على إسم الخدمة و من ثم اختيار الأمر Start .
و الآن إخوتي و أخواتي الأفاضل ، وصلنا للنقطة الأخيرة ،
ألا و هي إلغاء تنصيب الخدمة من الجهاز .
في حال أردنا إلغاء تنصيب الخدمة من الجهاز فنقوم بتشغيل ال Command Prompt الخاص بالفيجوال ستوديو كما أوضحنا سابقاً ، و نقوم باستخدام الأمر InstallUtil و لكن هذه المرة نقوم باستخدام الخيار U/ كما هو موضح في الصور التالية :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات]
ملاحظة :
· تجنبوا استخدام أدوات الواجهة الرسومية في الخدمات .
· في حال أردتم إجراء أي تعديلات على الخدمة ، فيتوجب عليكم بأن تقوموا بعمل Uninstall و من ثم بعد الانتهاء من التعديلات ، قوموا بعمل Install مرة أخرى .
أخيراً ، إخوتي و أخواتي الأكارم ،
أتمنى أن أكون قد وفقت في طرح هذا الموضوع ، و أن أكون قد شرحته بشكل مبسط و مفيد للجميع .
منقول