سؤال

ما هو أفضل تطبيق لأكثر من خدمة خلفية في تطبيق ASP.NET؟

  1. رد الاتصال الموقت

    Timer timer = new Timer(new TimerCallback(MyWorkCallback), HttpContext, 5000, 5000);
    
  2. الموضوع أو ThreadPool

    Thread thread = new Thread(Work);
    thread.IsBackground = true;
    thread.Start();
    
  3. تطبيقBackgroundWorker

    BackgroundWorker worker = new BackgroundWorker(); 
    worker.DoWork += new DoWorkEventHandler(DoMyWork);
    worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DoMyWork_Completed); 
    worker.RunWorkerAsync();
    
  4. التخزين المؤقت مثل http://www.codeproject.com/KB/aspnet/ASPNETService.aspx (يقع في جيف أتوود آخر هنا)

أحتاج إلى تشغيل "خدمات" خلفية متعددة في وقت معين.قد يتم تشغيل خدمة واحدة كل 5 دقائق بينما قد يتم تشغيل خدمة أخرى مرة واحدة يوميًا.لن يتم تشغيل أكثر من 10 خدمات في المرة الواحدة.

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

المحلول

حسنًا، بدلاً من "خيط بسيط"، ستختار ThreadPool.

ولو كنت أنا، لقمت بتشغيله في إحدى خدمات Windows والتواصل معه عبر MSMQ.

نصائح أخرى

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

لا يتناسب أي من اقتراحات الملصق الأصلي مع أكثر من خادم واحد.

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

أريد تشغيل المهام في سياق تطبيقات الويب، من أجل أ) الحصول على التكوين من web.config (تجنب تكرار التكوين) و ب) نشره مع تطبيق الويب (سهولة النشر).و أحتاجه للعمل مع مواقع الويب المنتشرة على أكثر من خادم.

لقد وجدت طريقة واحدة فقط توفر ما أريده إلى حد ما:

(1) قم بإنشاء صفحة .aspx لكل مهمة وقم بإعداد مهمة مجدولة wget على خادم منفصل يستدعي هذا .aspx على موقع الويب.لقد قمت بتطبيق هذا الأسلوب وهو يعمل، لكني لا أحبه بنسبة 100%، بسبب تبعية المهام المجدولة ولا يمنحني القدرة على أداء المهام الثقيلة المخصصة في الخلفية

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