如何为ASP.NET MVC Web应用程序设计插件架构

9

介绍: 我知道这个问题可能很广泛,如果没有我提出具体的问题,回答起来会太困难。所以我只是想要一些方向,或者一个简短的高层次的设计解释,或者已经有一些框架可以帮助我入门...我不确定..我以前从未设计过插件架构,所以也许你可以指点我在网上学习的一些资源/示例,以便我能够自己想出解决方案。

我的问题细节: 我的意图是为我正在ASP.NET MVC中构建的新宠物项目创建一个插件架构。

我希望设计它具有某种形式的插件能力,适用于所有或至少大多数应用程序组件。

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

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

像这样的Web应用程序是否可能?还是我只是在做梦?


我一直在思考同样的事情,并有几个想法。请直接通过 spurious.thought[at]gmail 联系我。 - Curtis Shipley
3个回答

3
肯定是可以的。 您需要定义一个包含所有插件功能的完整接口。您应该通过区分应用程序的“核心”和可扩展性点来处理它。例如,插件将在哪里被访问?它们会成为页面上的选项卡或侧边栏中的链接吗?每个插件需要具备哪些属性才能适合插件容器? 通常,插件是通过反射枚举实现插件接口的程序集来查找的。
鼓励一下,我们已经在企业产品中完成了这一点,该产品提供了一个通用框架,用于网站的“管理”界面。开发人员只需放置一个构建特定属性页的插件dll即可,它们将出现在管理界面菜单中,导航都得到了照顾,他们的dll只需要关心自己的域逻辑。

1

通常有一种dll方式,您可以定义一些插件必须遵循的接口。

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

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


0

PS:我在S.O.上找到了另一个和我一样提出同样问题的人: ASP.NET MVC插件架构 对于正在研究相同主题的人可能会有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接