You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Stephen McConnell <mc...@apache.org> on 2003/05/06 17:46:28 UTC
on multiple personalities
Noel J. Bergman wrote:
>If the Avalon V container is based upon the micro-kernel + container
>services (some of which, to borrow a term used in other microkernel
>environments, would be "personalities") approach, what percentage of COMMON
>code do you believe would be reasonable between an A5 container configured
>with a Phoenix personality and one configured with a Merlin personality? I
>think that subject should be addressed in a separate thread (so lets not go
>into *details* in this one), but my point for bringing it up is to suggest
>that it will be easier for the Community to sustain multiple personalities
>if there is more commonality between them.
>
This is a not an easy question!
First of all, one has to identify what the personality is that the A5
container is dealing with. There are in fact several facets to deal
with, I call the first facet the "structural personality".
The structural personality deals with partitioning and isolation.
Within Phoenix you have partitioning of applications made up of
components that are assembled together (2-tier model). Merlin is quite
different in that structural model is on one-hand a containment concern,
but on the other, the result of the deployment is simply a component
proving services (n-tier model). The magnitude of difference at this
level suggest that we have to look deeper into the mechanics in order to
establish useful common services.
Some of the things that you isolate include:
* definition of a partition
* classloader management including extension management
* scoped repository management, supporting:
- type repositories
- service repositories
- profile repositories
One could assume a common A5 structural service, responsible for the
establishment of things like partitions, classloading hierarchies, and
meta-info/data repositories. Given these facilities, one would need to
be able to plug-in a system-assembly-strategy. A
phoenix-system-assembly-strategy would understand the notions of
application and block with Phoenix. A merlin-system-assembly-strategy
would understand the notion of blocks, containers, and components from
the Merlin environment.
Assuming we have just fired up a strategy handler - there are a bunch of
additional common services that the handler could leverage in the areas
of meta info management and meta data management.
In both Phoenix and Merlin there is the concept of a component type and
the communication of this information to a container. While the
actually XML representations are different, the structural approaches to
reading and manipulating this information are similar. Assuming that A5
container has its own meta-info model, the next aspect of the
personality management would concern the ability to construct a type
definition using a variety of schemas.
* an A5 meta-info-loading service
* identifies and installs a meta-info factory implementation
- block-info factory (phoenix)
- type factory (merlin)
- roles factory (fortress)
- any other factory that respects a meta-info-loading SPI
Another aspect of personalities is the supply by a component type of
named deployment profiles, templates, and default information. This
sort of information is where we see much higher degrees of divergence,
but just like above, this can be handled via mapping between meta-data
factories and a mata-data-loading-service.
* an A5 meta-data-loading service
* identifies and installs a meta-data factory implementation
Finally, there is one more aspect to the personality question - the way
in which the containment context is modified. Phoenix uses a set of
base-components (components without dependencies) that are declared as
part of the system. I see this simply as part of the definition of a
partition. This is different in Merlin because in Merlin your
deployment information is defining the system. In both cases these
aspects can be addressed by the structural personality plug-in mentioned
above.
As to the question - what percentage of common code ... ?
My guess is somewhere between 60-80%.
Steve.
--
Stephen J. McConnell
mailto:mcconnell@apache.org
http://www.osm.net
Sent via James running under Merlin as an NT service.
http://avalon.apache.org/sandbox/merlin
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org