patterns-discussion AT lists.siebelschool.illinois.edu
Subject: General talk about software patterns
List archive
- From: Messaging Design Pattern <dsheppard2k AT yahoo.com>
- To: Al Boldi <a1426z AT gawab.com>
- Cc: patterns-discussion AT cs.uiuc.edu
- Subject: Re: [patterns-discussion] Fw: RE: MDP feasibility questions (processMessage)
- Date: Sun, 27 Feb 2011 14:52:18 -0800 (PST)
- List-archive: <http://lists.cs.uiuc.edu/pipermail/patterns-discussion>
- List-id: General talk about software patterns <patterns-discussion.cs.uiuc.edu>
Al, I'll be glad to clarify. The main purpose of this discussion is to clarify all the aspects of MDP based on facts. I apreciate the degree detail found in your questions based on the scope of the messaging design pattern (MDP) paper. I'm also glad that we are thinking in terms of a realistic model. As I said earlier, I believe this is a good way to fully understand the messaging design pattern (concept, consequences, implementation, best practices, applicability, cost, etc. After all, MDP exists because messaging is part of reality. Based on a realistic model, I can frame your questions and quickly give you answers: a) In the context of reality, messaging and proxy are two separate and distinct concepts/abstractions. Messaging does not require a proxy (or messenger). Direct messaging/communication is possible. On the other hand, they usually work cooperatively. b) The technical literature covers two types of messaging: synchronous and asynchronous. It is true that many of the countless real-world analogies use asynchonous messaging (human speech, email, postal services, etc). On the other hand, many of the more widely-known communications protocols operate synchronously. The HTTP protocol used in the World Wide Web and in web services offers an examples where a user sends a request for a web page and then waits for a reply. Both modes of communication are useful from a practical standpoint. The paper covers both styles of messaging. Synchronous messaging does not require a queue or separate threading mechanism. Our communication with a computer (browser, command line, etc) can also be viewed as synchronous communication. The following is the simplest form of messaging: - sender: sendMessage (component, message) // Synchronous messaging without message queue. - receiver: processMessage (message) c) I'm not sure I completely understood you next question. I believe that you are looking for a comparison between messaging and conventional parameter passing. It is true, procedure calls transfer information via parameters. On the other hand, we can argue that it is not "real messaging" because in reality, component, message and messaging mechanism are entities fully independent and decoupled. Parameter passing doesn't meet this criteria. This results in limitations and drawbacks. It is sort of artificial. As a consecuence of messaging we are able to realize many advantages. As we all agree: simplicity of concept, decoupling, interoperability, scalability, etc. I'll elaborate on these answers. I'll use your real-world analogy. The email system uses the messaging abstraction (asynchronous messaging). Although they are related, there is a difference between the messaging abstraction and the MDP model. They are separate entities. Also, MDP covers both: synchornous and asynchornous messaging. Let's say that you want to send a message to a second friend. Your friend acts as a proxy. In general, the role of proxy is the transference of information (messaging) to the real subject. On the other hand, notice that messaging is also present here. We all agree that messaging is everywhere (ubiquitous). Keep in mid that messaging is about transference of information. You will be challenged to find processes or applications where infomation (messaging) is not transferred. Proxies usually need to communicate with the subject. This calls for messaging. Messaging and Proxy are also sort of atomic/primitive concepts. A complete model should include both concepts. If we overlook the appropriate concepts, we'll find limitations and drawbacks (RPC abstraction with parameter passing). On the other hand, you can have direct messaging with the use of a Proxy or messenger. Also notice the close relationship between information and messaging. You mentioned the observer pattern in a previous email. Observer requires notifications. These notifications also imply messaging. The same principles use in your email analogy can be used for the implementation of a complete distributed service/model based on MDP messaging. Both problems follow the same pattern. The second MDP paper covers this distributed service/component model. The MDP papers also discusses how messaging can be utilized for the implementation of other design patterns. Again this is feasible and recommendable because as we all agree, messaging is everywhere. Also, design patterns generally consists of several components that need to communicate with each other. This communication implies messaging. Conceptually there is clear differences between messaging and parameter passing (procedure calls): 1) RPC1 (parameter1, parameter2, , parametern) RPC2 (parameter1, parameter2, , parametern) RPCN (parameter1, parameter2, , parametern) 2) sendMessage (proxy, message) where proxy is the local proxy to the remote component. Notice the clear separation between components, message and messaging mechanism (option 2). It is not the case for the conventional Remote Procedure Calls. If you look at the real-world messaging analogies, you will find a clear separation. Notice that message (email message, word, mail piece ), entities and the communication mechanism (email system, sound, postal service ) are fully independent and decoupled. A realistic model helps clarify the difference between "true" messaging and parameter passing. It should be clear that Remote Procedure Calls are disconnected from the reality they seek to represent. The RPC abstraction is disconnected from reality which is based on a messaging abstraction. Feel free to send any follow-up comments or questions. Regards, Al --- On Wed, 2/9/11, Al Boldi <a1426z AT gawab.com> wrote:
|
- Re: [patterns-discussion] Fw: RE: MDP feasibility questions (processMessage), Messaging Design Pattern, 02/07/2011
- Re: [patterns-discussion] Fw: RE: MDP feasibility questions (processMessage), phillip henry, 02/08/2011
- Re: [patterns-discussion] Fw: RE: MDP feasibility questions (processMessage), Al Boldi, 02/09/2011
- Re: [patterns-discussion] Fw: RE: MDP feasibility questions (processMessage), Messaging Design Pattern, 02/27/2011
Archive powered by MHonArc 2.6.16.