Projects/Plugin support improvements
Contents
Motivations, Priorities & Requirements
Motivations: there are a number of motivations behind the creation of the plugin architecture framework.
- Desire to separate plugin interface from its implementation;
- Desire to provide simple and clear mechanism that facilitates additions of new plugin interfaces and their implementations(modules);
- Handles both built-in and dynamic plugin modules;
- Allows multiple implementation of the same plugin interface;
- Provides uniform way to supply parameters for plugin configuration;
- Allows one plugin implementation to use services provided by the other plugin implementations.
Requirements: from these items we have developed a more formal set of requirements covering the design and the implementation of the framework to support the plugins. These are as follows:
- Allow third parties to implement multiple plugin modules for each pluggable interface.
- Allow a plugin module to build as dynamic or built-in from the same source code.
- Allow third parties to more easily create new plugin modules.
- Provide a uniform method for configuring discovery of plugin modules.
- Improve readability of code that calls pluggable interfaces.
- Allow easier creation of new pluggable interfaces.
- Allow incremental transition of existing pluggable interfaces to the new framework.
Architecture Overview
Introduction
Participants
The following is a list of participants and components within the architecture.
Plugin Manager: The plugin manager provides a set of generic capabilities that are independent of individual pluggable interfaces.
Plugin Interface: A plugin interface is an interface that can be implemented by a third party in a modular manner. An implementation of a plugin interfaces is referred to as a plugin module.
Plugin Module: A plugin module is an implementation of a pluggable interface.