The primary parts of the MSMQ system architecture are the messages, the queues, the queue managers, and the set of COM interfaces that allows programs to access the information. The system operates transparently with respect to physical location. This means that an application can be sending a message to another application without having to worry about how the message actually gets there. MSMQ provides a facility for programmatically searching the set of queues available throughout a system. Once the application finds the queue it is interested in, it can send messages to it without worrying about how the message will actually get there. This happens transparently to the client, regardless if the destination queue is on the same machine or on a machine halfway around the world. MSMQ will get the message there, and will guarantee that it gets there.