MAPI Architecture

MAPI Architecture  

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

The following article shows where each of the MAPI objects fits into the MAPI architecture. The objects are represented with the names of their derived interfaces.

In general,

  • 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.

MAPI Subsystem  

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.

Note:

  • 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.