2010-09-16 64 views
1

有人告訴我做一個可插入的Web應用程序。與webforms。這個想法是有一個基本的Web應用程序與一個插件主機,將加載任何插件,並與他們的網頁相關。ASP.Net webforms應用程序與可插拔的體系結構問題

作爲一個例子,我有我的MyHostApplication與母版頁和default.aspx文件。在編譯時,基本上該項目將在主目錄中有Site.MasterDefault.aspx和「bin /」dir中的MyHostApplication.dll。所有插件都可以在目錄「插件/」中說。 然後,我創建計算器插件作爲一個新項目,其網頁Calc.aspx在這個direcotry和程序集Calculator.dll中的目錄「bin /」...或與web.config我可能會移動它的某個地方。 我可以使用LoadAssembly在宿主應用程序中加載程序集,並獲取主類(我作爲基類和所有插件基類繼承此類),並從屬性中獲取一些信息,如名稱,版本,位置菜單等

現在的問題 - 當我瀏覽到/plugins/Calculator.aspx(讓從我插件主機已建成的工具菜單說),它加載它的組裝和不知道關於主要的主機應用程序。但它必須成爲主要應用。另外它應該是最好的,如果不知何故我可以使用插件頁面的主應用程序的母版頁。

可以給我一些幫助提示嗎?提前致謝。

回答

0

感謝您的回覆!最後,我得到了我在找的東西:) ...我看到了一個教程,只是爲了我的案例,這是用MVC v.2解決的,完全適合我的想法。

它可以被發現here。這是非常基本的,但它解決了插件頁面和母版頁的使用問題,我們也可以很容易地管理插件和版本的許可證。另一件事是,我喜歡與它密切使用的jQuery,所以這個想法對我有用:)

0

不是直接回答你的問題,但有你探索MEF

它是基於相同的原則,可以幫助你得到一個頭在你想達到什麼樣的開始。

+0

感謝這個想法,我嘗試過使用MEF,但是當涉及頁面或多頁時作爲插件的一部分。我使用.Net MVC2平臺提供了一個解決方案,我提出了這個問題的答案。 – 2010-09-20 08:20:55

0

Attributes作爲集成機制可能非常有用。

該方法非常簡單,基本上我們要識別webforms,以便我們可以動態地找到它們;使用屬性和反射爲解決方案細節提供了很多靈活性。

首先,您需要設計(在紙上/白板/在您的頭上)一組屬性,這些屬性將會給您以後的內容 - 您是否只想使用屬性來「查找」Web表單 - 或者你想用它們來提供其他有用的元數據嗎?

之後:

  • 開發系統中的某個適當的實際屬性(可能osme類型的公共庫)。
  • 裝飾與屬性
  • 每個web窗體開發uses reflection到定位類的裝飾用適當的屬性(一個或多個)
  • 使用反射來構建導航期間提取的數據(web表單)的成分。

如果您是屬性新手,this tutorial可能會有所幫助。

+0

我在紙上做過所有的事情,所以我很清楚要做什麼。對於我來說,問題在於,有了webforms的想法,當我們請求使用插件複製的一些網頁時,它將如何識別基本應用程序,因爲它將運行它的組件,更多...檢查許可證以及是否記錄用戶可以使用這個插件。使用母版頁也很棘手。 – 2010-09-20 08:26:20