Повторяющейся темой в моей работе по разработке было использование или создание собственной архитектуры подключаемого модуля. Я видел, что он подходит ко многим параметрам - файлам конфигурации (XML, .conf и т. Д.), Структурам наследования, информации о базе данных, библиотекам и другим. По моему опыту:
- База данных не является отличным местом для хранения вашей информации о конфигурации, особенно в сочетании с данными
- Попытка сделать это с помощью иерархии наследования требует знания кодируемых подключаемых модулей, то есть архитектура подключаемых модулей не так уж динамична.
- Конфигурационные файлы хорошо работают для предоставления простой информации, но не могут обрабатывать более сложные поведения
- Библиотеки, кажется, работают хорошо, но односторонние зависимости должны быть тщательно созданы.
Поскольку я стремлюсь учиться у различных архитектур, с которыми я работал, я также жду предложений от сообщества. Как вы реализовали архитектуру плагина SOLID? Какой был ваш худший провал (или худший провал, который вы видели)? Что бы вы сделали, если бы собирались реализовать новую архитектуру плагинов? Какой SDK или проект с открытым исходным кодом, с которым вы работали, имеет лучший пример хорошей архитектуры?
Несколько примеров, которые я нашел самостоятельно:
- Модуль Perl :: Plugable и IOC для внедрения зависимостей в Perl
- Различные среды Spring (Java, .NET, Python) для внедрения зависимостей.
- SO вопрос со списком для Java (включая интерфейсы поставщика услуг )
- SO вопрос для C ++ , указывающий на статью доктора Доббс
- SO вопрос , что касается идеи конкретных плагин для ASP.NET MVC
Эти примеры, кажется, играют на разных сильных сторонах языка. Обязательна ли хорошая архитектура плагинов к языку? Лучше ли использовать инструменты для создания архитектуры плагинов, или делать это на своих собственных следующих моделях?