บริการ Windows หรือ Windows Task Scheduler?


10

ฉันวางแผนที่จะสร้างโปรแกรมอรรถประโยชน์ซึ่งจะทำการสืบค้นฐานข้อมูลและเก็บข้อมูลบางอย่าง (บนตารางอื่นในฐานข้อมูล) มันเป็นยูทิลิตี้แบบมัลติเธรดและจำเป็นต้องทำงานทุก ๆ 5 หรือ 10 นาที / หลังจากนั้นอาจมีสามครั้งในหนึ่งวัน

ฉันเห็นสองตัวเลือกเพื่อให้บรรลุสิ่งนี้ในการเขียนโปรแกรม C # / DotNet

  • การสร้างบริการ windows โดยมีวิธีจับเวลาภายใน
  • โปรแกรมคอนโซลและกำหนดเวลาโดยใช้ windows task scheduler

คุณชอบอันไหนและทำไม?


3
ฉันคิดว่าคำถามนี้เหมาะกว่าสำหรับ SO
— Naveen

1
จริงๆแล้วนั่นเป็นคำถามการออกแบบซอฟต์แวร์ที่ดีและคุณน่าจะมีคำตอบที่ดีอย่างน้อยห้าข้อในห้าชั่วโมงเมื่อคุณถามมันดังนั้น
— sharptooth

1
ฉันโหวตให้ปิดนี่เป็นของ SO
— Jaco Pretorius

2
คำถามนี้นำไปสู่การอภิปรายส่วนตัวและ / หรือขยายการอภิปรายเกี่ยวกับประโยชน์ของทั้ง มันเป็นอย่างมากในหัวข้อที่นี่และเป็นส่วนตัวและโต้แย้งที่นั่น

2
ฉันไม่แน่ใจฉันคิดว่าประโยคสุดท้าย "คุณชอบอันไหนและทำไม" จะทำให้เกิดบ็อตใกล้ ๆ ดีกว่าที่นี่ตั้งแต่คำตอบที่เกิดขึ้นจริงสามารถมาถึงที่นี่
— TheLQ

คำตอบ:


2

ความคิดเห็นจากเพื่อนร่วมงานของฉันเมื่อวานนี้เกี่ยวกับหัวข้อเดียวกันนี้

"จะมีความเห็นที่แตกต่างอยู่เสมอในเรื่องนี้ ... กฎง่ายๆของฉันคือถ้าคุณต้องการบางสิ่งบางอย่างที่ทำงานทุก ๆ ห้านาที (และคุณไม่สนใจว่าเวลามันจะวิ่งหรือนานแค่ไหนวิ่ง) หรือสิ่งที่ ตอบสนองต่อเหตุการณ์ใช้บริการหากคุณต้องการบางสิ่งบางอย่างที่จะทำงานในเวลาที่เฉพาะเจาะจงในแต่ละวันและคุณแน่ใจว่าจะไม่มีการตักเกินใช้ Scheduler ที่มาพร้อมกับระบบปฏิบัติการหากคุณต้องการไฮบริดทั้งใช้ วิธีแก้ปัญหาสำหรับกรณีที่แตกต่างกันหรือค้นหาบางสิ่งบางอย่างจากชั้นวาง (อาจเป็น Quartz. Net) "

บทความของ Jon Galloway จากปี 2005 "// TODONT: ใช้บริการ Windows เพียงเพื่อเรียกใช้กระบวนการตามกำหนดเวลา" เป็นการอ่านที่ดี ฉันขอแนะนำให้อ่านความคิดเห็นเพราะการสนทนายังดำเนินต่อไปจนถึงทุกวันนี้และให้ข้อโต้แย้งที่ดีเช่นกัน

ส่วนตัวผมเห็นด้วยกับเพื่อนร่วมงานของฉันในเรื่องนี้ ทำให้มันเรียบง่ายนานเท่าที่จะทำได้ และหากคุณกำลังปรับใช้กับเซิร์ฟเวอร์ Win2008 ให้ตรวจสอบตัวกำหนดเวลางานและคุณสมบัติทั้งหมดที่ตัวกำหนดตารางเวลามาตรฐานเสนอ สำหรับฉันนักฆ่าคือการเริ่มงานที่กำหนดไว้เมื่อมีเหตุการณ์เกิดขึ้น


4

บริการต่าง ๆ ใช้เพื่อจุดประสงค์ด้านการบริหารหรือเพื่อเสนอบริการให้กับแอพพลิเคชั่นหลายตัว

ตารางจะใช้สำหรับการทำงานหลายครั้งซึ่งไม่จำเป็นต้องได้รับอนุญาตพิเศษ


3

ฉันได้ยินข้อโต้แย้งเกี่ยวกับการใช้ Windows Scheduler แต่เลือกที่จะเขียนแอปของฉันเป็นบริการเสมอ ตอนแรกฉันคิดว่ามันจะเป็นทางออกที่ดีกว่าในสภาพแวดล้อมแบบคลัสเตอร์ แต่นั่นไม่จริงเลย บรรทัดล่างคือฉันไม่ได้มีเหตุผลที่ดีกว่า "รู้สึก" เหมือนการออกแบบที่ดีกว่า


0

ทำไมคุณไม่ลอง Quartz.net
ฉันใช้มันเพียงครั้งเดียวและฉันบอกได้เลยว่ามันเป็นกรอบที่มีประสิทธิภาพในการสร้างตัวจัดตารางเวลาของคุณเองและให้บริการสร้างไว้ล่วงหน้าที่จะเรียกใช้งานตามกำหนดเวลาของคุณ (เก็บไว้ในฐานข้อมูล ) http://quartznet.sourceforge.net/


2
-1 นี่ไม่ตอบคำถามเลยและน่าจะเหมาะกับความคิดเห็นมากกว่า
— Tamara Wijsman

0

หากคุณต้องการให้ผู้ใช้มีการควบคุมมากขึ้นโดยไม่ต้องสร้างมันให้ใช้ Task Scheduler ดูเหมือนว่า Google จะทำสิ่งนี้กับการอัปเดตแอป จัดการงานได้ไม่ยากทั้งนี้ขึ้นอยู่กับผู้ใช้ นำผู้ใช้ออกจากลูปและสร้างบริการ คนส่วนใหญ่จะไม่แตะต้องพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.