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