- assigned_to: nobody --> talwyn
Refactor the application architecture to a plugin architecture. There shall be one core module (DLL) that provides the architectural features such as plugin loading an management. This base module also provides a main application window as user interface entry point that can be extended by plugins in various ways. The concept of extension points from Eclipse RCP is a good entry point for the pattern to use.
This feature needs some amount of thorough analysis and design. As a baseline, the following requirements must be met:
- Enable the application to dynamically integrate modules that provide functionality
- Install and manage plugins via a intuitive user interface
- Automatic updates for installed plugins (configurable behaviour!)
- Plugin Dependencies
The architectural core module shall finally be deployed as a DLL file that can be referenced by plugin developers. In order to provide that DLL, a big amount of new development will be required. The currently implemented functions should then be refactored so that they can be deployed as plugins. Currently the following plugin candidates are contained in the project:
- Persistence Abstraction Layer (PAL), including IPersistenceProvider, IUnitOfWork and IDAO
- NHibernate-based implementation of PAL (depends on PAL), including GenericHibernateDAO, HibernatePersistenceProvider and HibernateUnitOfWork
- Burning Wheel Domain Model
- NHibernate-based DAOs for the Burning Wheel Domain Model (depends on NHibernate-based PAL implementation and Domain Model)
- Data Editor (depends on Burning Wheel Domain Model and PAL) - this is currently the only candidate for a plugin that extends the GUI.
------
The Firebird DB drivers and dotnet connectors are _NOT_ plugin candidates. Firebird will be used as the primary storage engine that MUST be available for the whole platform to run (plugin configuration will be stored therein).
NOTE: This task is likely to change the entire project in a very strong way. It must be finished before any other steps are taken. A thorough analysis will be the first step here!