【问题标题】:ASP.Net webforms application with pluginable architecture problem具有可插件架构问题的 ASP.Net webforms 应用程序
【发布时间】:2011-04-13 04:35:03
【问题描述】:

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

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

现在的问题 - 当我导航到 /plugins/Calculator.aspx 时(让我们从插件主机构建的工具菜单中说)它加载它的程序集并且不知道主主机应用程序。但它必须通过主应用程序。此外,如果我能以某种方式将主应用程序的主页面与插件页面一起使用,那应该是最好的。

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

【问题讨论】:

    标签: asp.net architecture plugins webforms


    【解决方案1】:

    感谢您的回复!终于我得到了我想要的东西:) ...我看到了一个专门针对我的案例的教程,该教程用 MVC v.2 解决了,非常适合我的想法。

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

    【讨论】:

      【解决方案2】:

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

      这个方法很简单,基本上我们想识别网络表单,以便我们可以动态地找到它们;使用属性和反射在解决方案细节方面为您提供了很大的灵活性。

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

      之后:

      • 在系统中适当的位置开发实际属性(可能是 osme 类的通用库)。
      • 用属性装饰每个 WebForm
      • 开发一个组件,uses reflection 可以定位用适当属性修饰的类(网络表单)
      • 使用反射期间提取的数据来构建导航。

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

      【讨论】:

      • 我之前在纸上做了所有的案例,所以我很清楚必须做什么。对我来说,问题是,对于 webforms 的想法,当我们请求一些使用插件复制的网页时,它将如何识别基本应用程序,因为它将运行它的程序集,更多......检查许可证以及是否登录用户可以使用这个插件。使用母版页也很棘手。
      【解决方案3】:

      不是直接回答您的问题,但您是否探索过MEF

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

      【讨论】:

      • 感谢您的想法,我已经尝试过使用 MEF,但是当涉及页面或许多页面作为插件的一部分时,我并不清楚。我提出了一个使用 .Net MVC2 平台的解决方案,我在这个问题的答案中给出了答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多