Re: Component Discovery and Resolution
Stephen McConnell <[email protected]> Tue, 18 Mar 2003 10:38:48 +0100
| Newsgroups | gmane.comp.jakarta.avalon.phoenix.devel |
|---|---|
| Message-ID | <[email protected]> |
Leo Simons wrote:
> Berin Loritsch wrote:
>
>>> @avalon:info.name <name>
>>> @avalon:info.version <version>
>>> @avalon:info.attribute <key> <valaue>
>>>
>>> Where avalon:info.name equates to Fortress/ECM shorthand name?
>>>
>>> One other thing, in the background work I've been doing I'm using
>>> the URN convention of <domain>:<key> - i.e.
>>> "avalon:something.whatever.etc".
>>
>
> note: these are not URNs. URNS are prefixed with "urn:", don't contain
> qutoes, etc etc. ie stuff like:
>
> <excluded> ::= octets 1-32 (1-20 hex) | "\" | """ | "&" | "<"
> | ">" | "[" | "]" | "^" | "`" | "{" | "|" | "}" | "~"
> | octets 127-255 (7F-FF hex)
> (from the RFC)
>
> not saying they should be urns (we had that discussion already), just
> you shouldn't dub them urn if they're not.
Read my text again - I suggested using the URN *convention* of
<domain>:<key> enabling the seperation of the dictionary (identified by
the domain) from the feature (identified by the key) within the dictionary.
>> Yes, but we need a dictionary of keys that our users can build upon.
>> I would like to get the minimal set done now--which ignores validation
>> arbitrary attributes and version info. Just enough to tell the
>> container what is available.
>
>
> +1
>
>> You see, merlin and phoenix seem to have their own set of naming
>> conventions. I would really prefer if our users don't have to do
>> a global replace on all the attribute names when they upgrad from
>> Fortress to Merlin or Merlin to Phoenix.
>
>
> +1
>
>> Keep in mind that Phoenix has been doing the attributes the longest,
>> so I would tend toward using their conventions.
>
>
> +1
>
> I would add that that goes not only for the way attributes are marked
> in the sources, but also for any other files you generate from them
> and where those end up. I don't want to end up with
>
<snip/>
>
> Specifically, if it is possible to not use services.list in favor of
> using the blah.xconf setup phoenix uses and accomplish the same thing,
> I would strongly prefer that. I am guessing the ng/ stuff in fortress
> accomplishes exactly or some of that (though I haven't looked at it).
>
> In general, if it is at all possible and sensible to use the phoenix
> metageneration tasks, the phoenix tag conventions, the phoenix
> configuration file locations, etc etc, then that is the right thing to
> do for fortress, merlin, etc. It will make life so much easier when
> implementing any kind of "spearhead", and it makes applications (not
> just components) cross-container to a larger extent.
There is an alternative way of looking at this.
Currently we have a number of different ways of holding meta information
and meta data.
* ECM/Fortress role files (combines meta-info and
meta-data) + marker interfaces supporting a demand
driven deployment model.
* Phoenix with meta-info under <classname>.xinfo files
and meta-data at the application level using
config.xml and assembly.xml supporting a single level
structured composition model.
* Merlin with <classname>.xinfo for meta-info,
<classname>.xconfig for type specific configuration defaults,
<classname>.xprofile for type specific meta-data deployment
defaults, and block.xml for composition and isolation.
One approach is to consider different sources as potential inputs, and
from this establish a common meta-info and meta-data model that is
derived from these different source. The meta-info can be common across
all containers on a per-component basis. That's probably the easiest
bit (we already have the ability to read Phoenix meta-info into Merlin
in the form of a Type - the same thing is readily achievable in
Fortress). The meta-data is where most of the differences are. Both
Phoenix and Fortress scope meta-data at an application level whereas
Merlin captures a lot of this information in the form of defaults at the
class level then enable a very significant simplification of application
level content.
The meta package over in sandbox (as a example) attempts to bridge the
extremes (ECM/Fortress/Merlin/Phoneix). This is taking a practical
approach of leveraging a common meta-info enabling creation of model
instances using Phoenix <blockinfo> or Merlin <type> or Fortress roles.
Using this approach we get to a point where the next step is meta data
encompassing directives and defaults. Moving on from their we can
address things like (for example) a configuration repository as
container-side service - isolating the mechanisms used for configuration
registration, updating, retrival, etc. In other words, building from
the ground up the infrastructure for interoperability and comminality.
Cheers, Steve.
--
Stephen J. McConnell
mailto:[email protected]
http://www.osm.net