Dịch vụ Windows hoặc Trình lập lịch tác vụ Windows?


10

Tôi đang lên kế hoạch tạo ra một tiện ích, nó sẽ truy vấn cơ sở dữ liệu và lưu trữ một số thông tin (trên một bảng khác trong cơ sở dữ liệu). Đây là một tiện ích đa luồng và yêu cầu chạy cứ sau 5 hoặc 10 phút / lần sau có thể là ba lần trong một ngày.

Tôi thấy hai tùy chọn để đạt được điều này trong lập trình C # / DotNet.

  • tạo dịch vụ windows có cách tiếp cận hẹn giờ bên trong nó.
  • một chương trình điều khiển và lên lịch cho nó bằng cách sử dụng bộ lập lịch tác vụ của windows.

Bạn thích cái nào hơn và tại sao?


3
Tôi nghĩ rằng câu hỏi này phù hợp hơn với SO
Naveen

1
Thực sự, đó là một câu hỏi thiết kế phần mềm tốt và bạn có thể sẽ có ít nhất năm câu trả lời tốt trong năm giờ sau khi bạn hỏi nó trên SO.
sharptooth

1
Tôi đã bỏ phiếu để đóng, điều này thực sự thuộc về SO
Jaco Pretorius

2
Câu hỏi này gợi ra một cuộc thảo luận chủ quan và / hoặc mở rộng về giá trị của một trong hai. Đó là rất nhiều về chủ đề ở đây và chủ quan và tranh luận ở đó.

2
Tôi không chắc chắn, tôi nghĩ câu cuối cùng "Bạn thích cái nào hơn và tại sao?" sẽ kích hoạt các bot gần đó. Nó tốt hơn ở đây vì câu trả lời thực tế có thể được nhận ở đây
TheLQ

Câu trả lời:


2

Nhận xét từ một đồng nghiệp của tôi từ hôm qua về chủ đề rất giống nhau này

"Luôn luôn có một ý kiến ​​khác nhau về vấn đề này ... Quy tắc ngón tay cái của tôi sẽ là nếu bạn cần thứ gì đó chạy cứ sau năm phút (và bạn không quan tâm thời gian nó chạy hoặc thời gian chạy là bao lâu) hoặc thứ gì đó đáp ứng với các sự kiện, sử dụng một dịch vụ. Nếu bạn cần một thứ gì đó để chạy vào một thời điểm cụ thể mỗi ngày và bạn chắc chắn rằng sẽ không có vòng đua, hãy sử dụng Trình lập lịch được cung cấp với HĐH. Nếu bạn cần kết hợp, hãy sử dụng cả hai giải pháp cho các trường hợp khác nhau hoặc tìm thứ gì đó ngoài giá. (Có thể là Quartz .Net) "

Bài viết của Jon Galloway từ năm 2005 "// HÔM NAY: Sử dụng Dịch vụ Windows chỉ để chạy một quy trình theo lịch trình" là một cách đọc tốt. Tôi đề nghị rằng các ý kiến ​​cũng nên được đọc bởi vì cuộc thảo luận vẫn tiếp tục cho đến ngày hôm nay và cũng cung cấp một số phản biện tốt.

Cá nhân, tôi đồng ý với đồng nghiệp của tôi về điều này. Giữ nó đơn giản càng lâu càng tốt. Và nếu bạn đang triển khai đến máy chủ Win2008, hãy kiểm tra Trình lập lịch tác vụ và tất cả các tính năng mà trình lập lịch chuẩn cung cấp. Đối với tôi, kẻ giết người là bắt đầu một nhiệm vụ theo lịch trình khi một sự kiện xảy ra.


4

Các dịch vụ được sử dụng cho mục đích quản trị hoặc để cung cấp dịch vụ cho nhiều ứng dụng.

Lịch biểu được sử dụng để chạy một tác vụ nhiều lần mà không nhất thiết phải có thêm quyền.


3

Tôi đã nghe các đối số để sử dụng Trình lập lịch của Windows nhưng luôn chọn cách viết ứng dụng của tôi dưới dạng dịch vụ. Lúc đầu tôi nghĩ nó sẽ là một giải pháp tốt hơn trong một môi trường co cụm nhưng điều đó không thực sự đúng. Điểm mấu chốt là tôi không có lý do chính đáng nào khác ngoài việc "cảm thấy" thích thiết kế tốt hơn.


0

Tại sao bạn không thử Quartz.net
tôi đã sử dụng nó một lần và tôi có thể nói đó là một khung mạnh mẽ để tạo lịch trình của riêng bạn và nó cung cấp một Dịch vụ được xây dựng sẵn sẽ chạy Công việc theo lịch trình của bạn (được lưu trữ trong cơ sở dữ liệu hoặc chỉ trong một tệp XML ) http://quartznet.sourceforge.net/


2
-1 Điều này hoàn toàn không trả lời câu hỏi và sẽ phù hợp hơn khi nhận xét.
Tamara Wijsman

0

Nếu bạn muốn người dùng có nhiều quyền kiểm soát hơn mà không cần phải xây dựng nó, hãy sử dụng Trình lập lịch tác vụ. Có vẻ như Google thực hiện điều này với bản cập nhật ứng dụng của họ. Tùy thuộc vào người dùng, không khó để quản lý tác vụ. Đưa người dùng ra khỏi vòng lặp và tạo một dịch vụ. Hầu hết mọi người sẽ không bao giờ chạm vào chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.