AppFabric Extensibility

While Windows Server AppFabric includes many features to enable you to manage applications, your business requirements may call for additional features such as a custom monitoring dashboard, consolidated reporting, or additional logging. The primary methods you can use to extend AppFabric functionality are the ApplicationServer module for Windows PowerShell, custom tracking profiles, and directly using data from the monitoring database. However, since AppFabric relies on tracking and persistence features of the .NET Framework 4, you can also use these underlying framework features to extend AppFabric.

AppFabric Hosting Module for Windows PowerShell

You can use the cmdlets provided with AppFabric to create custom scripted solutions. The cmdlets can also be called directly as common language runtime (CLR) objects from within a custom application to provide functionality similar to that exposed by the AppFabric IIS Manager extensions.

For more information about the cmdlets provided with AppFabric, see Windows PowerShell for Windows Server AppFabric Reference.

Monitoring Extensibility

Monitoring Database

All tracking information gathered by AppFabric is stored within the monitoring database. While you can use the AppFabric Dashboard to view tracked information for workflow instances, you can also access this data directly to create reports or custom tracking applications.

For more information about the monitoring database, see Monitoring Store.

Tracking Profile

Through the use of tracking profiles, you can capture additional information from running applications such as the contents of variables or custom tracking records emitted during workflow processing.

For more information about using tracking profiles with AppFabric, see Configure Tracking.

Custom Tracking Records

When creating a workflow application, it is possible to programmatically add custom tracking information that can be logged into the monitoring database. Since AppFabric captures Event Tracing for Windows (ETW) information from running workflow instances, you can add custom tracking record information to your service that will be emitted and logged at run time.

For more information about adding custom tracking information to your workflow service, see Custom Tracking (

Tracking Participants

At run time, workflow service instances emit tracking records that are processed by a tracking participant. AppFabric processes these tracking records by using the default ETW tracking participant provided by the .NET Framework 4 and stores them in the monitoring database. If you need direct access to the tracking records emitted by your workflow service instances you can use the ETW tracking participant, or create your own custom tracking participant to directly access workflow tracking records.

For more information, see Tracking Participants (

Event Tracing for Windows

Much of the monitoring information that AppFabric stores in the monitoring database is gathered from ETW information emitted by the WF Tracking Framework. While AppFabric allows you to query this stored information, you may need to directly capture the tracking data as it occurs. To do this, you can create an ETW listener that will listen to events that occur over an ETW session.

For more information about ETW, see Event Tracing (

Persistence Extensibility

The persistence of workflow instances can be extended by using the PersistenceParticipant and PersistenceIOParticipant abstract classes. By implementing these classes, you can serialize or deserialize an object with the workflow instance, as well as perform additional work under the context of the persistence transaction. For more information, see Persistence Participants (

See Also

Community Additions