2009-12-09 31 views
5

Chúng tôi muốn có một số hành động định kỳ được thực hiện bởi dịch vụ WCF của chúng tôi được lưu trữ trong IIS. Cách tốt nhất để làm việc này là gì? Việc tạo bộ hẹn giờ không phải là giải pháp tốt. Việc tạo ra một dịch vụ cửa sổ hoạt động như một loại nhịp tim trông giống như một giải pháp vấn đề, nhưng nó vẫn không có mùi tốt. Cách tiếp cận nào sẽ là một giải pháp tốt cho vấn đề này?Nhiệm vụ định kỳ bên trong dịch vụ WCF được lưu trữ trong IIS

+0

Để làm rõ điều này một chút. Nó không phải là một nhiệm vụ bảo trì, mà là một nhiệm vụ cần được thực hiện một lần mỗi giờ để kiểm tra xem nó có một số đăng ký để chấm dứt, một số email để gửi và loại nội dung đó không. –

Trả lời

2

Điều đó tùy thuộc vào hành động của bạn đang cố gắng thực hiện. Nếu đó là hành động làm sạch liên quan đến cơ sở dữ liệu, ví dụ: xóa các giỏ hàng mồ côi, bạn có thể lên kế hoạch cho một công việc cho điều này trong cơ sở dữ liệu của bạn lựa chọn, giống như công cụ làm việc rất đáng tin cậy của SQL Server. Một dịch vụ Windows sẽ là một ứng cử viên tuyệt vời nếu nó là một hành động dựa trên hệ điều hành như làm sạch/xóa định kỳ các tệp vv. Vì một dịch vụ IIS/WCF thường được thiết kế nhiều hơn để xử lý các phản hồi bên ngoài, tôi không nghĩ rằng nó sẽ sai các lớp dịch vụ của hệ điều hành hoặc DB cho nhiệm vụ của bạn.

0

Tôi đã từng chạy vào các tác vụ như thế này trong các ngày PHP của mình, khi tôi muốn lên lịch gửi email vào một thời điểm nhất định. Sau nhiều tháng mày mò (chủ yếu là cố gắng xử lý các cuộc gọi đến một trang có thể không bao giờ đến), cuối cùng tôi đã đi đến kết luận rằng một bit mã không quốc tịch cơ bản không phải là nơi để làm điều đó, và lên lịch một công việc cron để kích hoạt từng đêm.

Tôi chắc chắn khuyên bạn nên đi xuống tuyến đường của một công việc được kích hoạt bên ngoài (trong SQL, dịch vụ cửa sổ, v.v ...) và xử lý các hoạt động của bạn từ đó. Cơn đau, như tôi biết với chi phí của tôi, không đáng để trả lại.

0

Tôi đã vật lộn với điều này, và trong một số trường hợp cần dọn dẹp, chỉ cần thực hiện tác vụ không đồng bộ (nền) ở mặt sau của một chức năng chung để làm sạch giai đoạn, tức là On GetCommonList(), Tôi làm một kiểm tra trong cài đặt/appsetting cho lastrun và sau đó kick nó đi một lần một ngày hoặc mỗi 5 phút, vv Bằng cách đó, nếu ứng dụng đi đến đồng cỏ xanh hơn (mà không xảy ra), tôi không cần phải lo lắng về bất kỳ nhiệm vụ kéo dài nào đang chạy ở đâu đó. Không hoạt động trong mọi trường hợp, nhưng bảo mật, v.v. cũng được tự động xử lý - trong khi các dịch vụ, v.v. bạn vẫn có thể gặp vấn đề với điều đó. Chỉ cần 2c của tôi.

Các vấn đề liên quan