What is a Component Framework?
A ComponentFramework defines a set of AbstractInteractions that define the protocols by which components cooperate -- each component takes on roles in various AbstractInteractions. The AbstractInteractions defined by a ComponentFramework provide a conceptual framework in which to think about solutions to the problem domain addressed by the framework.
The ComponentFramework also defines the packaging for components so that they can be instantiated and composed into legal configurations by ThirdPartyBinding.
For ease of use, a ComponentFramework can provide ComponentGlue to make it easy to connect components that play roles in incompatible AbstractInteractions. Scripting is an especially flexible form of ComponentGlue.
To help framework users up the learning curve, a ComponentFramework can provide PrebuiltFunctionality, such as useful components or AutomatedAssembly functions that automatically instantiate and compose components to perform common tasks.
A ComponentFramework is used as a BlackBoxFramework when composing components. However, a WhiteBoxFramework (or other OO techniques) can be used to support programmers implementing new components.
A ComponentFramework is often implemented as LayeredFrameworks to manage complexity.
How does a ComponentFramework differ from an Object Oriented Framework?
The main distinguishing feature seems to be that an application is constructed from ComponentFramework by composition, and from an O-O framework by customisation.
An O-O framework will provide a lot of behaviour. The application programmer customises this behaviour for a particular application by extending or altering the classes by inheritance (e.g. TemplateMethodPattern or TemplateFactoryPattern?) and by plugging application-specific objects into particular points of the object-web created by the framework (e.g. StrategyPattern).
An application is built using a ComponentFramework by instantiating prebuilt and application-specific component types and connecting compatible elements of their interfaces so that they can cooperate. The component framework provides support for instantiation and composition, rather than for application tasks. The application tasks are encapsulated within the components.
However, there is no clear dividing line between a ComponentFramework and OO framework.
This page has been distilled from the discussions about ComponentDefinition and ComponentFrameworkDefinition.
ComponentFramework QuickQuestions
Q Is ComponentFramework past its used-by date? This wiki page last edited 2002, with a question below unanswered for two years. And a web page on ComponentBasedBusiness is 2001 (based on its news items). See http://www.users.globalnet.co.uk/~rxv/cbb/index.htm
Is a component framework distinct from an operating system?A It is a system, but not classified as an OperatingSystem. Discussion reopened 200812130650.m05
A I postulate that not much discussion occurs related to component frameworks these days (ca. 2008) because I think most feel it's now a solved problem. The widespread deployment of frameworks like Spring in the commercial sector seems to suggest, however, that the golden age of component frameworks is far from over.
See Also: HelpersInsteadOfWrappers