The Relationship Between Namespaces and Providers

Together, the providers, provider namespaces, and non-provider namespaces of Microsoft Provisioning System implement seamless provisioning support across many functional boundaries. Providers and namespaces both use procedures to implement provisioning functionality. The roles of providers and namespaces are very distinct. The way in which these providers and namespaces work together contributes to the extensibility of provisioning services in Microsoft Provisioning System.

Providers and namespaces are mutually dependent, but play very distinct roles in implementing provisioning functionality.

The Role of Providers

Providers perform low-level tasks within Microsoft Provisioning System. Providers are Component Object Model (COM) objects that provide the programmatic procedures required to interact with the management interface of applications or services such as Internet Information Services (IIS), Active Directory directory service, Microsoft Exchange 2000 Enterprise Server, Microsoft SQL Server, and Microsoft Windows. Providers supply the core functionality for the services, languages, applications, and objects that they provision. Each provider also implements the functionality required for compensation, which is the process of rolling back a transaction when a step in the transaction fails to complete successfully.

The Role of Namespaces

Namespaces contain the XML-based procedures that invoke the functionality required to provision specific services.

The two types of namespaces included in Microsoft Provisioning System are provider namespaces and non-provider namespaces.

How Namespaces and Providers Work Together

The transaction processing that is required to fulfill a request must have the coordinated support of namespaces and providers. The following figure illustrates how a single request might invoke the support of a non-provider namespace, a provider namespace, and a provider.

Figure: XML Request Process

In the preceding figure, the Active Directory Provider namespace contains a procedure that adds an object to Active Directory. Managed Active Directory Namespace contains a high-level procedure called CreateUser that works with Active Directory Provider to add a user to Active Directory. These two procedures must work together to successfully implement the request.

The request to create an object (in this figure, a user) in Active Directory executes through the CreateUser procedure of the non-provider namespace. The CreateUser procedure, in turn, calls the CreateObject procedure of Active Directory Provider. Active Directory Provider performs the core functionality of adding the object to Active Directory. The namespaces cannot communicate directly to Active Directory, but must go through Active Directory Provider.

As the figure shows, the process starts with an incoming request. The XML request is submitted to Microsoft Provisioning Framework (MPF), either from Delegated Administration Console or as a direct XML request. Upon receiving the incoming request, MPF expands the request and calls the required procedures from the appropriate namespaces. In this example, the following procedures and namespaces are called: