如何使用MVC Web应用程序为ASP.NET设计插件体系结构

时间:2009-09-01 23:14:48

标签: asp.net-mvc architecture plugins

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

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

我想设计它,以便它对应用程序的所有组件或至少大多数组件具有某种插件功能。

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

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

Web应用程序甚至可以这样吗?或者我只是在做梦?

3 个答案:

答案 0 :(得分:3)

这绝对有可能。

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

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

为了鼓励,我们使用企业产品完成了这项工作,该产品为网站的“管理”界面提供了通用框架。开发人员只需要插入一个构建特定属性页的插件dll,它们会显示在管理界面菜单中,所有导航都会被处理掉,而他们的dll只需要担心自己的域逻辑。

答案 1 :(得分:1)

总是有dll-way定义插件所遵循的一些接口。

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

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

答案 2 :(得分:0)

PS:我在S.O.找到了另一个人。跟我问同样的问题: Plug-in architecture for ASP.NET MVC对于研究相同主题的人来说,这可能很有用。