الذي هو أفضل للاستخدام المتكرر الوظيفة:خدمة أو المقرر المهمة ؟

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

سؤال

لدي مهمة تحتاج إلى تشغيل كل 30 ثانية.أنا يمكن أن تفعل أحد أمرين:

  1. كتابة سطر الأوامر التطبيق الذي يعمل على مهمة واحدة ، ينتظر 30 ثانية يعمل مرة أخرى ثم يخرج.لا يمكن جدولة هذه المهمة مع المهام المجدولة في ويندوز لتشغيل كل دقيقة

  2. تكتب الخدمة التي يدير المهمة مرارا وتكرارا أثناء الانتظار 30 ثانية بين كل تشغيل.

رقم 1 هو أكثر تافهة ، في رأيي ، وأود أن تختار أن تفعل ذلك بهذه الطريقة بشكل افتراضي.أنا wimping ؟ هل هناك سبب لماذا ينبغي أن تجعل هذه الخدمة وليس من المقرر المهمة ؟ ما هي إيجابيات وسلبيات على حد سواء و التي سوف تختار في نهاية المطاف ؟

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

المحلول

قرأت لطيفة بلوق وظيفة حول هذا السؤال في الآونة الأخيرة.فإنه يذهب إلى الكثير من الأسباب لماذا يجب أن لا تكتب الخدمة لتشغيل العمل المتكررة.بالإضافة إلى ذلك, وقد تم طرح هذا السؤال من قبل:

https://stackoverflow.com/questions/390307/windows-service-vs-scheduled-task خدمة Windows أو المهمة المجدولة التي ربما تفضل ؟

من مزايا استخدام المهمة المجدولة ، هو أنه إذا كان هناك بعض المخاطر المحتملة للمشاركة مع تشغيل الخدمة مثل تسرب الذاكرة أو معلقة شبكة اتصال ، ثم خدمة windows يمكن أن يتعطل أرونج لفترة طويلة مما يؤثر سلبا على المستخدمين الآخرين.من ناحية أخرى, المهمة المجدولة هو مكتوب أن تكون قصيرة التشغيل ، حتى لو كان لا تسرب تأثير الحد.

من ناحية أخرى, شخص ما في واحد من الأسئلة أعلاه وعلق بأن جدولة له حد من دقة في مكان ما في حدود 1 دقيقة, لذلك قد نرى أن جدولة غير قادر على تشغيل المهمة الخاصة بك في كل 30 ثانية مع دقة.

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

نصائح أخرى

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

إذا كنت تقدم العمل الذي يعمل مرة واحدة في اليوم (أو بضع مرات في اليوم), ثم أذهب للخيار 1 - باستخدام مهمة مجدولة.

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

أيضا ، خدمة يمكن الحفاظ على الموارد في الذاكرة, مثل القراءة الإدخال من ملف ، لا تملك إلا أن تفعل هذا في بدء الخدمة ، وليس كل 30 ثانية.

30 ثانية هي جميلة الفاصل القصير (نسبيا) بين دورات المعالجة.مثل الآخرين لدي مخاوف بشأن جدولة المهام وأخشى مثل هذا الفاصل القصير فقط مجمع المسائل التي قد تواجهها إذا كنت أخذت هذا النهج.لو كان هذا المشروع بالتأكيد سوف تذهب مع الخدمة.

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