Skip to content.

Manageability

Sections
Personal tools
You are here: Home » blog » stuff » Are Abstraction Layers in Messaging Necessary?

Are Abstraction Layers in Messaging Necessary?

There's this unspoken belief among practitioners and standards participants that layering of abstractions is necessary. That is, abstractions need to be classified, and neatly boxed up and layered. This is manifested in the way we define our messaging protocols today.

It's the idea why messages have an envelope and a body. The envelope being a standard abstraction that allows routing agents to act on. The body is in a different layer, and not only is semantically different but syntactically different too. However, there's a grave mistake in this strategy. That's because, it's not necessarily true that there are only two layering levels. Furthermore, the distinction between what goes into one layer and not the other sometimes tends to be blury.

Think of the problem as a form of the tyranny of the dominant decomposition. Separation of concerns is a good thing, however premature classification tends to be a bad thing.

Employing a pattern based matching component (possibly schematron) in messaging allows for servers to decide what bits of semantics matters and what doesn't. The client has no business in enforcing this layering. It's up to the server to decide how best to process the message, the client needs only to provide the minimal information required. Layering information tends to be superficial and ultimately unnecessary. At best it serves as a hint, however, it should never act as a constraint.

This approach is analagous to Aspect Oriented Programming(AOP). The goal of AOP is to provide better manageability of aspects that tend to spread across modules of a system. It's applicable in the context were the dominant decomposition breaks down.

Apply this now to messaging where the decomposition is based on layering. To reduce complexity, apply uniformity of syntax among messaging layers. Then allow a Rules or Heuristic based engine across the entire message. Certain semantics are understoods, others are simply opaque. There's no need to build artificial syntactic walls to support information hiding. Information hiding is inherently built in, since there's no such thing as an all knowing agent.

Created by admin
Last modified 2004-06-23 11:41 PM

visitors
reading
 
 

Powered by Plone

This site conforms to the following standards: