2009-09-01 63 views
9

简介: 现在我知道这个问题可能是非常广泛的,它会太硬,没有我,询问一些具体的事情来回答。所以我所要求的仅仅是一些方向,或者一个简短的高层次设计解释,或者已经有一些框架可以帮助我开始......我不确定..我从来没有设计过一个插件架构之前,所以也许有一些资源/例子,你可以指向我的网络,这将有助于我学习,以便我可以拿出我自己的解决方案。我的问题的如何设计一个插件架构,ASP.NET MVC与Web应用程序

详情: 我的目的是我想创建一个插件架构,我在构建ASP.NET MVC一只新的宠物项目。

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

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

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

对于Web应用程序甚至可能这样吗?还是我只是在做梦?

+0

我一直在想同样的事情,并有几个想法。通过spurious.thought [at] gmail直接与我联系 – 2009-09-02 18:48:16

回答

3

这绝对有可能。

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

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

仅仅为了鼓励,我们用一个企业产品做了这个工作,该产品为网站的“管理”界面提供了一个通用框架。开发人员只需要放入一个构建特定属性页面的插件DLL,并且它们出现在管理界面菜单中,所有的导航都照顾到了,他们的dll只需要担心自己的域逻辑。

1

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

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

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