ASP.Net webforms应用程序具有可插入的体系结构问题

时间:2010-09-16 12:03:42

标签: asp.net architecture plugins webforms

有人告诉我要制作一个可插入的网络应用程序。与webforms。我们的想法是让一个带有插件主机的基本Web应用程序加载任何插件并与之相关的网页。

例如,我的MyHostApplication 包含母版页和default.aspx文件。在编译时,基本上项目将在主目录中包含文件 Site.Master Default.aspx ,并在 MyHostApplication.dll 中包含bin /“dir。所有插件都可以在目录“plugins /”中说。 然后我创建了计算器插件作为一个新项目,其中包含此网页 Calc.aspx ,以及目录“bin /”中的程序集Calculator.dll ...或者web.config我可能会把它移动到某个地方。 我可以使用LoadAssembly在主机应用程序中加载程序集并获取主类(我作为基类,所有插件基类继承此类)并从属性中获取一些信息,如名称,版本,位置菜单等。

现在出现问题 - 当我导航到 /plugins/Calculator.aspx 时(让我们从插件主机构建的工具菜单中说出来)它会加载它的程序集并且不知道主要的主机应用程序。但它必须适用于主要应用。此外,如果我可以使用插件页面的主应用程序的主页面,它应该是最好的。

有些人可以在这里给我一些帮助提示吗?提前谢谢。

3 个答案:

答案 0 :(得分:0)

不是您问题的直接答案,但是您已经探索过MEF

它基于相同的原则,可以帮助您在想要实现的目标上取得先机。

答案 1 :(得分:0)

Attributes作为一种集成机制非常有用。

方法非常简单,基本上我们想要识别webforms,以便我们可以动态地找到它们;使用属性和反射为解决方案细节提供了很大的灵活性。

首先,您需要设计(在纸上/白板/头脑中)一组属性,这些属性将为您提供您所追求的内容 - 您是否只想使用属性“找到”网络表单 - 或者您是否也想使用它们来提供其他有用的元数据?

之后:

  • 在您的系统中适当的地方开发实际属性(可能是一个常见的osme类库)。
  • 使用属性
  • 装饰每个WebForm
  • 开发一个uses reflection组件,用于定位使用适当属性修饰的类(webforms)
  • 使用反射过程中提取的数据构建导航。

如果您不熟悉属性,this tutorial可能有帮助。

答案 2 :(得分:0)

感谢您的回复!最后我得到了我正在寻找的东西:) ...我看到了一个仅用于我的案例的教程,这是用MVC v.2解决的,非常适合我的想法。

可以找到here。这是非常基本的,但它解决了插件页面和母版页使用的问题,我们也可以很容易地管理插件和版本的许可证。另一件事是我喜欢与它密切配合使用的jQuery,所以这个想法对我有用:)