2009-06-03 97 views
0

我有一個基本的任務框架,其中的任務,例如:部署和運行.NET程序集

  • 做一些內容處理
  • 報告生成
  • 錯誤日誌守望
  • 郵件

被封裝在一個ITask接口,其中有一個Run方法和其他狀態相關的成員。

這些任務要麼按計劃持續運行,要麼按需運行。它們可以作爲Windows服務託管,也可以作爲工作機器上的控制檯應用程序託管。

主機應用程序運行在使用TaskRunner類一組任務,它可以使用時間表,穿線等

我希望能夠以更自動化的方式部署到員工的機器任務比執行發佈和做更新。

基本上,我希望能夠發送一個ITask接口(或其他子組件)的進程和實現,以便按某個時間表或某些設置運行。

我知道我可以動態加載程序集,而且我也看到:MEF

什麼是最好的方式去做這件事?我應該構建一個實現並將這些DLL發佈到工作進程可以讀取它們的已知目錄中嗎?我應該將DLL作爲二進制發佈到數據庫,供工作人員閱讀嗎?

回答

1

無論哪種方式將工作。在我看來,你喜歡的將取決於你的操作要求。

如果您已經安裝好了數據庫,並且您希望任務能夠被嚴格管理和查詢,並且如果您有許多其他屬性需要與某個任務相關聯,則可以使用數據庫它能夠執行嚴格的模式和查詢/更新功能將是事情。

如果您的環境比較鬆散,那麼您沒有安裝db服務器,而您只是希望能夠將任務推出,共享文件系統或只是文件放置會更有意義。

如果您沒有看到強烈的偏好,並且您希望在模型中具有靈活性,請封裝發佈和加載內容,以便您可以輕鬆配置文件系統或數據庫,或者一些其他提供者。

在任何一種情況下,動態加載程序集並調用它都很容易。

+0

你知道任何好的方法,或有關部署程序集到數據庫的文章?我很好奇現有的最佳實踐,如果有的話,關於構建程序集的過程,爲它生成二進制文件,將其保存到數據庫,然後從數據庫加載它。也許一個MSBuild任務? – eulerfx 2009-06-04 18:08:42

1

我的建議是查看Codeplex上的WPF CAB項目。在該項目中,它具有將新dll註冊爲實現接口IModule的模塊的概念。

您可以遵循相同的模式只使用ITask,然後調用ITask.RunTask()或等效。

+0

聽起來好像eulerfx已經放棄了那部分。他問的是物理部署。 – Cheeso 2009-06-03 16:17:57