Guys,

Thanks for responding to my previous email regarding "Avalon containers 
and good development practices".

I guess, my question regarding documenation has been the most 
controversial. I definitely agree that writing code is more sexy than 
producing documentation and, after all, software projects need to provide 
their bottom line, which is functionality. On the other hand, a good 
engineer should be able to express his/her ideas not only through code but 
also using creative diagramming techniques, especially that it is less 
expensive in case of making architectural mistakes and better suited for 
group discussions. It also helps others to participate in a project(s) 
without a need to burn more midnight oil. Also, some architectural 
diagrams can help those that want to base their work on an open-source 
project(s) in a timely fashion. Well, good understanding of Avalon can 
make it as popular as Apache or Struts; however, Merlin's documentation is 
fairly impressive for an open source project. As for my participation, I'm 
planning to donate a PowerPoint presentation in the near future, for those 
that want to quickly introduce their teams/managers to the Avalon 
framework.

In the mean time, I'm still unclear about differences between a component 
and a block. As far as I understand, a component is a low-level entity 
implementing all Framework's lifecycle methods with the ".xconf" 
description file attached to it. On the other hand, a block is a 
component-like entity with a BlockInfo file describing dependencies and 
implementing all component lifecycle methods except to "suspend" and 
"resume". When does a component become a block? Is it only when we need 
services? If so, a block is a component with services and without any 
differences between the two in terms of business scope they are trying to 
address.

Following the above, is there any clear-cut difference between their usage 
except to the Services? Well, since Component's marker interface has been 
already deprecated, what makes your code a Component? Is it the interfaces 
and its contract (kind of logical boundary)?

Can a component implement a Service without being a block? Is it possible 
to use just one concept, i.e. Component (forget the block), that can be 
either serviceable or not.  If this is the case, what do we do with 
"suspend" and "resume" and which configuration file format do we support?

Consequently, since Component interface has been deprecated, is the same 
going to happen to the "ComponentManager" and the "ComponentSelector"? ? 
how about the "RoleManager"?

Regarding ECM vs. Fortress, can a solution with background threads and 
half a dozen of managers be considered a light-wait replacement to the ECM 
(even if its architecture is superior)? If I just want to create a simple, 
vertical component architecture made out of components that are quick to 
initialize, should I just stick to using a default manager?  ? but it 
doesn't use the "ComponentHandlers" (and pooling) that are nice.

And finally, if "ServiceManager" is not managing services, why do we call 
it a manager?

Thanks one more time for your help,

Pawel
American Express made the following
 annotations on 12/09/2003 10:23:36 AM
------------------------------------------------------------------------------
******************************************************************************

     "This message and any attachments are solely for the intended recipient and may 
contain confidential or privileged information. If you are not the intended recipient, 
any disclosure, copying, use, or distribution of the information included in this 
message and any attachments is prohibited.  If you have received this communication in 
error, please notify us by reply e-mail and immediately and permanently delete this 
message and any attachments.  Thank you."

******************************************************************************


==============================================================================

Reply via email to