How To Create a Flexible Plug-In Architecture?

Posted by justkt on Stack Overflow See other posts from Stack Overflow or by justkt
Published on 2010-05-04T18:50:51Z Indexed on 2010/05/06 16:28 UTC
Read the original article Hit count: 267

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:

  • A database isn't a great place to store your configuration information, especially co-mingled with data
  • 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
  • Configuration files work well for providing simple information, but can't handle more complex behaviors
  • Libraries seem to work well, but the one-way dependencies have to be carefully created.

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?

A few examples I've been finding on my own:

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?

© Stack Overflow or respective owner

Related posts about language-agnostic

Related posts about plugins