Message queuing is a system that allows different applications to communicate with each other. These applications can be on the same or different physical platforms. The platforms can be located in the same room, on the same LAN, or at any locations that are electronically connected, maybe even distributed around the world. The connection does not even need to be permanent. The platforms can even be running different operating systems, as we will see later in the chapter.
This sounds like a very heterogeneous system. Different applications, wide geographic locations, different connection types, and different operating systems are all characteristics of the Internet-connected world that we are living in today. Being able to move data between these systems has always been a goal of those who preach about connectivity.
Technologies such as SQL, ODBC, FTP, and HTTP all provide different mechanisms for data to be moved between systems in this heterogeneous environment. The only drawback is that the applications on each end have to both understand the exact same protocol for the way the data is formatted and the two systems communicating must both be participating in the communication at the same time. To maintain this communication, the network connecting the two systems needs to be reliable. While large numbers of systems have been created using these systems, that doesn't mean that a more efficient method of communication can't be found.
The next step is to let different applications exchange application information, which can be characterized as a richer set of information than just plain data. There are some competing technologies that are available today that perform these functions. You probably have heard the discussions between the proponents of COM, the Component Object Model of the Windows platform, and CORBA, the Common Object Request Broker Architecture of the ABM (anybody but Microsoft) group. These technologies both provide mechanisms for applications and their components to communicate with one another. But, for this communication to take place, both applications must be running and the connection between the two of them intact.
While for many applications, this constraint is not a problem. But what happens if one of the systems is not available, or the connection between the two of them is not active? Neither COM nor CORBA can handle this situation. There needs to be something between the two applications that can manage the communications and deal with these problems. One type of software that can overcome these issues is called a message queuing system. The message queuing system that is a companion to IIS 4.0 is called the Microsoft Message Queue System (MSMQ).