In Microsoft® Provisioning Framework (MPF), every request has a corresponding transaction for managing transaction state and rollback. MPF supports three types of transactions for provisioning procedures, as described in the following table.
Transaction Type | Procedure Type | Description |
---|---|---|
Standard compensating | Read, write, or two-phase | Generated for procedures that perform updates subject to rollback. Standard compensating transactions are generated and managed by MPF, using methods in the IProvProvider interface. For write transactions, MPF calls ProcessRequest (for execution) and RollbackRequest (for rollback after a failure). For two-phase transactions, MPF calls ProcessRequest, PrepareRequest, and either CommitRequest or RollbackRequest, depending on the state of the transaction after the prepare. |
DTC | Read | Generated for DTC-compliant providers. Transactions that use
the Microsoft® Distributed Transaction Coordinator (DTC) are marked
as read and are not logged by a provisioning engine.
Currently, the only standard provider that is DTC-compliant is the
SQL
Provider.
DTC transactions are generated and owned by MPF, but execution and rollback are managed by DTC. MPF uses the property bag of IProvHelper to pass the ITransaction interface to the provider, which then uses this object to enlist in the DTC transaction. |
External | Read, write, or two-phase | Generated for requests received from servers that use
Transaction Internet Protocol (TIP). Whenever MPF receives an
external request, it automatically enlists the transaction in both
MPF and the local DTC (which handles all negotiations with the
remote TIP transaction manager). To link the transaction back to
the remote server, MPF generates a tipUrl attribute for the
request's transactionContext
node. A remote server can also enlist into an MPF transaction by
having a provider fetch the TIP URL (via the property bag of
IProvHelper).
External transactions are owned by the external service and managed by DTC; MPF is just a subscriber to the transaction. |
Transactions are generated by provisioning engines. As transactions are processed, a provisioning engine updates a transaction log with the current transaction state. An auditing and recovery manager moves completed transactions that are marked for audit to the audit log.