MAPI is a messaging architecture that enables multiple applications to interact with multiple messaging systems seamlessly across a variety of hardware platforms.
MAPI Objects and General Architecture
All of the objects defined by MAPI fall into one or more layers in the MAPI architecture.
- The client interface layer is made up of all the objects that a client application, form viewer, or form server can implement.
- The service provider interface layer contains the objects that a service provider of any type can implement.
- This layer includes objects implemented by address book, message store, transport, form library, and messaging hook providers.
- The layer that represents the MAPI subsystem is positioned between the client and service provider interface layers.
- The MAPI layer contains all of the objects that MAPI implements for clients or service providers to use
- MAPI is made up of a set of common application programming interfaces and a dynamic-link library (DLL) component.
- The interfaces are used to create and access diverse messaging applications and messaging systems, offering a uniform environment for development and use and providing true independence for both.
- The DLL contains the MAPI subsystem, which manages the interaction between front-end messaging applications and back-end messaging systems and provides a common user interface for frequent tasks.
- The MAPI subsystem acts as a central clearing house to unify the various messaging systems and shield clients from their differences.
The MAPI subsystem is made up of the MAPI spooler, a common user interface, and the programming interfaces. The MAPI spooler is a separate process responsible for sending messages to and receiving messages from a messaging system. The common user interface is a set of dialog boxes that gives client applications a consistent look and users a consistent way to work.
The above article shows how Simple MAPI, CMC, and the CDO Library are layered between MAPI and client applications. Messaging-based clients call directly into MAPI while messaging-aware and messaging-enabled clients call into Simple MAPI, the CDO Library or CMC. Calls to these higher level APIs are forwarded to MAPI.
MAPI - Programming interfaces
MAPI has programming interfaces that are used by the MAPI subsystem, by client application writers, and by service provider writers. The main programming interface is an object-based interface known as the MAPI programming interface. Based on the OLE Component Object Model, the MAPI programming interface is used by the MAPI subsystem and by messaging-based client applications and service providers written in C or C++.
Client Application Writers
Client application writers have a choice of three other interfaces:
- Simple MAPI
- An API function-based client interface for applications written in C, Microsoft Visual C++, or Microsoft Visual Basic.
- Common Messaging Calls (CMC)
- An API function-based client interface for applications written in C or C++.
- CDO Library
- An object-based client interface for applications written in C, C++, Visual Basic, or Visual Basic for Applications.
- Simple MAPI, CMC, and CDO Library client interfaces are primarily for messaging-aware and messaging-enabled client applications.
- These interfaces are less complex.
- Applications that require fewer messaging features can use Simple MAPI, CMC, or the CDO Library to implement these features quickly and easily.
MAPI client application
- A MAPI client application is any application that uses one of the three MAPI client interfaces (Simple MAPI, CMC, and the CDO Library) or the MAPI programming interface.
- Client applications implement messaging tasks as either their primary or secondary focus.
- Messaging client applications, such as applications that send and receive electronic mail, implement messaging as their primary focus while for non-messaging client applications, such as inventory or configuration applications, it is a secondary feature.
Client application categories
Client applications can be organized into one of the following three categories:
- Messaging-aware applications
- Messaging-enabled applications
- Messaging-based work group applications
i) Messaging-aware applications
A messaging-aware application does not require the services of a messaging system, but includes messaging options as an additional feature.
Example: A word processing application that includes a Send command in its File menu to allow documents to be sent is considered messaging-aware.
ii) Messaging-enabled applications
A messaging-enabled application requires the services of a messaging system and typically runs on a network or an online service.
Example: A messaging-enabled application is Microsoft Mail.
iii) Messaging-based work group applications
A more advanced client application is the messaging-based work group application. The work group application requires full access to a wide range of messaging system services, including storage, addressing, and transport services. These applications are designed to operate over a network without users having to manage the applications' network interaction.
Example: Such applications include work flow automation programs and bulletin board services.