Providers and namespaces are mutually dependent, but play very distinct roles in implementing provisioning functionality.
Providers perform low-level tasks within Microsoft Provisioning System. Providers are 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, Microsoft Exchange 2000 Enterprise Server, SQL, and 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.
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.
Most of the namespaces included with MPF implement the functionality of an underlying provider. Namespaces that perform this task are called provider namespaces. Each provider namespace consists of the procedures required to implement the functionality of its provider. Each procedure in a provider namespace calls a specific procedure in a corresponding provider.
Unlike provider namespaces, non-provider namespaces do not directly call a provider. Instead, they invoke functionality that simply calls one or more namespaces, including provider namespaces. Several of these are installed with Microsoft Provisioning System. These non-provider namespaces implement the business logic required to manage provisioning functionality. Each non-provider namespace contains procedures that combine low-level actions enabled by standard providers into higher-level, composite tasks. When you submit request to Microsoft Provisioning Framework (MPF), these namespaces can call lower-level procedures in other namespaces to execute the requested provisioning tasks. For example, a CreateUser procedure of the extended Active Directory namespace can call a CreateObject procedure of the Active Directory Provider namespace to complete a provisioning request.