Extending the UCMA Platform
Microsoft Unified Communications Managed API (UCMA) 3.0 provides built-in support for three media types: audio, message, and image (FAX). For many developers, no other media types are necessary. For developers whose applications require additional media types, the UCMA 3.0 platform can be extended to work with the new, custom media types. Because these new media types are not present in the UCMA 3.0 platform, they are considered platform extensions.
In the UCMA 3.0 platform, the process where a factory class is used to create a variety of objects that share basic functionality, but have additional functionality that is tailored to specific media type constraints, is based on two concepts: call factory and media provider factory. The call factory and media provider factory concepts are represented in UCMA 3.0 by the CallFactory and MediaProviderFactory abstract base classes, both of which inherit from the MediaBasedFactory abstract class. The UCMA 3.0 platform uses subclasses of these types to create instances of the default call types, AudioVideoCall and InstantMessagingCall, as well as (internal) media provider instances for these call types. AudioVideoCall and InstantMessagingCall are classes that inherit from Call, an abstract class.
Third parties who intend to provide support for additional media types can do so by implementing Call, MediaProvider, and MediaFlow subclasses tailored to the media type they want to support, and then by implementing CallFactory and MediaProviderFactory subclasses that create instances of the Call and MediaProvider subclasses that match their new media type.
The following illustration shows the relationships between the abstract classes provided in UCMA 3.0 Core SDK and the classes that must be implemented by developers who wish to extend the UCMA 3.0 Core SDK platform to support new media types. The subclasses for the MediaBasedFactory, CallFactory, and MediaProviderFactory abstract classes appear in the second illustration.
The topics in this section discuss minimum requirements for implementing subclasses of the abstract classes appearing in the previous illustration.