There are primarily two types of messaging clients: those that handle interpersonal messages (IPM) and those that handle interprocess communication (IPC) messages. Within those types, messaging client applications can be categorized as follows:
Person-to-person applications involve a person initiating the exchange of messages and another person responding. This category of applications includes traditional e-mail applications as well as more structured exchanges such as document routing or expense approval.
Person-to-machine applications involve a person initiating the exchange of messages and a machine responding. This category includes applications that use e-mail to, for example, submit a database query or subscribe to a mailing list.
Machine-to-person applications involve a machine initiating the exchange of messages and a person responding. This category includes applications that distribute documents such as news feeds and opinion surveys.
Machine-to-machine applications involve a machine initiating the exchange of messages and a machine responding. This category includes applications such as link heartbeat monitoring and directory and database replication.
The final category, a mix of persons and machines, involves a more complex scenario. This category includes applications that do not necessarily transmit messages between senders and recipients. Instead they might post them directly into a public folder or to a bulletin board forum supported by a message store. The messages can then be consumed on demand by other readers, an administrator, or a software agent.
If you are writing a person-to-person application, machine-to-person application, or an application that posts messages to public forums, set up your application to send and receive IPM messages. If you are writing a person-to-machine or machine-to-machine application, it should be set up to send and receive IPC messages. Any application that requires the interaction of a human user must support IPM messages. Applications that involve both people and machines in a variety of scenarios often must support both IPM and IPC messages. The only real difference between the two classes is that IPM messages in a message store are visible to messaging clients, while IPC messages usually are not.
Rather than limiting your messages to the capabilities provided by the MAPI superclasses, IPM and IPC, you can customize and enhance these classes by creating new IPM or IPC subclasses. Creating message subclasses involves inventing new message classes that inherit from the superclasses. For example, if your person-to-person application specializes in sending documents, you can subclass the IPM superclass by defining an IPM.Document.MyDoc class and create properties that describe your documents. In addition to supporting these custom properties, your IPM.Document.MyDoc messages will inherit the properties supported by all IPM messages.