2013-03-02 11 views
6

Tôi đang làm việc để nâng cấp hệ thống lập kế hoạch công việc mà chúng tôi sử dụng trong nhà sử dụng Quartz.net. Nhìn vào nguồn của phiên bản mới nhất của Quartz, tôi nhận thấy rằng nó vẫn sử dụng thực hiện hồ bơi thread riêng của nó, như trái ngược với hồ bơi thread cải thiện nhiều (hoặc bất cứ điều gì từ System.Threading.Tasks) bắt đầu vận chuyển với .NET 4.0.Quartz.net + Thư viện công việc song song

Tôi rất tò mò muốn biết liệu có ai đã triển khai thành công hệ thống lập kế hoạch công việc sử dụng Quartz.net cho các tính năng lập lịch và TPL để tạo nhóm chuỗi không. Có tương đối dễ dàng để trao đổi hồ bơi thread thạch anh cho rằng của TPL? Thạch anh còn có liên quan đến thế giới nhiệm vụ không? Ngoài ra, như được bán như tôi trên những cải tiến tuyệt vời với các hồ bơi thread 4.x (nhận thức cốt lõi, hàng đợi địa phương, cải thiện khóa, vv), là hồ bơi thread của Quartz đủ tốt cho công việc nền hạt thô điển hình và không có giá trị nỗ lực của việc ép TPL vào hỗn hợp?

Xin cảm ơn trước vì đã có bất kỳ thông tin chi tiết nào về việc sử dụng (hoặc không sử dụng) hai công cụ này cùng nhau.

Trả lời

3

Quartz.NET sẽ giải quyết vấn đề khác với TPL một chút. Quartz.NET được thiết kế để lập kế hoạch công việc định kỳ với bộ khả năng phong phú cho thời gian thực hiện . TPL mặt khác có nghĩa là để thực hiện song song hiệu suất cao của khối lượng công việc tính toán. Vì vậy, về bản chất bạn (thường) sử dụng Quartz.NET để lập lịch trình chính xác và TPL cho khối lượng công việc đồng nhất cần được hoàn thành càng nhanh càng tốt bằng cách sử dụng tất cả các tài nguyên máy tính (lõi vv).

Có nói điều này, tôi muốn nói việc thực hiện hồ bơi thread mà Quartz.NET sử dụng là khá đủ cho công việc. Cũng nên nhớ rằng Quartz.NET là .NET 3.5 tuân thủ và không thể sử dụng 4.0 tính năng duy nhất.

Tất nhiên, bạn cũng luôn có thể kết hợp cả hai trong giải pháp của mình.

+0

Cảm ơn. Tôi nghĩ rằng bạn đã xác nhận linh cảm của tôi rằng có lẽ bạn không cần một hồ bơi thread siêu turbo sạc cho chạy công việc nền không giám sát chậm. –

+0

Có bất kỳ cạm bẫy tiềm năng nào khi sử dụng cả hai kết hợp? Để đưa ra một ví dụ, tôi muốn lên lịch một công việc, khi nó được kích hoạt, lấy công việc của nó từ cơ sở dữ liệu và công việc này có thể là 50-100 tác phẩm cá nhân, mà tôi muốn làm trong Parallel.ForEach. Có điều kiện nào mà điều này sẽ nổ tung không? – avesse

+1

Họ nên làm việc cùng nhau tốt. Chỉ cần đăng nhập thông thường và xử lý các thủ tục ngoại lệ của bạn. Hãy suy nghĩ nó như thể bạn Main.cs chính sẽ ném, đó là điều tương tự. Bạn có thể muốn xem xét việc đặt lại cờ thử lại thành ngữ cảnh do lỗi, hoặc chỉ chờ đợi cho lần thực hiện tiếp theo - đó là ý tưởng tốt để làm cho công việc không cần thiết. –