![]() |
1
2
我觉得这是个很好的问题。不久前,我开始使用MVC1开发一个CMS项目,在那里我想支持插件。我让它工作,这样管理员可以把一个新的插件程序集放到bin文件夹,下一个应用程序启动时,它会扫描所有程序集的IPlugin(或任何东西)并加载它们。我将部分视图嵌入到插件程序集中,使其完全独立。每个插件被放置在一个页面上时都会被赋予一个唯一的标识符,插件的控制器知道如何使用这个ID来查询自己的表(存储库)中的数据。主应用程序对插件的模式一无所知。 这里唯一的区别是,听起来像是在同一个数据库上运行多个网站,并且需要区分每个网站需要哪个插件实例。我假设你在某个地方有一个键,指示它是哪个网站,它可以通过外键为用户所在的页面选择该网站的插件。 我不确定这是不是一个答案,我只是在大声思考。希望这能对讨论有所帮助。
编辑:为了自动加载插件,我使用了NInject的能力来扫描程序集中的IModules。我的IPlugin继承自
其中kernel是Ninject.IKernel,该行将扫描与该文件模式匹配的任何程序集,因此我可以插入Weather.Plugin.dll之类的程序集。 |