2011-08-22 16 views
2

我正在創建某種插件系統。目前我使用WinForms應用程序來加載程序集,使用Assembly.LoadActivator.CreateInstance。 WinForms GUI應該只顯示當前加載的程序集(插件)的名稱。在服務器端運行連續的自定義應用程序邏輯。入口點?

庫中存在一個類PluginManager,它實例化並保存了所有實現者的列表。

但是,我現在想要從Silverlight應用程序訪問插件列表(僅限它們的名稱)。

我有一個在Visual Studio中創建的Silverlight 4應用程序。

這增加了兩個項目:

  • MyProject(SL 4項目)
  • MyProject.Web(含其運行.xap文件在.aspx啓動頁)

我需要的是PluginManager及其實例化的插件不僅在Silverlight頁面請求期間(通過aspx頁面)加載,而且始終加載,即使用戶從不在瀏覽器中打開Silverlight應用程序。我對這個.Web項目的入口點感到困惑。 (在控制檯應用程序中,我會將代碼放入Main方法中,在Loaded事件處理程序的WinForms中,但我不知道該.Web項目中的「服務」在哪裏啓動)。

這是如何工作的?我應該在哪裏實例化我的PluginManager.Web項目僅在HTTP請求期間短暫運行,還是可以連續運行?

+0

網站或Web應用程序? –

+0

它是作爲一個Silverlight商業應用項目模板製作的,所以VS生成了兩個項目。所以我想這是一個應用程序。不知道,但。我如何檢查? –

回答

0

將Global.asax添加到MyProject.Web。並在Application_Start()方法中執行此操作。 此方法在構建應用程序時僅調用一次。

如果您需要在構建應用程序之前運行PluginManager,則應該創建一個從您的安裝程序運行的Windows服務。該服務將實例化PluginManager。

+0

你正在談論一個Windows服務,對吧?然後什麼是與Global.asax服務交談的最佳方式。我不認爲我完全理解這個架構。 –

+0

您可以在Application_Start()中創建PluginManager - 但只有在首次請求您的Web應用程序時,纔會調用此方法一次。如果PluginManager應該在第一次請求之前實例化,例如,在安裝應用程序之後立即可以創建自己的Windows服務。但我認爲使用Global.asax的解決方案將爲您撥款 –

+0

不,實際上我想我需要該服務,因爲即使沒有對頁面進行任何請求,應用程序也應運行。現在我只需要找到一個正確的方式與SL應用程序中的Windows服務進行通信。 –

相關問題