هل يمكنني الحصول على العديد من الخدمات المستضافة في نظام Windows واحد قابل للتنفيذ

StackOverflow https://stackoverflow.com/questions/1688275

سؤال

سؤالي هو نفس الشيء كما هو التالي ولكن الجواب لم يساعدني.

.NET Windows Service - خدمات متعددة في مشروع واحد

في الأساس، لدي 3 خدمات، دعونا نقول "Service1"، "الخدمة" و "Service3".

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
                                {
                                    new Service1("Service1"),
                                    new Service2("Service2"),
                                    new Service3("Service3")
                                };

ServiceBase.Run(ServicesToRun);

لدي أيضا فئات المثبتات مع Service ServiceInstaller.servicename = "ServiceX" لكل من هذه الخدمات.

عندما أستخدم Installutil، ألا أرى جميع الخدمات الثلاثة في إدارة الخدمة. ومع ذلك، عندما أبدأ منهم (أي أو كل منهم) فقط أول واحد ("Service1") قيد التشغيل.

أعلم أن هذا تافهة وربما يمكنني الحصول على مشاريع مثبت مختلفة لكل من هؤلاء ولكن في حالتي، فإنه من الناحية الدلوية أكثر منطقية استخدام واحد فقط

هو محل تقدير مساعدتكم

شكرا venu

هل كانت مفيدة؟

المحلول

قمت بإنشاء مشروع خدمة 3 (أدناه) يستخدم مثبت مشروع لكل خدمة. ثم أضفت مشروع مثبت يقوم بتثبيت الخدمات في إدارة الخدمة. هنا كان سير العمل الخاص بي:


  1. إنشاء 3 خدمات في حل في Visual Studio 2008. تسمية كل خدمة كخدمة Service1، Service2 و، Service3. (تأكد من تغيير أسماء الخدمة الفعلية بأسمائها في نافذة الخصائص.)
  2. إضافة مشروع مثبت لهذا الحل.
  3. إضافة مخرجات المشروع من مشاريع الخدمة الثلاثة إلى مشروع المثبت.
  4. تمت إضافة إجراءات مخصصة لجميع الخدمات الثلاث في المثبت لتثبيت الخدمات في إدارة الخدمة.
  5. بنيت وتثبيتها.

هذا يعطيني ثلاث خدمات متميزة في مدير الخدمات: Service1، Service2 والخدمة 3

استمتع!

http://code.google.com/p/multi-service-install/

تعديل:

لقد قمت بتحديث التعليمات البرمجية في المخزون للحصول على واحد قابل للتنفيذ ولكن اثنين من الخدمات. تقوم كل خدمة بتثبيت إلى إدارة الخدمة باسمها وقدرتها على البدء / التوقف. أعتقد أن هذا هو ما تريده، صحيح؟ هنا هو ما فعلته:

  1. أنشأ مشروع الخدمة.
  2. إضافة خدمة ثانية إلى نفس المشروع (مع اسم خدمة فريد).
  3. إضافة مثبت إلى كل من الخدمات (Servicea والخدمية).
  4. في ملف projectinstaller.designer.vb قمت بتغيير Me.Installers.addrange Line لإظهار كل من مثبتات الخدمة. (me.serviceinstaller1، me.serviceinstaller2)
  5. في نقطة الدخول الرئيسية للخدمة الرئيسية (Servicea في حالتي)، قمت بتعيين متغير Servicestorun إلى مجموعة من ServiceBase تحتوي على جميع الخدمات التي أريد تشغيلها (Servicea and ServiceB). هذه خطوة مهمة لأن مدير الخدمة يحدد خاصية استنادا إلى عدد الوسائط هنا - إما للسماح بمثيلات متعددة من نفس EXE أو مثيل واحد فقط.
  6. أضف مشروع مثبت واستخدم إخراج الخدمات.
  7. أضف إجراء مخصص باستخدام الإخراج من الخدمات.

لا يزال من الممكن تنزيل الكود من نفس الرابط على النحو الوارد أعلاه.

شكرا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top