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