Jaaron:

See notes in-line.

J Aaron Farr wrote:

Hello.

After reading online docs, source code, and mailing list archives, I have a
couple of questions, most of which are just to confirm that I'm understanding
things correctly.

The current situation could be grossly summarized as something like: Avalon
Framework has moved (or is moving) from Components to Services (essentially
just an API change) and Fortress is a hopeful ECM replacement and Merlin will
complement both Fortress and Pheonix. However, both Merlin and Fortress are
under development right now, so the current API's aren't necessarily stable.
Fortress is more stable than Merlin.
Merlin is progressively incorporating Fortress feature but its still a moving target - still lots of things going on concerning packaging on container hierachies, blocks and other rather nice features.

These developments leave me, a new Avalon user starting a new project, with the
following questions:

1. Since I'm starting from scratch on this project of mine, I should stay away
from Component and ComponentManager and use the Service equivilants.
Yes.

[Also
perhaps I should avoid ServiceManager.release()?]
No.

Is that correct?

The release operation on service manger is perfectly valid. While there has been a lot of discussion about the release operation, there has not be a bullet proof solution presented yet that would enable its removal.

2. If I should avoid Components, then that means that I should not use those
parts of Excalibur that use Components then, right? However, the alternative
(as I understand it) would be to use Fortress/Merlin which isn't stable. So
now I'm in a bit of a fix -- use the ECM knowing it'll be deprecated or live on
the edge with Fortress/Merlin. Anyone have any advice?

My understanding is that Fortress isn't on the edge. Fortress is basically a recut of ECM incorporating a better architecture and seperation of concerns. It employs the same dynamic service resolution approach as that found in ECM. Merlin on the other hand is quite a different animal - it provides a meta based component engine, dynamic composition, and lots of support for component driven plug-ins at the lifestyle, lifecycle, assembly and deployment stages.

3. Since personally I'd rather live on the edge (besides, I'd have a better
chance to bug fix and contribute code to the projects), just how stable are
Fortress and Merlin?

If you preference is for the edge - then go with Merlin.

I havn't tried Fortress operationaly but I heard its fine. Merlin is solid and operational - but it is a moving target. If you link into using Merlin you will end up using some very powerful stuff but you will need to deal with occasional API changes if you get into things like specialized containers. Apart from that the changes should be minor and any feedback will have a direct import in the product evolution.
ECM has a lot of nice code, like the
ExcaliberComponentManager (as mentioned in the "Developing with Apache Avalon"
documentation by Berin Loritsch). Does the Service interface have solid helper
classes and utilities like this?

If you use Merlin you will not be thinking about helper classes - instead you will just write a couple of lines of code and your entire system will be auto deployed - irrespective of the complexity of the component. Fortress approach here is much more oriented towards a flat service architecture whereas Merlin is much more oriented around composite service structures.

I'd really like any suggestions anyone has about starting new projects based on
Avalon. Since I can start fresh I want to start right. Any thoughts or
advice?

If you want to learn about containerment technologies and contribute to the overall Avalon container strategy - then Merlin is you bvest bet because it is free to adapt to ideas and opinions that are emerging on the dev list. The version on Excalibur CVS (esclibiur/assembly) is solid and working well and has reasonably solid documentation. There is work going on in refactoring the core assembly engine into an indepednet API - that's now in the avalon-sandbox/assembly package and an updated Merlin implementation is being put together progressivly under the avalon-sandbox/merlin package based on the Excalibur code base. That version should be operational in a couple of weeks and will capable of supporting classic compoent assembly together with a block architecture (where a block encapsulates a container heirachy and deployment strategy). From there on work on Merlin will mainly focus on tools supporting block centric development and container-side development requirements.

Cheers, Steve.

Thanks!
jaaron


__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>




--

Stephen J. McConnell

OSM SARL
digital products for a global economy
mailto:[EMAIL PROTECTED]
http://www.osm.net




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to