问题描述
||
我正在设计一个应用程序的体系结构,其中将包含许多子应用程序。这些子应用程序将由我们开发,但会在稍后阶段。
我想将那些子应用程序创建为可安装的插件/模块,其中可能具有多个页面(.aspx页面),这些页面应能够与Main Core Application交互并也使用其共享数据。
我严格要求通过操作配置或添加文件或DLL的文件夹来安装插件/模块。
我的应用程序将是一个ASP.net Web应用程序。如果ASP.net MVC解决了这个问题,那么我也可以寻找。
我的应用程序将使用URL来标识要加载的模块。以下是一些我希望拥有其应用程序的URL的示例。
例如
http://www.myCoreApp.com/Module1/
http://www.myCoreApp.com/crm/
www.myCoreApp.com将托管我的核心应用程序,其中将安装我的模块。
Module1,crm,accounting和xyz是My Core App上已安装的模块。
解决方法
您应该看一下MEF(托管扩展框架)。如果您的应用程序是ASP.NET Web表单或MVC,甚至是Winforms,也没有关系
, 我会去MVC。
可以自动发现模块-可能是通过约定并通过检查某种初始化类型(如IModule)的实现来实现的。
然后,您可以在DI容器(例如Windsor)中注册控制器,以便所有“共享”组件都将被该容器注入。
高温超导