在我的开发工作中,重复的主题是内部插件体系结构的使用或创建。我已经看到它采用了多种方法-配置文件(XML,.conf等),继承框架,数据库信息,库等。在我的经验中:
- 数据库不是存储您的配置信息的好地方,尤其是与数据混合在一起的地方
- 尝试使用继承层次结构进行此操作需要了解有关要编码的插件的知识,这意味着插件体系结构并不是那么动态
- 配置文件可以很好地提供简单的信息,但不能处理更复杂的行为
- 库似乎运行良好,但是必须仔细创建单向依赖关系。
当我寻求与我合作过的各种体系结构学习时,我也在寻求社区的建议。您如何实现SOLID插件架构?您最严重的失败是什么(或您所见过的最严重的失败)?如果要实现新的插件体系结构,该怎么办?您所使用的哪个SDK或开源项目具有良好架构的最佳示例?
我自己发现了一些示例:
- Perl的Module :: Plugable和IOC,用于在Perl中进行依赖注入
- 用于依赖项注入的各种Spring框架(Java,.NET,Python)。
- 一个带有Java列表的SO问题(包括Service Provider Interfaces)
- 一个SO问题的C ++指向布斯博士的文章
- 有关ASP.NET MVC特定插件概念的SO问题
这些示例似乎发挥了各种语言优势。好的插件架构是否必然与该语言相关?最好是使用工具来创建插件体系结构,还是在自己的以下模型上进行构建?