Pages

Wednesday, October 12, 2011

We Need Better Messaging Terminology

I am current working in an enterprise environment on a solution that involves multiple Silverlight applications running on multiple systems in a client-server environment.  (To clarify, there can be multiple Silverlight applications running on a single system and there are several such systems on the network.)  The topic of messaging has been prevalent lately and I see a lot of confusion when discussing the various types of messaging.  It would make these discussions so much easier if we had common yet unique terminology for each type.

As I see it, we have the following types of messaging (along with the terminology I use to keep 'em straight!):

Inner-Application Messaging  One of the (sub-)patterns promoted by the MVVM pattern widely used for Silverlight applications is that of a Messenger.  This is also known as Broker or Event Aggregator depending on the framework you are using.  Regardless of the name, this is a way of using loosely-coupled messages to communicate between objects (view models in MVVM) rather than tightly-coupled events.  This type of messaging only pertains to communication within an application.

I refer to inner-application messaging as simply, "messaging".

Inter-Application Messaging  I actually prefer the term Notification for the next type of messaging, but as the world of mobile devices has taken off, this term has become synonymous with inter-application communication.  With Silverlight 4, Microsoft introduced a form of Silverlight client-to-Silverlight client communication using the LocalMessageSender and LocalMessageReceiver classes as well as a way to display a cute little popup window when a message is received using the NotificationWindow class.  Other examples are sending Toast notifications in Windows Phone 7.

I've been calling inter-application messaging, "notifications".

Inter-Machine Messaging  In my environment, we have a broadcasting system that runs on the server and pushes messages out to the client applications running on any machine in the network. I used to refer to this as a Notification Service keeping in line with such commercial products as SQL Server Notification Services.  However, since we don't have a better name for inter-application messaging and notifications seem to be so popular there, a new term is called for.

I've started using "broadcasting" for inter-machine messaging.

By no means am I suggesting that my terminology is the best.  In fact, quite the opposite and I solicit anyone that stumbles across this post to share your opinions.  It has truly been difficult to sit in meetings and keep everyone on the same page when discussing messaging.  We really need some standard terminology.