Ralph,

I've updated the design pattern to address your comments. The updated version 
can be found at http://freedom.lunarpages.com/pattern/messaging.htm. There are 
some tradeoffs to consider as you suggest in your earlier message:




- In order to take full advantage of this design
pattern, people need to think in terms of messaging when they model, design and
build software applications: independent entities (i.e. components) 

interchanging messages among each other. 
This may require learning time and training. Although a messaging approach
is natural, intuitive, and consistent with the real world, traditional
approaches are based on libraries and method/procedure invocation (both local
and remote). 



- Transferring messages between components introduces a small overhead when
compared with traditional method/procedure invocation. As computers become
faster and faster this becomes a non-issue. Also, the benefits of messaging
outweigh this small performance cost.   



- The messaging design pattern encourages a disciplined approach that may have
a small impact on the initial development time of a component. Messaging should
be the only channel of communication between components. External class methods
may still be invoked using the traditional approach.  On the other hand,
this should be used sparingly in order to minimize coupling and maximize
encapsulation. An ideal component is a self-contained unit that interacts with
the other components only via messaging. The additional development time is
again outweighed by the benefits introduced by messaging. Moreover individual
components based on messaging can be purchased or extracted from other
applications.



Our basic premise is that the real world works based on a messaging paradigm. 
It is everywhere. Therefore every program can be modeled, designed and written 
based on a messaging approach. It is true that you can use the messaging 
interface everywhere. JtInterface happens to be one implementation of messaging.

In terms of the name, I agree with you. Actually we have struggled while trying 
to find a suitable/unique name. You or someone else may have a better name for 
this design pattern. We'll be happy to change it.

I believe this design pattern is about communication, interaction, messaging, 
information exchange, etc. These are some of the main concepts that come to 
mind. On the hand, it impacts all the other areas that you mentioned: parallel 
programming, sync/async communication, coupling, software architecture, etc.

"Lego" architecture is the name that we often use for the architecture that 
results from
 using this design pattern (interchangeable components connected via messaging) 
. Perhaps the "Lego" design pattern could be an alias.

We appreciate your comments. Feel free to send any follow-up comments that you 
may have.

Best regards,

Ed
http://freedom.lunarpages.com/pattern/messaging.htm



--- On Thu, 2/25/10, Ralph Johnson <[email protected]> wrote:

From: Ralph Johnson <[email protected]>
Subject: Re: [patterns-discussion] Messaging Design Pattern
To: "Messaging Design Pattern" <[email protected]>
Cc: [email protected]
Date: Thursday, February 25, 2010, 11:30 AM

Every single consequence in the pattern was positive.  In other words, you only 
say good things about the pattern, nothing bad.  if this were true, you'd use 
it in every program. 
 Don't use any other interface except JtInterface!  Use it everywhere!


This is a common problem with patterns.  The pattern writer is so enamored with 
his pattern that he only wants to say good things about it.  But design is 
about tradeoffs.  There is a cloud with every silver lining.    If you don't 
understand the costs of a pattern then you don't understand the whole pattern.  
And if you don't describe the costs then you sound like a used-car salesman.


I've heard this called many things.  I don't like any of those names because 
they can be interpreted in many ways.  i don't like Messaging, either.  Perhaps 
it is about parallel programming, and the pattern is to avoid shared memory and 
communicate only by sending messages.  Perhaps it is about distributed systems, 
and explores the difference between synchronous and asynchronous 
communication.  No, this pattern is about software architecture, and is about 
how to keep loose coupling between modules.  Pick a name that can't be 
misinterpreted.


-Ralph Johnson




      
_______________________________________________
patterns-discussion mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/patterns-discussion

Reply via email to