Designing a Message Service

Before you begin to write code to support your message service, it is important to create a design. Resolve the following issues in your design process:

  1. Determine how many service providers should be included in the message service. Only include related service providers, meaning providers that work with the same messaging system, in your service. Unrelated service providers do not belong in the same message service. Use the profile for integrating unrelated service providers and message services.
  2. Determine what type of service providers should be included in the message service. Most messge services include one provider of each of the common types. That is, the typical message service has one address book provider, one message store provider, and one transport provider.
  3. Determine how many DLLs should contain the message service. The number of DLLs that a message service uses depends on:

    Because MAPI stores only one entry point for each provider type, do not include multiple providers of the same type in a single DLL. If it makes sense to include multiple providers of one type, either implement them in separate DLLs or have them share an entry point function.

    Another option is to implement related message services, or message services that are able to use the same installation and configuration code and the same DLL entry point function, in one DLL.

    If possible, keep it simple and use one DLL that contains the implementation of all the service providers in the message service and all the code to install and configure the message service. If this is not possible, you can implement one DLL for the installation and configuration code and either a single DLL for all of the service providers or one DLL for each provider.

  4. Determine a name for the message service DLL or DLLs. DLL names must be six characters or less so that MAPI can concatenate characters onto the end of the filename to indicate a 32-bit target platform and remain within eight characters.

    For example, if you have two DLLs, TEST and PROVS, and your message service runs on both a 16-bit platform and a 32-bit platform, MAPI generates two DLLs for each platform: