Note that there are some explanatory texts on larger screens.

plurals
  1. POHow To Create a Flexible Plug-In Architecture?
    text
    copied!<p>A repeating theme in my development work has been the use of or creation of an in-house plug-in architecture. I've seen it approached many ways - configuration files (XML, .conf, and so on), inheritance frameworks, database information, libraries, and others. In my experience:</p> <ul> <li>A database isn't a great place to store your configuration information, especially co-mingled with data</li> <li>Attempting this with an inheritance hierarchy requires knowledge about the plug-ins to be coded in, meaning the plug-in architecture isn't all that dynamic</li> <li>Configuration files work well for providing simple information, but can't handle more complex behaviors</li> <li>Libraries seem to work well, but the one-way dependencies have to be carefully created.</li> </ul> <p>As I seek to learn from the various architectures I've worked with, I'm also looking to the community for suggestions. How have you implemented a SOLID plug-in architecture? What was your worst failure (or the worst failure you've seen)? What would you do if you were going to implement a new plug-in architecture? What SDK or open source project that you've worked with has the best example of a good architecture?</p> <p>A few examples I've been finding on my own:</p> <ul> <li>Perl's <a href="http://search.cpan.org/~simonw/Module-Pluggable-3.9/lib/Module/Pluggable.pm" rel="noreferrer">Module::Plugable</a> and <a href="http://www.drdobbs.com/web-development/184416179" rel="noreferrer">IOC</a> for dependency injection in Perl</li> <li><a href="http://www.springsource.org/" rel="noreferrer">The various Spring frameworks</a> (Java, .NET, Python) for dependency injection.</li> <li>An <a href="https://stackoverflow.com/questions/1613935/java-plugin-framework-choice">SO question</a> with a list for Java (including <a href="http://en.wikipedia.org/wiki/Service_Provider_Interface" rel="noreferrer">Service Provider Interfaces</a>)</li> <li>An <a href="https://stackoverflow.com/questions/43322/whats-safe-for-a-c-plug-in-system">SO question</a> for C++ pointing to a <a href="http://www.drdobbs.com/cpp/204202899;jsessionid=2P021EF4CUUAFQE1GHPSKH4ATMY32JVN?cid=RSSfeed%255FDDJ%255FCpp" rel="noreferrer">Dr. Dobbs article</a></li> <li>An <a href="https://stackoverflow.com/questions/340183/plug-in-architecture-for-asp-net-mvc">SO question</a> regarding a specific plugin idea for ASP.NET MVC</li> </ul> <p>These examples seem to play to various language strengths. Is a good plugin architecture necessarily tied to the language? Is it best to use tools to create a plugin architecture, or to do it on one's own following models?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload