2013-04-24 66 views
0

我有一個設計級別的問題,我不知道如何解決這個問題,但基本上我想實現的是,我有一個基於控制檯的應用程序,它執行基於輸入作業的某些任務(這是一個XML文件,由執行作業的所有細節組成),還有一個基於Web的應用程序可創建作業。應用領域設計

目前,我們手動複製XML文件並通過傳遞XML文件作爲參數來調用基於控制檯的應用程序。

有無論如何,我可以設計一個應用程序,在基於Web的應用程序中創建的所有作業都被傳遞給隊列。

可能有2個飢餓的基於控制檯的應用程序等待作業排隊等待(以循環方式),只要他們找到一個作業就會開始執行作業。

還有一件事,我在想什麼有什麼辦法可以從技術上控制基於控制檯的應用程序的數量,比如說我有50個職位坐在隊列中,我可以啓動10個基於控制檯的應用程序爲50個工作而不是2個工作,這樣工作就可以完成。

請讓我知道如果你需要任何更多信息,提前

回答

0

我不喜歡的東西如下

感謝。

我有一個Windows服務是一個orchestrator,這意味着它使用Quartz.NET來安排任務。有4種類型的任務被定期運行:

  • 文件registrator任務:拿起新的XML文件,並在數據庫中註冊他們
  • 一批裝載機:創建一批已註冊的文件
  • 批量提取器:創建新批作業
  • 作業執行者:執行作業。

此窗口服務除了調度這些任務沒有其他邏輯。作業執行器任務甚至可以並行運行多次。

實際的邏輯是在從Windows服務中調用的(批量導入)WCF服務中。這樣管理網站等其他應用程序就可以使用批量導入WCF服務,以便他們可以獲取文件,批次,進度等列表,並允許對它們進行操作。

作爲結果執行的典型域邏輯oj作業執行是在批處理導入服務中調用的專用域服務中完成的。

也可以設置屬性來指示步驟應該是自動還是手動,批次是否是事務性的,等等。這種方式非常靈活,並且可以在出現問題時恢復原狀,因爲所有內容都保存在具有各種狀態的數據庫中。它也是可擴展的:您可以將所有內容放在多臺機器上,平衡WCF服務並且平行執行作業。