Documentation: Instrumentation

Topics: Building and extending application blocks, Enterprise Library Core
Apr 2, 2007 at 12:01 AM
The documentation section for "Instrumentation" notes: "An application can be made up of components, such as databases. If this is the case, the components instead of the application itself should be instrumented. To delegate the responsibility for instrumentation to a component, your application must implement the IInstrumentationEventProvider interface."

I'm new to the EntLib and so this may be a naive question, but: In this context, what does "Component" mean? I would assume that a component would be another provider class that the main application delegates control to, similar to how the DAAB delegates control to the SqlDatabase provider. If so, does the examples "MyApplication" class represent the component? Or does it represent the Application Block? Or both? I'm assuming both - such that each class would need to inherit from IInstrumentationEventProvider and thus the purpose of moving the provider to its own class is such that each component (class) associated with the Application Block could use one centralized provider - or such that the provider may even be used across multiple Application Blocks. However, this is ambiguous in the documentation.

I'm sure I could answer this after I finish digging through the documentation and code, but as I was reading the "Design of the Enterprise Library" section to give me a broad architectural overview, I found this piece confusing.