Christian,
I welcome your comments and questions.I've been given careful thought to all the
comments/questions that I have received. In my view having an open and direct discussion about the messaging design pattern (MDP) is very beneficial. You also have very specific questions based on the paper. In general, I'm asking folks to be as specific as possible so I can provide detailed answers. Feel free to include specific sections of the paper.
Once we get the messaging abstraction, we can agree on
the validity of the concept. You raise a valid point related to the comparison with traditional solutions. I'm afraid this comparison was not part of the scope of the original MDP paper. The first paper only includes an example comparing MDP and RPCs. There are several facts/benefits covered there. As I mentioned earlier, it is impossible to cover all the aspects of MDP with a single paper (wide applicability). Many aspects are only briefly mentioned. The second MDP paper covers a complete comparison of MDP with traditional RPCs:
Messaging Design Pattern and a Distributed Component/Services Model
https://jt.dev.java.net/files/documents/5553/149793/MDPdistributedModel.pdf
You should find facts and solid arguments/foundation there in terms of the benefits of MDP when compared with traditional RPCs. Otherwise I'd
like to know the specific aspects that you may disagree with so I can send you a detailed answer. Also, you may want to review some of the comments contributed to the discussion in order to visualize the benefits of MDP. The first paper also discusses in detail the implementation of design patterns using MDP. This is another area where detailed arguments/facts have been provided so far.
BTW, the Jt design pattern framework (reference MDP implementation) may also be useful when comparing MDP with other technologies.
In my view, in order to fully understand the messaging design pattern (concept, abstractions, implementations, applicability, feasibility, efficiency, etc) we need to understand the following premises and conclusion. Folks bear with me for a minute and think about it carefully. BTW, as I mentioned earlier, if there is a better way of communicating "messaging" I'd love to hear it so everyone gets it right
away.
Realistic Model:
1) Software applications are designed to model the real world.
2) Software models should be as close to reality as possible
(realistic model) in order to achieve an accurate portrait. The more
realistic the model is, the better off your application will be.
3) Messaging is part of the real world. Actually it is everywhere (Ubiquitous)
.
- Conclusion:
Therefore messaging must be part of the software model in order to achieve an
accurate/complete model. BTW, there are other concepts that are also
part of reality ( gravity, forces, etc). Obviously you might need to include
these concepts depending on your application.
We agree that messaging is everywhere (premise 3). This is a fact. We also agree that many other concepts (gravity, etc) are part of the real world (fact). There is no inconsistency between this fact and the premises/conclusion above. As stated earlier "Obviously you might need to include
these concepts depending on your application."
Let's use the concept of Gravity to illustrate this point. It is also part of the real world. On the other hand, you don't need it as part of your model for a Distributed Component/Service model (second MDP paper) or a standard business application. In general these applications don't need to deal with the concept of Gravity. Gravity doesn't need to be part of your model in this particular scenario. Usually what you find for these applications is many components "communicating" with each other. This "communication" implies "messaging". Messaging needs to be part of the model for these types of applications in order to achieve a complete/realistic model.
Now let's say that you are trying to model a highly interactive game where characters need to communicate ("Messaging") with each other. They also can jump (Gravity) and move around. They can also collide and bounce (Force), etc. Based on premises 1 and 2 above, you need to arrive to the
following conclusion. There is not inconsistency with any of the premises or the conclusion above. For premise 3 you need to realize that Gravity and Force are also part of the real world (no inconsistency):
Premise 3: Messaging, Gravity and Force are part of the real world.
Conclusion:We need to include the concepts of messaging, gravity and force to achieve a realistic model for this specific application. They are part of the reality being modeled. Therefore they should be part of the software model.
In you think in terms of a realistic model, the difference between messaging and other concepts (force, gravity) is that messaging is ubiquitous. It is needed for most of the common applications (business, Distributed Component/Service Model). Gravity, force and other concepts are not. This is the main difference.
I'm afraid I was unable to attend the conference. I hope this makes sense. Feel free to send any
additional comments/questions based on this reply.
I plan to address your other questions/comments shortly. I hope the second MDP paper will provide additional/detailed information in terms of comparison between MDP and other technologies (RPCs/Web services).
Best regards,