2012-04-17 47 views
0

我想在C#中開發一個長時間運行的數據饋送程序。數據處理將在多臺服務器上運行,並且會有一種長時間運行的隊列,一旦前一個文檔的處理完成,數據將被送入數據處理軟件。長時間運行的程序和數據處理

我該怎麼做?它可能會處理分散到5個單獨服務器中的10,000個文檔,並且將使用服務器是否繁忙以及服務器已處理多少個文檔來分發文檔。通常的負載平衡標準。我可以編寫一個Windows應用程序來持續監視服務器並相應地提供/發送數據。我應該使用WCF服務嗎? Windows窗體應用程序? Windows消息隊列還是應該構建自己的消息隊列?數據饋送基本上會持續進行,因爲每個單獨的文檔可能需要20-30分鐘,並且有一萬個文檔。基本上我不希望飼養計劃在任何情況下都會崩潰/停止。

您會使用哪種軟件和方法來開發此功能?任何指針,猜測和想法?

回答

0

,您應該使用Windows服務(在Visual Studio中的一種FO Windows應用程序):

Walkthrough: Creating a Windows Service Application in the Component Designer

如果您在控制面板中配置它們就會每當操作系統啓動時啓動,即使沒有用戶登錄。還需要使用有權訪問必須讀取/寫入的文件的帳戶來啓動該服務。您可以專門爲此創建一個帳戶。

Windows service(這也解釋瞭如何做前一段的事情)

這是絕對必要的是什麼,你捕獲所有異常,作爲一個簡單的未處理的異常會突然停止服務。

您可以使用多種方法對作業進行排隊,但我建議您使用與數據庫表一樣簡單的方法。該表可以具有定義作業所需的列,並且還可以包含一個列,用於將過程標記爲待處理/已啓動/成功完成/已完成對於所有額外的信息(開始和結束時間,處理計算機等) 。您應該使用事務來保護獲取下一個待處理作業的操作,並將其設置爲由服務器啓動以避免服務器之間的衝突。

你不應該做一個複雜的負載平衡程序。如果您確實需要,可以將線程優先級設置爲較低級別,以便它不會減慢其他進程。

相關問題