Al,

I'll be happy to discuss any implementation/applicability considerations. I 
believe it will also benefit the group. Several people have mentioned 
implementation considerations. The MDP papers are mainly geared towards the 
messaging concept based on a realistic model. I tend to place a lot of emphasis 
on the concept, abstraction and realistic model. In my opinion, concept and 
interface are the main aspects in order to achieve a successful implementation. 
On the other hand, I agree that  implementation considerations are also key 
aspects. They should not be overlooked.

In terms of implementation, I would also recommend taking a look at the Jt 
design pattern framework (user's manual, software, examples, applications). 
This framework implements many of the technologies mentioned in the paper:

Distributed Component
 Model based on MDP
Secure Web Services 
Restful Web Services
Design Pattern Implementation (including GoF, Data Access Object and J2EE 
design patterns)
Enterprise Service Bus
BPEL (A Process is modeled as a set of components interchanging messages)
Multi-Threading applications.

The software is public. The same framework has bee utilized for production 
quality applications. It should give you a fairly complete idea on how MDP has 
been implemented.
This MDP framework should clarify many of the implementation/applicability 
considerations. Several reference applications based on MDP are included. Keep 
in mind that this framework is "only" one of the potential implementations of 
MDP. The implementation of MDP is up to the implementer's imagination. 

In terms of the differences between Observer and Messaging:

Observer:
Define a one-to-many dependency between objects so that when one
    object changes state, all its dependents are notified and updated 
automatically.
  
               

If we think in terms of a realistic model, the communication between Observer 
and dependents (notifications, etc) should be modeled via messaging. Therefore 
MDP can be used to implement observer in a realistic fashion. As discussed in 
the paper, MDP improves reusability, encapsulation and decoupling. A generic 
implementation becomes possible. The Jt framework includes an implementation of 
Observer based pn MDP.

MDP messaging, on the other hand, is about the interchange of information. If 
we think in terms of a realistic model. Observer and Messaging apply to 
different scenarios. In a sense, Messaging has a broader scope because messages 
are not limited to notifications. Messaging can be used for any type of 
information exchange. Also, Messaging is not designed to model the dependency 
relationship between Observer and dependents. Messaging models the information 
exchange between sender and receiver. 

I'm afraid I won't be able to give you a precise list of areas where MDP is 
applicable . The concept of
 messaging (interchange of information) is very broad: Messaging is about 
interchanging information. In the real world, this happens everywhere. The list 
of technologies above gives you an idea of areas where messaging can be 
applied. I can give you one specific application area though. If the technology 
is based on Remote Procedure Calls (RPCs), it should be replaced with MDP 
because of complexities and shortcomings associated with RPCs. RPCs provide an 
incomplete and limited model. I'm afraid this is also a broad application area. 
  

Again, I would try to review the Jt design pattern framework, in order to get a 
precise idea on how MDP has been implemented. It also implements 
multi-threading while at the same time avoiding complexity.  

Please don't hesitate to send any additional comments or questions that you may 
have. I'll try to answer any specific implementation/applicability aspects that 
you are facing based on your specific application.

Best regards




 


--- On Mon, 12/13/10, Al Boldi <[email protected]> wrote:

From: Al Boldi <[email protected]>
Subject: Re: MDP
 feasibility questions (was: Messaging Design Patterns (MDP) reusability and QA)
To: "Messaging Design Pattern" <[email protected]>
Cc: [email protected]
Date: Monday, December 13, 2010, 4:55 PM

Messaging Design Pattern wrote:
> 1) No. Observer and messaging are two separate design patterns (concepts).

Separate concepts yes, but both could conceivably be used to implement the 
same project.  When would we prefer the ODP over the MDP and vice/versa.

The reason I am questioning is that I see many developers picking the wrong 
pattern for their implementation rendering the result a failure.  What we 
need are clear instructions of when the MDP is applicable and when it is not.

> In terms of performance and resource usage, MDP is very light and
> efficient. Keep in mind that messaging (core functionality) can be
> implemented with a
 single messaging interface:
>
> public interface JtInterface  {
> /**
>   * Jt messaging interface used for the implementation
>   * of the messaging design pattern.
>   * Process an input message and return a reply (output message)
>   */
>
>   Object processMessage (Object message);
> }

Yes, both the interface and the concept itself look simple, yet when trying to 
implement this interface it quickly mushrooms into a multi-threaded endeavor.

What is needed is more detail about the design pattern specifics, i.e. 
associated sub-patterns needed to guide the developer to a successful 
implementation.


Thanks!

--
Al




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

Reply via email to