Composer is an extensible Compositional Architecture framework, providing a set of functionality such as Inversion of Control container (IoC), Dependency Injection (DI), Plug-in framework, Aspect Oriented Programming (AOP), Configurability and Composability for components.
What is Composer?
Composer is a framework to enable software to be developed in a Compositional
manner. A complete software system can be formed by composing various smaller re-usable parts together. It simplifies the software development process, and help developers and architects meet design goals such as Configurability, Extensibility, Reusability and Customizability.
What problems are addressed by Composer?
The items below are high-level benefits of building software in Compositional architecture, which is provided by Composer.
- Inversion of Control: Composer can act as a container for Inversion of Control.
- Dependency Injection: Composer can inject dependencies of components either created by composer itself, or created outside and handed over to it.
- Interception and Filtering: Composer facilitates means for intercepting calls between components, filtering them, or redirecting them.
- Dynamic Mocking: Composer has tools for dynamically creating implementations of interfaces.
- Aspect Oriented Programming: Composer facilitates easy creation of Aspects between layers.
- Extensibility: Composer provides means for building extensible software components quickly and easily.
- Plug-in framework: Composer makes it easy to incorporate plug-in functionality in an application.
- Configuration: Composer allows software components declare configuration options, which can be provided from flexible sources without the knowledge of the component itself.
- Customizability: Composer makes customizing software for different customer much easier.
- Reusability: Composer enables easier re-use of software components across different products, and across customizations of the same product.
- Substitutability: Composer makes individual components easily substitutable, without affecting other parts of the system.
- Testability: Composer makes it easy to isolate a single component or a group of components for testing.
- Instance Sharing: Composer can keep track of instantiated components, and share the instance for different uses to prevent unneeded object creations.
- Lazy Initialization: Composer makes it easy to defer instantiation of components until when they are actually needed.
- XML Based composition: Composer has utilities to parse XML documents that specify the composition and registration of components.
- Extend Composition Logic: Composer is extensible itself, allowing you to customize and add your own logic to the composition flow in several ways.