【问题标题】:How to design a plugin architecture for ASP.NET with MVC Web application如何使用 MVC Web 应用程序为 ASP.NET 设计插件架构
【发布时间】:2009-09-01 23:14:47
【问题描述】:

简介: 现在我知道这个问题可能非常广泛,如果没有我提出具体的问题就很难回答。所以我所要求的只是一些方向,或者对设计的简要高级解释,或者可能已经有一些框架可以帮助我开始......我不确定......我从未设计过插件之前的架构,所以也许你可以在网络上指出一些资源/示例来帮助我学习,这样我就可以提出自己的解决方案。

我的问题详情: 我的目的是为我在 ASP.NET MVC 中构建的新宠物项目创建一个插件架构。

我想对其进行设计,使其对所有或至少大部分应用程序组件具有某种插件功能。

我想这样做的原因是,我可以在几乎零停机时间的情况下进行部署。这个想法是,当我想部署最新版本时,我会将新的 DLL 放入特定的文件夹中,然后应用程序会加载新的插件,就是这样。

例如,假设我在我的 Web 应用程序中添加了一个新的“联系人”功能,用户可以在其中搜索、添加和删除联系人。我希望能够通过插件来部署它。

对于 Web 应用程序来说,这样的事情是否可行?还是我只是在做梦?

【问题讨论】:

  • 我一直在考虑同样的事情,并且有几个想法。通过spurious.thought [at] gmail 直接与我联系

标签: asp.net-mvc architecture plugins


【解决方案1】:

这绝对是可能的。

您需要定义一个非常全面的界面来代表您的插件必须执行的所有操作。您应该通过区分什么是您的应用程序的“核心”以及可扩展点在哪里来处理它。例如,插件将在哪里访问?它们是页面上的标签,还是侧边栏中的链接?每个插件需要具备哪些属性才能适合插件容器?

通常,插件是通过查找实现插件接口的程序集通过反射枚举的。

只是为了鼓励一下,我们已经用一个企业产品做到了这一点,该产品为网站的“管理”界面提供了一个通用框架。开发者只需要插入一个构建特定属性页面的插件dll,它们就会出现在管理界面菜单中,所有导航都被处理好了,他们的dll只需要担心自己的域逻辑。

【讨论】:

    【解决方案2】:

    总有你定义插件遵循的一些接口的 dll 方式。

    但是对于 Web 应用程序,尤其是 ASP.NET MVC,您需要一个控制器、视图等。可能这些可以包含在使用准备好的控制器工厂处理的 dll 文件中,但是很难开发这些插件。 代码(或数据库)嵌入内容的一些灵感:Haacked about that

    ASP.NET MVC 版本 2 将支持区域,您可以将应用程序的某些部分放入应用程序内的不同文件夹中。这样,您只需上传一些文件,应用程序就会识别这些新文件。阅读更多 Haacked blog

    【讨论】:

      【解决方案3】:

      PS:我在 S.O. 上找到了另一个人。问和我一样的问题: Plug-in architecture for ASP.NET MVC 它可能对研究同一主题的人有用。

      【讨论】:

        猜你喜欢
        • 2010-10-06
        • 2013-12-29
        • 2013-12-08
        • 1970-01-01
        • 2012-12-30
        • 2011-09-30
        • 2021-06-02
        • 1970-01-01
        • 2014-10-26
        相关资源
        最近更新 更多