أريد أن تقوم خدمة C# Windows الخاصة بي بتحديث نفسها تلقائيًا

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

  •  01-07-2019
  •  | 
  •  

سؤال

هل هناك إطار عمل يمكن استخدامه لتمكين خدمة C# Windows من التحقق تلقائيًا من وجود إصدار أحدث وترقية نفسها؟يمكنني بالتأكيد كتابة تعليمات برمجية لتحقيق ذلك، لكنني أبحث عن إطار عمل تم تنفيذه بالفعل (والأهم من ذلك) اختباره.

تحرير] هنا رابط لسؤال مماثل مع روابط للمشاريع الحديثة التي تساعد على تحقيق ذلك: مكتبة التحديث التلقائي لـ .NET؟

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

المحلول

الطريقة الوحيدة لتفريغ الأنواع هي تدمير مجال التطبيق.للقيام بذلك سيتطلب فصل طبقة الاستضافة الخاصة بك عن رمز الخدمة المنفذة - وهذا أمر معقد جدًا.(يشبه إجراء جراحة ثقب المفتاح)

قد يكون من الأسهل إما أ) تشغيل مهمة مجمعة أو ب) اكتشاف التحديثات أثناء الخدمة ثم تشغيل عملية منفصلة تعمل على إيقاف الخدمة وتحديث التجميعات وما إلى ذلك.ثم يعيد تشغيله.

إذا كنت مهتمًا بالأول، فقد كتب قوم أنماط وممارسات MSDN كتلة تحديث التطبيق التي يمكنك تكييفها مع خدمتك.

https://web.archive.org/web/20080506103749/http://msdn.microsoft.com/en-us/library/ms978574.aspx

نصائح أخرى

لست على علم بأي أطر عمل تسهل الحلول لهذه المشكلة المحددة.

لكن ما يمكنك تجربته هو فصل منطق الأعمال الخاص بالخدمة عن رمز الخدمة الفعلي إلى مجموعات مختلفة.اطلب من تجميع الخدمة التحقق من وجود تحديثات لتجميع منطق الأعمال على فترات زمنية منتظمة، ونسخه من مصدر بعيد إذا لزم الأمر، وإلغاء تحميل تجميع BL القديم (وربما حذفه)، ثم تحميل الإصدار الجديد ديناميكيًا (لا يعد إلغاء تحميل التجميع القديم أمرًا ضروريًا) مهمة تافهة).

الحل الآخر المحتمل هو أن يكون لديك خدمة منفصلة تعمل، وتوقف الخدمة الأخرى، إذا كان هناك تحديث، ثم تقوم بتحديث الخدمة.لا يمكنك الحصول على تحديث الخدمة نفسها لأن ملف .dll قيد التشغيل لن يتوقف.

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

لا أعرف أي إطار عمل معروف يفعل ذلك.لقد فعلت هذا بنفسي، لكن هذا ليس إطارًا عامًا.

أنا أستخدم WyBuild لتحديث تطبيقاتي (بما في ذلك خدمات Windows) وهو رائع جدًا.سهل الاستخدام حقًا، وسهل التكامل مع التطبيقات الموجودة.إنه إطار عمل رائع للتحديث التلقائي...

http://wyday.com/wybuild/help/automatic-updates/windows-services-console-apps.php http://wyday.com/wybuild/help/silent-update-windows-service.php

لاحظ أنه إطار مدفوع (الترخيص لكل مطور، ويتم تضمين نسخة تجريبية مجانية)

في حالة قيام أي شخص آخر بالبحث عن هذا؛لقد وجدت هذا الرابط مثيرا للاهتمام.لم أطبق هذا الحل، ولكن يبدو أنه قد يناسبني

http://www.eggheadcafe.com/articles/20041204.asp

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

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